ParMooN
 All Classes Functions Variables Friends Pages
DiscreteForm3D.h
1 // =======================================================================
2 // %W% %G%
3 //
4 // Class: TDiscreteForm3D
5 // Purpose: assemble on one cell a couple of bilinear and linear forms
6 //
7 // Author: Gunar Matthies (02.10.98)
8 //
9 // History: start of implementation 02.10.98 (Gunar Matthies)
10 // add new data 14.04.99 (Gunar Matthies)
11 //
12 // =======================================================================
13 
14 #ifndef __DISCRETEFORM3D__
15 #define __DISCRETEFORM3D__
16 
17 #include <Enumerations.h>
18 #include <Constants.h>
19 
22 {
23  protected:
25  char *Name;
26 
28  char *Description;
29 
31  int N_Terms;
32 
34  int N_Spaces;
35 
38 
40  MultiIndex3D *Derivatives;
41 
44 
47 
49  int N_Rhs;
50 
52  int *RowSpace;
53 
56 
58  int *RhsSpace;
59 
61  CoeffFct3D *Coeffs;
62 
64  AssembleFct3D *Assemble;
65 
68  AssembleFctParam3D *AssembleParam;
69 
71  ManipulateFct3D *Manipulate;
72 
74  double ***AllOrigValues;
75 
77  double **OrigValues;
78 
79  public:
81  TDiscreteForm3D(char *name, char *description, int n_terms,
82  MultiIndex3D *derivatives, int *fespacenumber,
83  int n_matrices, int n_rhs,
84  int *rowspace, int *columnspace, int *rhsspace,
85  AssembleFct3D *assemble, CoeffFct3D *coeffs,
86  ManipulateFct3D *manipulate);
87 
89  TDiscreteForm3D(char *name, char *description, int n_terms,
90  MultiIndex3D *derivatives, int *fespacenumber,
91  int n_matrices, int n_rhs,
92  int *rowspace, int *columnspace, int *rhsspace,
93  AssembleFctParam3D *assembleparam, CoeffFct3D *coeffs,
94  ManipulateFct3D *manipulate);
95 
98 
100  char *GetName()
101  { return Name; }
102 
105  { return Description; }
106 
108  void GetLocalForms(int N_Points, double *weights, double *AbsDetjk,
109  double hK, double *X, double *Y, double *Z,
110  int *N_BaseFuncts, BaseFunct3D *BaseFuncts,
111  double **Parameters, double **AuxArray,
112  TBaseCell *Cell,
113  int N_Matrices, int N_Rhs,
114  double ***LocMatrix, double **LocRhs);
115 
118  { return Needs2ndDerivatives; };
119 
121  CoeffFct3D *GetCoeffFct()
122  { return Coeffs; }
123 };
124 
125 /******************************************************************************/
126 //
127 // Routines for initializing discrete forms
128 //
129 /******************************************************************************/
130 
131 void InitializeDiscreteForms(
132  TDiscreteForm3D *&DiscreteFormGalerkin,
133  TDiscreteForm3D *&DiscreteFormSDFEM,
134  TDiscreteForm3D *&DiscreteFormUpwind,
135  TDiscreteForm3D *&DiscreteFormSGS,
136  TDiscreteForm3D *&DiscreteFormVMSProjection,
137  TDiscreteForm3D *&DiscreteFormNLGalerkin,
138  TDiscreteForm3D *&DiscreteFormNLSDFEM,
139  TDiscreteForm3D *&DiscreteFormNLUpwind,
140  TDiscreteForm3D *&DiscreteFormNLSGS,
141  TDiscreteForm3D *&DiscreteFormNLVMSProjection,
142  TDiscreteForm3D *&DiscreteFormNLSDFEM_DivDiv,
143  TDiscreteForm3D *&DiscreteFormPressSep,
144  TDiscreteForm3D *&DiscreteFormPressSepAuxProb,
145  TDiscreteForm3D *&DiscreteFormNSRFBRhs,
146  CoeffFct3D *LinCoeffs, int NSTYPE);
147 
148 void InitializeDiscreteFormsFriction(
149  TDiscreteForm3D *&DiscreteFormGalerkin,
150  TDiscreteForm3D *&DiscreteFormSDFEM,
151  TDiscreteForm3D *&DiscreteFormUpwind,
152  TDiscreteForm3D *&DiscreteFormSGS,
153  TDiscreteForm3D *&DiscreteFormNLGalerkin,
154  TDiscreteForm3D *&DiscreteFormNLSDFEM,
155  TDiscreteForm3D *&DiscreteFormNLUpwind,
156  TDiscreteForm3D *&DiscreteFormNLSGS,
157  TDiscreteForm3D *&DiscreteFormGalerkinFriction,
158  TDiscreteForm3D *&DiscreteFormNLGalerkinFriction,
159  CoeffFct3D *LinCoeffs, int NSTYPE);
160 
161 void InitializeDiscreteForms(
162  TDiscreteForm3D *&DiscreteFormGalerkin,
163  TDiscreteForm3D *&DiscreteFormUpwind,
164  TDiscreteForm3D *&DiscreteFormUpwindNC,
165  TDiscreteForm3D *&DiscreteFormSmagorinsky,
166  TDiscreteForm3D *&DiscreteFormClassicalLES,
167  TDiscreteForm3D *&DiscreteFormGL00Convolution,
168  TDiscreteForm3D *&DiscreteFormGL00AuxProblem,
169  TDiscreteForm3D *&DiscreteFormVMS_Projection,
170  TDiscreteForm3D *&DiscreteFormVMS_SUPG,
171  TDiscreteForm3D *&DiscreteFormLerayAlpha,
172  TDiscreteForm3D *&DiscreteFormNLGalerkin,
173  TDiscreteForm3D *&DiscreteFormNLUpwind,
174  TDiscreteForm3D *&DiscreteFormNLUpwindNC,
175  TDiscreteForm3D *&DiscreteFormNLSmagorinsky,
176  TDiscreteForm3D *&DiscreteFormNLClassicalLES,
177  TDiscreteForm3D *&DiscreteFormNLGL00Convolution,
178  TDiscreteForm3D *&DiscreteFormNLGL00AuxProblem,
179  TDiscreteForm3D *&DiscreteFormNLVMS_Projection,
180  TDiscreteForm3D *&DiscreteFormNLVMS_ProjectionExpl,
181  TDiscreteForm3D *&DiscreteFormNSRFBExplRhs,
182  TDiscreteForm3D *&DiscreteFormNLVMS_SUPG,
183  TDiscreteForm3D *&DiscreteFormNLLerayAlpha,
184  TDiscreteForm3D *&DiscreteFormRHS,
185  TDiscreteForm3D *&DiscreteFormRHSClassicalLES,
186  TDiscreteForm3D *&DiscreteFormRHSLES,
187  TDiscreteForm3D *&DiscreteFormRHSSUPG,
188  TDiscreteForm3D *&DiscreteFormMatrixGL00AuxProblem,
189  TDiscreteForm3D *&DiscreteFormGL00AuxProblemRHS,
190  TDiscreteForm3D *&DiscreteFormMatrixAuxProblemU,
191  TDiscreteForm3D *&DiscreteFormRHSAuxProblemU,
192  TDiscreteForm3D *&DiscreteFormRHSNewton,
193  TDiscreteForm3D *&DiscreteFormRHSNewtonNL,
194  TDiscreteForm3D *&DiscreteFormC,
195  TDiscreteForm3D *&DiscreteFormJ,
196  CoeffFct3D *LinCoeffs, int NSTYPE);
197 
198 void InitializeDiscreteFormsVMS(
199  TDiscreteForm3D *&DiscreteFormGalerkin,
200  TDiscreteForm3D *&DiscreteFormUpwind,
201  TDiscreteForm3D *&DiscreteFormSmagorinsky,
202  TDiscreteForm3D *&DiscreteFormNLGalerkin,
203  TDiscreteForm3D *&DiscreteFormNLUpwind,
204  TDiscreteForm3D *&DiscreteFormNLSmagorinsky,
205  TDiscreteForm3D *&DiscreteFormRHS,
206  TDiscreteForm3D *&DiscreteForm_ho_RHS,
207  CoeffFct3D *LinCoeffs, int NSTYPE);
208 
209 void InitializeDiscreteFormsOS_ST(
210  TDiscreteForm3D *&DiscreteFormGalerkin,
211  TDiscreteForm3D *&DiscreteFormStiffRhsOS_ST,
212  CoeffFct3D *LinCoeffs, int NSTYPE);
213 
214 void InitializeDiscreteForms
215  ( TDiscreteForm3D *&DiscreteFormGalerkin,
216  TDiscreteForm3D *&DiscreteFormNLGalerkin,
217  CoeffFct3D *LinCoeffs, int NSTYPE);
218 
219 void InitializeDiscreteForms
220  ( TDiscreteForm3D *&DiscreteFormGalerkin,
221  TDiscreteForm3D *&DiscreteFormNLGalerkin,
222  TDiscreteForm3D *&DiscreteFormRHS,
223  CoeffFct3D *LinCoeffs, int NSTYPE);
224 
225 void InitializeDiscreteForms (TDiscreteForm3D *&DiscreteForm, CoeffFct3D *LinCoeff);
226 
227 void InitializeDiscreteFormsScalar(TDiscreteForm3D *&DiscreteFormMRhs_Galerkin, TDiscreteForm3D *&DiscreteFormARhs_Galerkin,
228  TDiscreteForm3D *&DiscreteFormRhs, CoeffFct3D *LinCoeff);
229 
230 void InitializeDiscreteFormGrid(TDiscreteForm3D *&DiscreteFormGrid,
231  CoeffFct3D *GridCoeffs);
232 #endif
char * Name
Definition: DiscreteForm3D.h:25
CoeffFct3D * GetCoeffFct()
Definition: DiscreteForm3D.h:121
CoeffFct3D * Coeffs
Definition: DiscreteForm3D.h:61
AssembleFctParam3D * AssembleParam
Definition: DiscreteForm3D.h:68
int N_Terms
Definition: DiscreteForm3D.h:31
bool * Needs2ndDerivatives
Definition: DiscreteForm3D.h:37
int N_Spaces
Definition: DiscreteForm3D.h:34
char * Description
Definition: DiscreteForm3D.h:28
~TDiscreteForm3D()
Definition: DiscreteForm3D.C:177
double *** AllOrigValues
Definition: DiscreteForm3D.h:74
int * ColumnSpace
Definition: DiscreteForm3D.h:55
int N_Rhs
Definition: DiscreteForm3D.h:49
int * RhsSpace
Definition: DiscreteForm3D.h:58
int N_Matrices
Definition: DiscreteForm3D.h:46
char * GetName()
Definition: DiscreteForm3D.h:100
int * FESpaceNumber
Definition: DiscreteForm3D.h:43
TDiscreteForm3D(char *name, char *description, int n_terms, MultiIndex3D *derivatives, int *fespacenumber, int n_matrices, int n_rhs, int *rowspace, int *columnspace, int *rhsspace, AssembleFct3D *assemble, CoeffFct3D *coeffs, ManipulateFct3D *manipulate)
Definition: DiscreteForm3D.C:31
MultiIndex3D * Derivatives
Definition: DiscreteForm3D.h:40
AssembleFct3D * Assemble
Definition: DiscreteForm3D.h:64
double ** OrigValues
Definition: DiscreteForm3D.h:77
char * GetDescription()
Definition: DiscreteForm3D.h:104
int * RowSpace
Definition: DiscreteForm3D.h:52
Definition: DiscreteForm3D.h:21
bool * GetNeeds2ndDerivatives()
Definition: DiscreteForm3D.h:117
information for finite element data structure
Definition: BaseCell.h:25
void GetLocalForms(int N_Points, double *weights, double *AbsDetjk, double hK, double *X, double *Y, double *Z, int *N_BaseFuncts, BaseFunct3D *BaseFuncts, double **Parameters, double **AuxArray, TBaseCell *Cell, int N_Matrices, int N_Rhs, double ***LocMatrix, double **LocRhs)
Definition: DiscreteForm3D.C:186
ManipulateFct3D * Manipulate
Definition: DiscreteForm3D.h:71