ParMooN
 All Classes Functions Variables Friends Pages
NSE_MultiGrid.h
1 // =======================================================================
2 // @(#)NSE_MultiGrid.h 1.4 02/08/00
3 //
4 // Class: TNSE_MultiGrid
5 // Purpose: store all data for a multi grid method for
6 // Stokes or Navier-Stokes problems
7 //
8 // Author: Volker John 25.07.2000
9 //
10 // History: 25.07.2000 start of implementation
11 //
12 // =======================================================================
13 
14 #ifndef __NSE_MULTIGRID__
15 #define __NSE_MULTIGRID__
16 
17 #include <NSE_MGLevel.h>
18 
20 {
21  protected:
23  int N_Levels;
24 
27 
30 
32  double *Parameters;
33 
36 
37 #ifdef __2D__
38 
39  TFESpace2D *USpaces[MAXN_LEVELS];
40 
42  TFESpace2D *PSpaces[MAXN_LEVELS];
43 #endif
44 #ifdef __3D__
45 
46  TFESpace3D *USpaces[MAXN_LEVELS];
47 
49  TFESpace3D *PSpaces[MAXN_LEVELS];
50 #endif
51 
53  double **U1Vectors[MAXN_LEVELS];
54 
56  double **U2Vectors[MAXN_LEVELS];
57 
58 #ifdef __3D__
59 
60  double **U3Vectors[MAXN_LEVELS];
61 #endif
62 
64  double **PVectors[MAXN_LEVELS];
65 
67  double **Rhs1Vectors[MAXN_LEVELS];
68 
70  double **Rhs2Vectors[MAXN_LEVELS];
71 
72 #ifdef __3D__
73 
74  double **Rhs3Vectors[MAXN_LEVELS];
75 #endif
76 
78  double **RhsPVectors[MAXN_LEVELS];
79 
81  double **AuxVectors[MAXN_LEVELS];
82 
84  int mg_recursions[MAXN_LEVELS];
85 
86  public:
88  TNSE_MultiGrid(int n_problems, int n_parameters, double *parameters);
89 
92  { return N_Levels; }
93 
95  void AddLevel(TNSE_MGLevel *MGLevel);
96 
98  TNSE_MGLevel *ReplaceLevel(int i, TNSE_MGLevel *MGLevel);
99 
102  { return MultiGridLevels[i]; }
103 
105  void RestrictToAllGrids();
106 
108  void SetDirichletNodes(int i);
109 
111  double GetResidual(int i);
112 
114  void Cycle(int i, double &res);
115 
117  void SetRecursion(int levels);
118 
120  double GetParam(int i);
121 
123  void SetParam(int i, double a);
124 
125 };
126 
127 #endif
TFESpace2D * PSpaces[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:42
void SetDirichletNodes(int i)
Definition: NSE_MultiGrid.C:651
TNSE_MultiGrid(int n_problems, int n_parameters, double *parameters)
Definition: NSE_MultiGrid.C:33
double ** Rhs2Vectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:70
void AddLevel(TNSE_MGLevel *MGLevel)
Definition: NSE_MultiGrid.C:46
double GetResidual(int i)
Definition: NSE_MultiGrid.C:675
void RestrictToAllGrids()
Definition: NSE_MultiGrid.C:97
double ** AuxVectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:81
Definition: FESpace2D.h:28
Definition: FESpace3D.h:22
double ** RhsPVectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:78
double * Parameters
Definition: NSE_MultiGrid.h:32
int GetN_Levels()
Definition: NSE_MultiGrid.h:91
void SetRecursion(int levels)
Definition: NSE_MultiGrid.C:695
void Cycle(int i, double &res)
Definition: NSE_MultiGrid.C:118
double ** PVectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:64
int N_Problems
Definition: NSE_MultiGrid.h:26
TNSE_MGLevel * ReplaceLevel(int i, TNSE_MGLevel *MGLevel)
Definition: NSE_MultiGrid.C:57
Definition: NSE_MultiGrid.h:19
int N_Parameters
Definition: NSE_MultiGrid.h:29
double ** Rhs3Vectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:74
int mg_recursions[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:84
double ** Rhs1Vectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:67
int N_Levels
Definition: NSE_MultiGrid.h:23
TNSE_MGLevel * MultiGridLevels[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:35
double ** U1Vectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:53
double ** U3Vectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:60
Definition: NSE_MGLevel.h:24
double GetParam(int i)
Definition: NSE_MultiGrid.C:75
TFESpace2D * USpaces[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:39
TNSE_MGLevel * GetLevel(int i)
Definition: NSE_MultiGrid.h:101
double ** U2Vectors[MAXN_LEVELS]
Definition: NSE_MultiGrid.h:56
void SetParam(int i, double a)
Definition: NSE_MultiGrid.C:84