ParMooN
 All Classes Functions Variables Friends Pages
DiscreteForm2D.h
1 // =======================================================================
2 // @(#)DiscreteForm2D.h 1.6 10/18/99
3 //
4 // Class: TDiscreteForm2D
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 __DISCRETEFORM2D__
15 #define __DISCRETEFORM2D__
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  MultiIndex2D *Derivatives;
41 
44 
47 
49  int N_Rhs;
50 
52  int *RowSpace;
53 
56 
58  int *RhsSpace;
59 
61  CoeffFct2D *Coeffs;
62 
64  AssembleFct2D *Assemble;
65 
68  AssembleFctParam2D *AssembleParam;
69 
71  ManipulateFct2D *Manipulate;
72 
74  double ***AllOrigValues;
75 
77  double **OrigValues;
78 
79  public:
81  TDiscreteForm2D(char *name, char *description, int n_terms,
82  MultiIndex2D *derivatives, int *fespacenumber,
83  int n_matrices, int n_rhs,
84  int *rowspace, int *columnspace, int *rhsspace,
85  AssembleFct2D *assemble, CoeffFct2D *coeffs,
86  ManipulateFct2D *manipulate);
87 
89  TDiscreteForm2D(char *name, char *description, int n_terms,
90  MultiIndex2D *derivatives, int *fespacenumber,
91  int n_matrices, int n_rhs,
92  int *rowspace, int *columnspace, int *rhsspace,
93  AssembleFctParam2D *assembleparam, CoeffFct2D *coeffs,
94  ManipulateFct2D *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,
110  int *N_BaseFuncts, BaseFunct2D *BaseFuncts,
111  double **Parameters, double **AuxArray,
112  TBaseCell *Cell, int N_Matrices, int N_Rhs,
113  double ***LocMatrix, double **LocRhs,
114  double factor = 1.);
115 
120  void GetLocalForms(int N_Points, double *weights, double *AbsDetjk,
121  double hK, double *X, double *Y,
122  int *N_BaseFuncts, BaseFunct2D *BaseFuncts,
123  TBaseCell *Cell,double ***LocMatrix, double **LocRhs);
124 
127  { return Needs2ndDerivatives; };
128 
130  CoeffFct2D *GetCoeffFct() const
131  { return Coeffs; }
132 
134  int rowSpaceOfMat(int i) const
135  { return RowSpace[i]; }
136 
138  int colSpaceOfMat(int i) const
139  { return ColumnSpace[i]; }
140 };
141 
142 /******************************************************************************/
143 //
144 // Routines for initializing discrete forms
145 //
146 /******************************************************************************/
147 
148 #ifdef __2D__
149 void InitializeDiscreteFormsScalar(TDiscreteForm2D *&DiscreteFormMatrixMRhs, TDiscreteForm2D *&DiscreteFormMatrixARhs, TDiscreteForm2D *&DiscreteFormMatrixMRhs_SUPG, TDiscreteForm2D *&DiscreteFormMatrixARhs_SUPG, CoeffFct2D *LinCoeffs);
150 
151 void InitializeDiscreteForms(
152  TDiscreteForm2D *&DiscreteFormGalerkin,
153  TDiscreteForm2D *&DiscreteFormSDFEM,
154  TDiscreteForm2D *&DiscreteFormUpwind,
155  TDiscreteForm2D *&DiscreteFormSmagorinsky,
156  TDiscreteForm2D *&DiscreteFormVMSProjection,
157  TDiscreteForm2D *&DiscreteFormNLGalerkin,
158  TDiscreteForm2D *&DiscreteFormNLSDFEM,
159  TDiscreteForm2D *&DiscreteFormNLUpwind,
160  TDiscreteForm2D *&DiscreteFormNLSmagorinsky,
161  TDiscreteForm2D *&DiscreteFormNLVMSProjection,
162  TDiscreteForm2D *&DiscreteFormPressSep,
163  TDiscreteForm2D *&DiscreteFormPressSepAuxProb,
164  TDiscreteForm2D *&DiscreteFormNSRFBRhs,
165  TDiscreteForm2D *&DiscreteFormNSCSTRhs,
166  CoeffFct2D *LinCoeffs, int NSTYPE);
167 
168 void InitializeDiscreteForms(
169  TDiscreteForm2D *&DiscreteFormGalerkin,
170  TDiscreteForm2D *&DiscreteFormUpwind,
171  TDiscreteForm2D *&DiscreteFormNLGalerkin,
172  TDiscreteForm2D *&DiscreteFormNLUpwind,
173  TDiscreteForm2D *&DiscreteFormNLGalerkinDuese,
174  CoeffFct2D *LinCoeffs);
175 
176 void InitializeDiscreteFormsFriction(
177  TDiscreteForm2D *&DiscreteFormGalerkin,
178  TDiscreteForm2D *&DiscreteFormSDFEM,
179  TDiscreteForm2D *&DiscreteFormUpwind,
180  TDiscreteForm2D *&DiscreteFormSmagorinsky,
181  TDiscreteForm2D *&DiscreteFormNLGalerkin,
182  TDiscreteForm2D *&DiscreteFormNLSDFEM,
183  TDiscreteForm2D *&DiscreteFormNLUpwind,
184  TDiscreteForm2D *&DiscreteFormNLSmagorinsky,
185  TDiscreteForm2D *&DiscreteFormGalerkinFriction,
186  TDiscreteForm2D *&DiscreteFormNLGalerkinFriction,
187  TDiscreteForm2D *&DiscreteFormGalerkinFrictionLocal,
188  TDiscreteForm2D *&DiscreteFormNLGalerkinFrictionLocal,
189  TDiscreteForm2D *&DiscreteFormSDFEMFriction,
190  TDiscreteForm2D *&DiscreteFormNLSDFEMFriction,
191  TDiscreteForm2D *&DiscreteFormSDFEMDDFriction,
192  TDiscreteForm2D *&DiscreteFormNLSDFEMDDFriction,
193  TDiscreteForm2D *&DiscreteFormSDFEMDDFrictionRhs,
194  TDiscreteForm2D *&DiscreteFormNLSDFEMDDFrictionRhs,
195  TDiscreteForm2D *&DiscreteFormSDFEMDDFrictionRST,
196  TDiscreteForm2D *&DiscreteFormNLSDFEMDDFrictionRST,
197  TDiscreteForm2D *&DiscreteFormUpwindFriction,
198  TDiscreteForm2D *&DiscreteFormNLUpwindFriction,
199  CoeffFct2D *LinCoeffs, int NSTYPE);
200 
201 void InitializeDiscreteForms(
202  TDiscreteForm2D *&DiscreteFormGalerkin,
203  TDiscreteForm2D *&DiscreteFormUpwind,
204  TDiscreteForm2D *&DiscreteFormSmagorinsky,
205  TDiscreteForm2D *&DiscreteFormColetti,
206  TDiscreteForm2D *&DiscreteFormGL00Convolution,
207  TDiscreteForm2D *&DiscreteFormGL00AuxProblem,
208  TDiscreteForm2D *&DiscreteFormVMSProjection,
209  TDiscreteForm2D *&DiscreteFormNLGalerkin,
210  TDiscreteForm2D *&DiscreteFormNLUpwind,
211  TDiscreteForm2D *&DiscreteFormNLSmagorinsky,
212  TDiscreteForm2D *&DiscreteFormNLColetti,
213  TDiscreteForm2D *&DiscreteFormNLGL00Convolution,
214  TDiscreteForm2D *&DiscreteFormNLGL00AuxProblem,
215  TDiscreteForm2D *&DiscreteFormNLVMSProjection,
216  TDiscreteForm2D *&DiscreteFormRHS,
217  TDiscreteForm2D *&DiscreteFormRHSColetti,
218  TDiscreteForm2D *&DiscreteFormRHSLESModel,
219  TDiscreteForm2D *&DiscreteFormMatrixGL00AuxProblem,
220  TDiscreteForm2D *&DiscreteFormGL00AuxProblemRHS,
221  TDiscreteForm2D *&DiscreteFormRHSSmagorinskyExpl,
222  TDiscreteForm2D *&DiscreteFormMatrixAuxProblemU,
223  TDiscreteForm2D *&DiscreteFormRHSAuxProblemU,
224  CoeffFct2D *LinCoeffs, int NSTYPE);
225 
226 void InitializeDiscreteForms(
227  TDiscreteForm2D *&DiscreteFormGalerkin,
228  TDiscreteForm2D *&DiscreteFormUpwind,
229  TDiscreteForm2D *&DiscreteFormSmagorinsky,
230  TDiscreteForm2D *&DiscreteFormColetti,
231  TDiscreteForm2D *&DiscreteFormGL00Convolution,
232  TDiscreteForm2D *&DiscreteFormGL00AuxProblem,
233  TDiscreteForm2D *&DiscreteFormVMSProjection,
234  TDiscreteForm2D *&DiscreteFormNLGalerkin,
235  TDiscreteForm2D *&DiscreteFormNLUpwind,
236  TDiscreteForm2D *&DiscreteFormNLSmagorinsky,
237  TDiscreteForm2D *&DiscreteFormNLColetti,
238  TDiscreteForm2D *&DiscreteFormNLGL00Convolution,
239  TDiscreteForm2D *&DiscreteFormNLGL00AuxProblem,
240  TDiscreteForm2D *&DiscreteFormNLVMSProjection,
241  TDiscreteForm2D *&DiscreteFormRHS,
242  TDiscreteForm2D *&DiscreteFormRHSColetti,
243  TDiscreteForm2D *&DiscreteFormRHSLESModel,
244  TDiscreteForm2D *&DiscreteFormMatrixGL00AuxProblem,
245  TDiscreteForm2D *&DiscreteFormGL00AuxProblemRHS,
246  TDiscreteForm2D *&DiscreteFormRHSSmagorinskyExpl,
247  TDiscreteForm2D *&DiscreteFormMatrixAuxProblemU,
248  TDiscreteForm2D *&DiscreteFormRHSAuxProblemU,
249  TDiscreteForm2D *&DiscreteFormC,
250  TDiscreteForm2D *&DiscreteFormJ,
251  CoeffFct2D *LinCoeffs, int NSTYPE);
252 
253 void InitializeDiscreteFormsPaper2(
254  TDiscreteForm2D *&DiscreteFormRHSGL00AuxProblem,
255  TDiscreteForm2D *&DiscreteFormGL00AuxProblemRHSPaper2,
256  CoeffFct2D *LinCoeffs, CoeffFct2D *Coeffs);
257 
258 void InitializeDiscreteFormsVMS(
259  TDiscreteForm2D *&DiscreteFormGalerkin,
260  TDiscreteForm2D *&DiscreteFormUpwind,
261  TDiscreteForm2D *&DiscreteFormSmagorinsky,
262  TDiscreteForm2D *&DiscreteFormNLGalerkin,
263  TDiscreteForm2D *&DiscreteFormNLUpwind,
264  TDiscreteForm2D *&DiscreteFormNLSmagorinsky,
265  TDiscreteForm2D *&DiscreteFormRHS,
266  TDiscreteForm2D *&DiscreteForm_ho_RHS,
267  TDiscreteForm2D *&DiscreteForm_ls_RHS,
268  CoeffFct2D *LinCoeffs, int NSTYPE);
269 
270 void InitializeDiscreteForms_SSMUM(
271  TDiscreteForm2D *&DiscreteFormGalerkin,
272  TDiscreteForm2D *&DiscreteFormNLGalerkin,
273  TDiscreteForm2D *&DiscreteFormRHS,
274  TDiscreteForm2D *&DiscreteFormRHS1,
275  CoeffFct2D *LinCoeffs);
276 
277 void InitializeDiscreteForms_CST(TDiscreteForm2D *&DiscreteFormGalerkin, TDiscreteForm2D *&DiscreteFormSDFEM, CoeffFct2D *LinCoeffs);
278 
279 void InitializeDiscreteForms_CST_Giesekus(TDiscreteForm2D *&DiscreteFormGalerkin, CoeffFct2D *LinCoeffs);
280 
281 void InitializeDiscreteForms_DFT(TDiscreteForm2D *&DiscreteFormGalerkin, CoeffFct2D *LinCoeffs);
282 
283 void InitializeDiscreteFormsCDAdapt2D(TDiscreteForm2D **DiscreteForms,
284  CoeffFct2D *BilinearCoeffs);
285 
286 void InitializeDiscreteForms_Moving(TDiscreteForm2D *&DiscreteFormGalerkin, TDiscreteForm2D *&DiscreteFormNLGalerkin,
287  TDiscreteForm2D *&DiscreteFormGrid, CoeffFct2D *LinCoeffs, CoeffFct2D *GridCoeffs);
288 
289 void InitializeDiscreteForms_ScalarMoving(TDiscreteForm2D *&DiscreteFormGalerkin, TDiscreteForm2D *&DiscreteFormGrid,
290  TDiscreteForm2D *&DiscreteFormMatrixMRhs_SUPG, TDiscreteForm2D *&DiscreteFormSUPG, CoeffFct2D *LinCoeffs, CoeffFct2D *GridCoeffs);
291 
292 void InitializeDiscreteForms_Moving(TDiscreteForm2D *&DiscreteFormGalerkin, TDiscreteForm2D *&DiscreteFormSUPG, CoeffFct2D *LinCoeffs);
293 
294 void InitializeDiscreteForms_HeatLine(TDiscreteForm2D *&DiscreteFormHeatLine, CoeffFct2D *LinCoeffs);
295 
296 void InitializeDiscreteForms_Stationary(TDiscreteForm2D *&DiscreteFormUpwind, TDiscreteForm2D *&DiscreteFormGalerkin, TDiscreteForm2D *&DiscreteFormSDFEM,
297  TDiscreteForm2D *&DiscreteFormGLS, CoeffFct2D *LinCoeffs);
298 
299 void InitializeDiscreteFormGrid(TDiscreteForm2D *&DiscreteFormGrid, CoeffFct2D *GridCoeffs);
300 
301 void InitializeDiscreteForms_2PhaseAxial3D(
302  TDiscreteForm2D *&DiscreteFormGalerkin,
303  TDiscreteForm2D *&DiscreteFormNLGalerkin,
304  TDiscreteForm2D *&DiscreteFormRHS,
305  TDiscreteForm2D *&DiscreteFormGrid,
306  CoeffFct2D *LinCoeffs, CoeffFct2D *GridCoeffs, int NSTYPE);
307 
308 
309 
310 #endif
311 
312 #endif
AssembleFctParam2D * AssembleParam
Definition: DiscreteForm2D.h:68
double *** AllOrigValues
Definition: DiscreteForm2D.h:74
int N_Terms
Definition: DiscreteForm2D.h:31
void GetLocalForms(int N_Points, double *weights, double *AbsDetjk, double hK, double *X, double *Y, int *N_BaseFuncts, BaseFunct2D *BaseFuncts, double **Parameters, double **AuxArray, TBaseCell *Cell, int N_Matrices, int N_Rhs, double ***LocMatrix, double **LocRhs, double factor=1.)
Definition: DiscreteForm2D.C:200
int N_Spaces
Definition: DiscreteForm2D.h:34
int N_Rhs
Definition: DiscreteForm2D.h:49
~TDiscreteForm2D()
Definition: DiscreteForm2D.C:191
AssembleFct2D * Assemble
Definition: DiscreteForm2D.h:64
char * Description
Definition: DiscreteForm2D.h:28
int colSpaceOfMat(int i) const
Definition: DiscreteForm2D.h:138
char * Name
Definition: DiscreteForm2D.h:25
TDiscreteForm2D(char *name, char *description, int n_terms, MultiIndex2D *derivatives, int *fespacenumber, int n_matrices, int n_rhs, int *rowspace, int *columnspace, int *rhsspace, AssembleFct2D *assemble, CoeffFct2D *coeffs, ManipulateFct2D *manipulate)
Definition: DiscreteForm2D.C:47
CoeffFct2D * Coeffs
Definition: DiscreteForm2D.h:61
int * RhsSpace
Definition: DiscreteForm2D.h:58
CoeffFct2D * GetCoeffFct() const
Definition: DiscreteForm2D.h:130
int * RowSpace
Definition: DiscreteForm2D.h:52
ManipulateFct2D * Manipulate
Definition: DiscreteForm2D.h:71
int * FESpaceNumber
Definition: DiscreteForm2D.h:43
MultiIndex2D * Derivatives
Definition: DiscreteForm2D.h:40
int * ColumnSpace
Definition: DiscreteForm2D.h:55
Definition: DiscreteForm2D.h:21
information for finite element data structure
Definition: BaseCell.h:25
bool * GetNeeds2ndDerivatives() const
Definition: DiscreteForm2D.h:126
char * GetName()
Definition: DiscreteForm2D.h:100
int N_Matrices
Definition: DiscreteForm2D.h:46
bool * Needs2ndDerivatives
Definition: DiscreteForm2D.h:37
int rowSpaceOfMat(int i) const
Definition: DiscreteForm2D.h:134
double ** OrigValues
Definition: DiscreteForm2D.h:77
char * GetDescription()
Definition: DiscreteForm2D.h:104