ParMooN
 All Classes Functions Variables Friends Pages
SystemNSE3D.h
1 
11 #ifndef __SYSTEMNSE3D__
12 #define __SYSTEMNSE3D__
13 
14 #include <SquareMatrix3D.h>
15 #include <FEVectFunct3D.h>
16 #include <NSE_MultiGrid.h>
17 #include <ItMethod.h>
18 #include <AssembleMat3D.h>
19 
20 #ifdef _MPI
21 //#include "mpi.h"
22 #include <ParFEMapper3D.h>
23 #include <ParFECommunicator3D.h>
24 #include <ParDirectSolver.h>
25 #endif
26 
27 #ifdef _OMPONLY
28 #include <ParDirectSolver.h>
29 #endif
30 
33 {
34  protected:
35 
36 #ifdef _MPI
37  TParFEMapper3D **ParMapper_U, **ParMapper_P;
38  TParFECommunicator3D **ParComm_U, **ParComm_P;
39  MPI_Comm Comm;
40  TParDirectSolver *DS;
41 #endif
42 
43 #ifdef _OMPONLY
44  TParDirectSolver *DS;
45 #endif
46 
48  int N_Levels;
49 
52 
54  int N_TotalDOF, N_U, N_P, N_Active, N_DirichletDof;
55 
58 
60  int **FreeSurfCellNumbers, **FreeSurfJointNumbers;
61 
63  TFESpace3D **U_Space, **P_Space, *FeSpaces[5];
64 
67 
70 
71  double **SolArray, **RhsArray, *RHSs[4];
72 
73  TFESpace3D *fesp[3], *fesprhs[3], *fesp_aux[3];
74  TFEFunction3D *fefct[7], **fefct_aux;
75 
76  // Assembling */
77  TAssembleMat3D **AMatRhsAssemble, **AMatAssembleNonLinear;
78 
80  int Disctype;
81 
83  int NSEType;
84 
86  CoeffFct3D *LinCoeffs[1];
87 
89  TAuxParam3D **NSEaux, **NSEaux_error;
90 
92  MatVecProc *MatVect;
93 
95  DefectProc *Defect;
96 
98  int SOLVER;
99 
102 
105 
107  TStructure3D **structureB, **structureBT;
108 
110  TSquareMatrix3D **SqmatrixA11, **SqmatrixA12, **SqmatrixA13;
111  TSquareMatrix3D **SqmatrixA21, **SqmatrixA22, **SqmatrixA23;
112  TSquareMatrix3D **SqmatrixA31, **SqmatrixA32, **SqmatrixA33, *SQMATRICES[15];
113  TSquareMatrix **sqmatrices;
114  TSquareMatrix3D **SqmatrixF11, **SqmatrixF22, **SqmatrixF33;
115 
117  TMatrix3D **MatrixB1, **MatrixB2, **MatrixB3, **MatrixB1T, **MatrixB2T, **MatrixB3T, *MATRICES[12];
118  TMatrix **matrices;
119 
121  BoundCondFunct3D *BoundaryConditions[3];
122 
124  BoundValueFunct3D *BoundaryValues[3];
125 
128 
130  int N_aux;
131  double Parameters[2], *Itmethod_sol, *Itmethod_rhs;
132  TNSE_MultiGrid *MG;
133  TNSE_MGLevel *MGLevel;
134  TItMethod *Itmethod, *prec;
135 
136 
137  private:
138  void UpdateUpwind(int i);
139 
140 // void UpdateLPS();
141 
142  public:
144  TSystemNSE3D(int N_levels, TFESpace3D **velocity_fespace, TFESpace3D **presssure_fespace, TFEVectFunct3D **velocity,
145  TFEFunction3D **pressure, double **sol, double **rhs, int disctype, int nsetype, int solver);
146 
148 // ~TSystemMatNSE3D();
149 
152  void Init(CoeffFct3D *lincoeffs, BoundCondFunct3D *BoundCond, BoundValueFunct3D *U1BoundValue,
153  BoundValueFunct3D *U2BoundValue, BoundValueFunct3D *U3BoundValue);
154 
156  void Assemble();
157 
159  void AssembleNonLinear(double **sol, double **rhs);
160 
162  void GetResidual(double *sol, double *rhs, double *res, double &impuls_residual, double &residual);
163 
165  void Solve(double *sol, double *rhs);
166 
168  void MeasureErrors(DoubleFunct3D *ExactU1, DoubleFunct3D *ExactU2, DoubleFunct3D *ExactU3, DoubleFunct3D *ExactP,
169  double *u_error, double *p_error);
170 
172  void FindFreeSurfJoints(int level, int Region_ID);
173 };
174 
175 #endif
int * N_FreeSurfFaces
Definition: SystemNSE3D.h:57
void AssembleNonLinear(double **sol, double **rhs)
Definition: SystemNSE3D.C:939
int N_Levels
Definition: SystemNSE3D.h:48
void GetResidual(double *sol, double *rhs, double *res, double &impuls_residual, double &residual)
Definition: SystemNSE3D.C:1007
Definition: Structure3D.h:23
Definition: SquareMatrix3D.h:20
DefectProc * Defect
Definition: SystemNSE3D.h:95
Definition: Matrix.h:21
void Init(CoeffFct3D *lincoeffs, BoundCondFunct3D *BoundCond, BoundValueFunct3D *U1BoundValue, BoundValueFunct3D *U2BoundValue, BoundValueFunct3D *U3BoundValue)
Definition: SystemNSE3D.C:433
int N_Matrices
Definition: SystemNSE3D.h:101
Definition: AuxParam3D.h:21
base class for assembling matrices
Definition: AssembleMat3D.h:27
TFEFunction3D ** Pressure
Definition: SystemNSE3D.h:69
CoeffFct3D * LinCoeffs[1]
Definition: SystemNSE3D.h:86
Definition: FESpace3D.h:22
int N_TotalDOF
Definition: SystemNSE3D.h:54
void FindFreeSurfJoints(int level, int Region_ID)
Definition: SystemNSE3D.C:1262
int SOLVER
Definition: SystemNSE3D.h:98
TMatrix3D ** MatrixB1
Definition: SystemNSE3D.h:117
int Start_Level
Definition: SystemNSE3D.h:51
int ** FreeSurfCellNumbers
Definition: SystemNSE3D.h:60
BoundCondFunct3D * BoundaryConditions[3]
Definition: SystemNSE3D.h:121
TDiscreteForm3D * DiscreteFormARhs
Definition: SystemNSE3D.h:127
void MeasureErrors(DoubleFunct3D *ExactU1, DoubleFunct3D *ExactU2, DoubleFunct3D *ExactU3, DoubleFunct3D *ExactP, double *u_error, double *p_error)
Definition: SystemNSE3D.C:1222
BoundValueFunct3D * BoundaryValues[3]
Definition: SystemNSE3D.h:124
Definition: SquareMatrix.h:20
void Assemble()
Definition: SystemNSE3D.C:833
TAuxParam3D ** NSEaux
Definition: SystemNSE3D.h:89
TSquareStructure3D ** sqstructureA
Definition: SystemNSE3D.h:104
int N_aux
Definition: SystemNSE3D.h:130
Definition: ParFEMapper3D.h:24
Definition: FEVectFunct3D.h:20
Definition: Matrix3D.h:20
Definition: DiscreteForm3D.h:21
Definition: NSE_MultiGrid.h:19
TSystemNSE3D(int N_levels, TFESpace3D **velocity_fespace, TFESpace3D **presssure_fespace, TFEVectFunct3D **velocity, TFEFunction3D **pressure, double **sol, double **rhs, int disctype, int nsetype, int solver)
Definition: SystemNSE3D.C:45
MatVecProc * MatVect
Definition: SystemNSE3D.h:92
TFESpace3D ** U_Space
Definition: SystemNSE3D.h:63
TStructure3D ** structureB
Definition: SystemNSE3D.h:107
TSquareMatrix3D ** SqmatrixA11
Definition: SystemNSE3D.h:110
int Disctype
Definition: SystemNSE3D.h:80
Definition: SquareStructure3D.h:20
void Solve(double *sol, double *rhs)
Definition: SystemNSE3D.C:1117
Definition: ParFECommunicator3D.h:25
int NSEType
Definition: SystemNSE3D.h:83
Definition: NSE_MGLevel.h:24
TFEVectFunct3D ** Velocity
Definition: SystemNSE3D.h:66
Definition: ItMethod.h:19
Definition: ParDirectSolver.h:23
stores the information of a 3D NSE system matrix
Definition: SystemNSE3D.h:32
Definition: FEFunction3D.h:25