ParMooN
 All Classes Functions Variables Friends Pages
MultiGrid3D.h
1 // =======================================================================
2 // %W% %G%
3 //
4 // Class: TMultiGrid3D
5 // Purpose: store all data for a multi grid method
6 //
7 // Author: Gunar Matthies 26.06.2000
8 //
9 // History: 26.06.2000 start of implementation
10 //
11 // =======================================================================
12 
13 #ifndef __MULTIGRID3D__
14 #define __MULTIGRID3D__
15 
16 #include <MGLevel3D.h>
17 #ifdef _MPI
18  #ifdef __3D__
19  #include <ParFECommunicator3D.h>
20  #else
21  #include <ParFECommunicator2D.h>
22  #endif
23 #endif
24 // #define MAXN_LEVELS 25
25 
27 {
28  protected:
30  int N_Levels;
31 
34 
37 
39  double *Parameters;
40 
42  TMGLevel3D *MultiGridLevels[MAXN_LEVELS];
43 
45  TFESpace3D *FESpaces[MAXN_LEVELS];
46 
48  double **FunctionVectors[MAXN_LEVELS];
49 
51  double **RhsVectors[MAXN_LEVELS];
52 
54  double **AuxVectors[MAXN_LEVELS];
55 
57  int mg_recursions[MAXN_LEVELS];
58 
59  public:
61  TMultiGrid3D(int n_problems, int n_parameters, double *parameters);
62 
65  { return N_Levels; }
66 
68  void AddLevel(TMGLevel3D *MGLevel);
69 
71  void ReplaceLevel(int i,TMGLevel3D *MGLevel);
72 
75  { return MultiGridLevels[i]; }
76 
78  void RestrictToAllGrids();
79 
81  void SetDirichletNodes(int i);
82 
84  void Cycle(int i, double &res);
85 
87  void SetRecursion(int levels);
88 
90  void Smooth(int smoother_type, TMGLevel3D *Level,
91 #ifdef _MPI
92  TParFECommunicator3D *ParComm,
93 #endif
94  double &oldres);
95 };
96 
97 #endif
void RestrictToAllGrids()
Definition: MultiGrid3D.C:70
void AddLevel(TMGLevel3D *MGLevel)
Definition: MultiGrid3D.C:45
int mg_recursions[MAXN_LEVELS]
Definition: MultiGrid3D.h:57
void SetRecursion(int levels)
Definition: MultiGrid3D.C:691
Definition: FESpace3D.h:22
TMGLevel3D * GetLevel(int i)
Definition: MultiGrid3D.h:74
int N_Levels
Definition: MultiGrid3D.h:30
Definition: MultiGrid3D.h:26
Definition: MGLevel3D.h:26
double ** AuxVectors[MAXN_LEVELS]
Definition: MultiGrid3D.h:54
double * Parameters
Definition: MultiGrid3D.h:39
int N_Problems
Definition: MultiGrid3D.h:33
TFESpace3D * FESpaces[MAXN_LEVELS]
Definition: MultiGrid3D.h:45
double ** FunctionVectors[MAXN_LEVELS]
Definition: MultiGrid3D.h:48
TMGLevel3D * MultiGridLevels[MAXN_LEVELS]
Definition: MultiGrid3D.h:42
TMultiGrid3D(int n_problems, int n_parameters, double *parameters)
Definition: MultiGrid3D.C:32
int N_Parameters
Definition: MultiGrid3D.h:36
void Cycle(int i, double &res)
Definition: MultiGrid3D.C:423
double ** RhsVectors[MAXN_LEVELS]
Definition: MultiGrid3D.h:51
int GetN_Levels()
Definition: MultiGrid3D.h:64
void SetDirichletNodes(int i)
Definition: MultiGrid3D.C:671
Definition: ParFECommunicator3D.h:25
void Smooth(int smoother_type, TMGLevel3D *Level,#ifdef _MPI TParFECommunicator3D *ParComm,#endif double &oldres)
Definition: MultiGrid3D.C:91
void ReplaceLevel(int i, TMGLevel3D *MGLevel)
Definition: MultiGrid3D.C:54