ParMooN
 All Classes Functions Variables Friends Pages
FEDatabase2D.h
1 // =======================================================================
2 // @(#)FEDatabase2D.h 1.5 02/08/00
3 //
4 // Class: TFEDatabase
5 // Purpose: store all used information for a FEM
6 //
7 // Author: Gunar Matthies 09.07.98
8 //
9 // =======================================================================
10 
11 #ifndef __FEDATABASE2D__
12 #define __FEDATABASE2D__
13 
14 #include <Constants.h>
15 #include <Enumerations.h>
16 
17 #include <BaseFunct1D.h>
18 #include <FEDesc1D.h>
19 #include <FE1D.h>
20 
21 #include <BaseFunct2D.h>
22 #include <FEDesc2D.h>
23 #include <FE2D.h>
24 #include <FE2DMapper.h>
25 #include <FE2DMapper1Reg.h>
26 #include <HNDesc.h>
27 #include <RefTrans2D.h>
28 
29 #include <QuadFormula1D.h>
30 #include <QuadFormulaQuad.h>
31 #include <QuadFormulaTria.h>
32 
33 
36 {
37  protected:
38 //======================================================================
39 // 1D data
40 //======================================================================
42  static TQuadFormula1D *QuadFormulas1D[N_QuadFormulas_1D];
43 
45  static TBaseFunct1D *BaseFuncts1D[N_BaseFuncts1D];
46 
48  static TNodalFunctional1D *NodalFunctionals1D[N_NodalFunctionals1D];
49 
51  static TFEDesc1D *FEDescs1D[N_FEDescs1D];
52 
54  static TFE1D *FEs1D[N_FEs1D];
55 
58  static double **RefElementValues1D[N_BaseFuncts1D][N_QuadFormulas_1D]
59  [N_MultiIndices1D];
60 
63  static double **OrigElementValues1D[N_BaseFuncts1D][N_MultiIndices1D];
64 
66  static QuadFormula1D QFLineFromDegree[MAXDEGREE];
67 
69  static int HighestAccuracyLine;
70 
73 
74 //======================================================================
75 // 2D data
76 //======================================================================
78  static TFE2D *FEs2D[N_FEs2D];
79 
81  static TFEDesc2D *FEDescs2D[N_FEDescs2D];
82 
84  static TBaseFunct2D *BaseFuncts2D[N_BaseFuncts2D];
85 
87  static TNodalFunctional2D *NodalFunctionals2D[N_NodalFunctionals2D];
88 
90  static TQuadFormula2D *QuadFormulas2D[N_QuadFormulas_2D];
91 
93  static TFE2DMapper *FE2DMapper[N_FEDescs2D][N_FEDescs2D];
94 
96  static TFE2DMapper1Reg *FE2DMapper1Reg[N_FEDescs2D][N_FEDescs2D];
97 
99  static THNDesc *HNDescs2D[N_HNDescs];
100 
103  static double **RefElementValues2D[N_BaseFuncts2D][N_QuadFormulas_2D]
104  [N_MultiIndices2D];
105 
108  static double **JointValues2D[N_BaseFuncts2D][N_QuadFormulas_1D]
109  [MAXN_JOINTS];
110 
113  static double **JointDerivatives2D[N_BaseFuncts2D][N_QuadFormulas_1D]
114  [MAXN_JOINTS][N_MultiIndices2D];
115 
118  static double **OrigElementValues2D[N_BaseFuncts2D][N_MultiIndices2D];
119 
121  static TRefTrans2D *ReferenceTrans2D[N_RefTrans2D];
122 
124  static double *ProlongationMatrix2D[MaxN_BaseFunctions2D]
125  [N_REFDESC][MaxN_BaseFunctions2D][MAXN_CHILDREN];
126 
128  static double *RestrictionMatrix2D[MaxN_BaseFunctions2D]
129  [N_REFDESC][MaxN_BaseFunctions2D][MAXN_CHILDREN];
130 
132  static QuadFormula2D QFTriaFromDegree[MAXDEGREE];
133 
136 
138  static QuadFormula2D QFQuadFromDegree[MAXDEGREE];
139 
142 
143 //======================================================================
144 // 2D arrays for easier access of information
145 //======================================================================
147  static FEDesc2D FEDesc2D_IDFromFE2D[N_FEs2D];
148 
150  static TFEDesc2D *FEDesc2DFromFE2D[N_FEs2D];
151 
153  static BaseFunct2D BaseFunct2D_IDFromFE2D[N_FEs2D];
154 
156  static int N_BaseFunctFromFE2D[N_FEs2D];
157 
159  static int PolynomialDegreeFromFE2D[N_FEs2D];
160 
162  static int AccuracyFromFE2D[N_FEs2D];
163 
166 
168  static NodalFunctional2D NodalFunctional2D_IDFromFE2D[N_FEs2D];
169 
172 
174  static RefTrans2D RefTrans2D_IDFromFE2D[N_FEs2D];
175 
177  static BF2DRefElements RefElementFromFE2D[N_FEs2D];
178 
179 //======================================================================
180 // 3D data
181 //======================================================================
183  static TQuadFormula3D *QuadFormulas3D[N_QuadFormulas_3D];
184 
185 //======================================================================
186 // method only used by constructor
187 //======================================================================
188  protected:
190  static void RegisterAllQuadFormulas();
191 
193  static void RegisterAllFEDescs();
194 
196  static void RegisterAllBaseFunctions();
197 
199  static void RegisterAllNodalFunctionals();
200 
202  static void RegisterAllFEs();
203 
205  static void RegisterAllFEMappers();
206 
208  static void RegisterAllHangingNodes();
209 
211  static void RegisterAllRefTrans();
212 
214  static void GenerateArrays();
215 
216 //======================================================================
217 // constructor
218 //======================================================================
219  public:
221  TFEDatabase2D();
222 
223 //======================================================================
224 // FE1D
225 //======================================================================
227  static TFE1D *GetFE1D (FE1D FE)
228  { return FEs1D[FE]; };
229 
231  static void RegisterFE1D(FE1D FE, TFE1D *element)
232  { FEs1D[FE] = element; };
233 
234 //======================================================================
235 // FEDesc1D
236 //======================================================================
238  static TFEDesc1D *GetFEDesc1D(FEDesc1D FEDesc)
239  { return FEDescs1D[FEDesc]; };
240 
242  static void RegisterFEDesc1D(FEDesc1D FEDesc, TFEDesc1D *FEDesc1D)
243  { FEDescs1D[FEDesc] = FEDesc1D; };
244 
245 //======================================================================
246 // BaseFunct1D
247 //======================================================================
249  static TBaseFunct1D *GetBaseFunct1D(BaseFunct1D BaseFunct)
250  { return BaseFuncts1D[BaseFunct]; };
251 
253  static void RegisterBaseFunct1D(BaseFunct1D BaseFunct,
254  TBaseFunct1D *BaseFunct1D)
255  { BaseFuncts1D[BaseFunct] = BaseFunct1D; };
256 
257 //======================================================================
258 // NodalFunctional1D
259 //======================================================================
262  (NodalFunctional1D NodalFunctional)
263  { return NodalFunctionals1D[NodalFunctional]; };
264 
266  static void RegisterNodalFunctional1D
267  (NodalFunctional1D NodalFunctional,
268  TNodalFunctional1D *NodalFunctional1D)
269  { NodalFunctionals1D[NodalFunctional] = NodalFunctional1D; };
270 
271 //======================================================================
272 // FE function values and derivatives 1D
273 //======================================================================
275  static void RegisterRefElementValues
276  (BaseFunct1D BaseFunct, QuadFormula1D QuadFormula,
277  MultiIndex1D MultiIndex, double **Values)
278  {
279  RefElementValues1D[BaseFunct][QuadFormula][MultiIndex]
280  = Values;
281  }
282 
284  static double **GetRefElementValues
285  (BaseFunct1D BaseFunct, QuadFormula1D QuadFormula,
286  MultiIndex1D MultiIndex)
287  {
288  return RefElementValues1D[BaseFunct][QuadFormula][MultiIndex];
289  }
290 
292  static void RegisterOrigElementValues
293  (BaseFunct1D BaseFunct, MultiIndex1D MultiIndex, double **Values)
294  {
295  OrigElementValues1D[BaseFunct][MultiIndex] = Values;
296  }
297 
299  static double **GetOrigElementValues
300  (BaseFunct1D BaseFunct, MultiIndex1D MultiIndex)
301  {
302  return OrigElementValues1D[BaseFunct][MultiIndex];
303  }
304 
306  static TRefTrans1D *GetRefTrans1D(RefTrans1D reftrans)
307  {
308  return ReferenceTrans1D[reftrans];
309  }
310 
311 
312 //======================================================================
313 // FEDesc2D
314 //======================================================================
316  static TFEDesc2D *GetFEDesc2D(FEDesc2D FEDesc)
317  { return FEDescs2D[FEDesc]; };
318 
320  static void RegisterFEDesc2D(FEDesc2D FEDesc, TFEDesc2D *FEDesc2D)
321  { FEDescs2D[FEDesc] = FEDesc2D; };
322 
323 //======================================================================
324 // BaseFunct2D
325 //======================================================================
327  static TBaseFunct2D *GetBaseFunct2D(BaseFunct2D BaseFunct)
328  { return BaseFuncts2D[BaseFunct]; };
329 
331  static void RegisterBaseFunct2D(BaseFunct2D BaseFunct,
332  TBaseFunct2D *BaseFunct2D)
333  { BaseFuncts2D[BaseFunct] = BaseFunct2D; };
334 
335 //======================================================================
336 // NodalFunctional2D
337 //======================================================================
340  (NodalFunctional2D NodalFunctional)
341  { return NodalFunctionals2D[NodalFunctional]; };
342 
344  static void RegisterNodalFunctional2D
345  (NodalFunctional2D NodalFunctional,
346  TNodalFunctional2D *NodalFunctional2D)
347  { NodalFunctionals2D[NodalFunctional] = NodalFunctional2D; };
348 
349 //======================================================================
350 // FE2D
351 //======================================================================
353  static TFE2D *GetFE2D(FE2D FE)
354  { return FEs2D[FE]; };
355 
357  static void RegisterFE2D(FE2D FE, TFE2D *element)
358  { FEs2D[FE] = element; };
359 
360 //======================================================================
361 // access to some arrays
362 //======================================================================
364  static FEDesc2D GetFEDesc2D_IDFromFE2D(FE2D ele)
365  { return FEDesc2D_IDFromFE2D[ele]; };
366 
368  static TFEDesc2D *GetFEDesc2DFromFE2D(FE2D ele)
369  { return FEDesc2DFromFE2D[ele]; };
370 
372  static BaseFunct2D GetBaseFunct2D_IDFromFE2D(FE2D ele)
373  { return BaseFunct2D_IDFromFE2D[ele]; };
374 
376  static int GetN_BaseFunctFromFE2D(FE2D ele)
377  { return N_BaseFunctFromFE2D[ele]; };
378 
380  static int GetPolynomialDegreeFromFE2D(FE2D ele)
381  { return PolynomialDegreeFromFE2D[ele]; };
382 
384  static int GetAccuracyFromFE2D(FE2D ele)
385  { return AccuracyFromFE2D[ele]; };
386 
389  { return BaseFunct2DFromFE2D[ele]; };
390 
392  static NodalFunctional2D GetNodalFunctional2D_IDFromFE2D(FE2D ele)
393  { return NodalFunctional2D_IDFromFE2D[ele]; };
394 
397  { return NodalFunctional2DFromFE2D[ele]; };
398 
400  static RefTrans2D GetRefTrans2D_IDFromFE2D(FE2D ele)
401  { return RefTrans2D_IDFromFE2D[ele]; };
402 
404  static BF2DRefElements GetRefElementFromFE2D(FE2D ele)
405  { return RefElementFromFE2D[ele]; };
406 
407 
409  static FEDesc2D *GetFEDesc2D_IDFromFE2D()
410  { return FEDesc2D_IDFromFE2D; };
411 
414  { return FEDesc2DFromFE2D; };
415 
417  static BaseFunct2D *GetBaseFunct2D_IDFromFE2D()
418  { return BaseFunct2D_IDFromFE2D; };
419 
422  { return N_BaseFunctFromFE2D; };
423 
426  { return PolynomialDegreeFromFE2D; };
427 
429  static int *GetAccuracyFromFE2D()
430  { return AccuracyFromFE2D; };
431 
434  { return BaseFunct2DFromFE2D; };
435 
437  static NodalFunctional2D *GetNodalFunctional2D_IDFromFE2D()
438  { return NodalFunctional2D_IDFromFE2D; };
439 
442  { return NodalFunctional2DFromFE2D; };
443 
445  static RefTrans2D *GetRefTrans2D_IDFromFE2D()
446  { return RefTrans2D_IDFromFE2D; };
447 
449  static BF2DRefElements *GetRefElementFromFE2D()
450  { return RefElementFromFE2D; };
451 
452 //======================================================================
453 // prolongation matrices in 2D
454 //======================================================================
456  static double *GetProlongationMatrix2D (FE2D parent,
457  Refinements refine, FE2D child, int childnumber);
458 
460  static void RegisterProlongationMatrix2D(BaseFunct2D parent,
461  Refinements refine, BaseFunct2D child, int childnumber,
462  double *matrix)
463  { ProlongationMatrix2D[parent][refine][child][childnumber] =
464  matrix; };
465 
466 //======================================================================
467 // function restriction matrices in 2D
468 //======================================================================
470  static double *GetRestrictionMatrix2D (FE2D parent,
471  Refinements refine, FE2D child, int childnumber);
472 
474  static void RegisterRestrictionMatrix2D(BaseFunct2D parent,
475  Refinements refine, BaseFunct2D child, int childnumber,
476  double *matrix)
477  { RestrictionMatrix2D[parent][refine][child][childnumber] =
478  matrix; };
479 
480 //======================================================================
481 // FE mapper, regular
482 //======================================================================
484  static TFE2DMapper *GetFE2DMapper(FEDesc2D FE1, FEDesc2D FE2)
485  { return FE2DMapper[FE1][FE2]; };
486 
488  static void RegisterFE2DMapper(FEDesc2D FE1, FEDesc2D FE2,
489  TFE2DMapper *mapper)
490  { FE2DMapper[FE1][FE2] = mapper; };
491 
492 //======================================================================
493 // FE mapper, one regular
494 //======================================================================
496  static TFE2DMapper1Reg *GetFE2DMapper1Reg (FEDesc2D FE1, FEDesc2D FE2)
497  { return FE2DMapper1Reg[FE1][FE2]; };
498 
500  static void RegisterFE2DMapper1Reg(FEDesc2D FE1, FEDesc2D FE2,
501  TFE2DMapper1Reg *mapper)
502  { FE2DMapper1Reg[FE1][FE2] = mapper; };
503 
504 //======================================================================
505 // HNDesc
506 //======================================================================
508  static THNDesc *GetHNDesc2D(HNDesc Desc)
509  { return HNDescs2D[Desc]; };
510 
512  static void RegisterHNDesc2D(HNDesc Desc, THNDesc *HNDesc_Obj)
513  { HNDescs2D[Desc] = HNDesc_Obj; };
514 
515 //======================================================================
516 // FE function values and derivatives 2D
517 //======================================================================
519  static void RegisterRefElementValues
520  (BaseFunct2D BaseFunct, QuadFormula2D QuadFormula,
521  MultiIndex2D MultiIndex, double **Values)
522  {
523  RefElementValues2D[BaseFunct][QuadFormula][MultiIndex]
524  = Values;
525  }
526 
528  static double **GetRefElementValues
529  (BaseFunct2D BaseFunct, QuadFormula2D QuadFormula,
530  MultiIndex2D MultiIndex)
531  {
532  return RefElementValues2D[BaseFunct][QuadFormula][MultiIndex];
533  }
534 
536  static void RegisterJointValues2D
537  (BaseFunct2D BaseFunct, QuadFormula1D formula, int joint,
538  double **Values)
539  {
540  JointValues2D[BaseFunct][formula][joint] = Values;
541  }
542 
544  static double **GetJointValues2D
545  (BaseFunct2D BaseFunct, QuadFormula1D formula, int joint)
546  {
547  return JointValues2D[BaseFunct][formula][joint];
548  }
549 
551  static void RegisterJointDerivatives2D
552  (BaseFunct2D BaseFunct, QuadFormula1D formula, int joint,
553  MultiIndex2D MultiIndex, double **Values)
554  {
555  JointDerivatives2D[BaseFunct][formula][joint][MultiIndex] = Values;
556  }
557 
559  static double **GetJointDerivatives2D
560  (BaseFunct2D BaseFunct, QuadFormula1D formula, int joint,
561  MultiIndex2D MultiIndex)
562  {
563  return JointDerivatives2D[BaseFunct][formula][joint][MultiIndex];
564  }
565 
567  static void RegisterOrigElementValues
568  (BaseFunct2D BaseFunct, MultiIndex2D MultiIndex, double **Values)
569  {
570  OrigElementValues2D[BaseFunct][MultiIndex] = Values;
571  }
572 
574  static double **GetOrigElementValues
575  (BaseFunct2D BaseFunct, MultiIndex2D MultiIndex)
576  {
577  return OrigElementValues2D[BaseFunct][MultiIndex];
578  }
579 
582  /*
583  static RefTrans2D GetOrigValues(TBaseCell *cell, TFE2D *element,
584  int N_Points,
585  double *xi, double *eta,
586  int N_Functs,
587  BaseFunct2D BaseFunct,
588  QuadFormula2D QuadFormula);
589  */
590 
593  static void GetOrigValues(RefTrans2D RefTrans,
594  double xi, double eta, TBaseFunct2D *bf,
595  TCollection *Coll, TGridCell *cell,
596  double *uref, double *uxiref, double *uetaref,
597  double *uorig, double *uxorig, double *uyorig);
598 
599  static void GetOrigValues(RefTrans2D RefTrans,
600  double zeta, TBaseFunct2D *bf, int edgeNumber,
601  double *uref, double *uxiref, double *uetaref,
602  double *uorig, double *uxorig, double *uyorig);
603 
604 //======================================================================
605 // reference transformation 2D
606 //======================================================================
608  static TRefTrans2D *GetRefTrans2D(RefTrans2D reftrans)
609  {
610  return ReferenceTrans2D[reftrans];
611  }
612 
614  static void GetOrigFromRef(RefTrans2D RefTrans, int n_points,
615  double *xi, double *eta,
616  double *X, double *Y, double *absdetjk);
617 
620  static RefTrans2D GetOrig(int N_LocalUsedElements, FE2D *LocalUsedElements,
621  TCollection *Coll,
622  TBaseCell *cell, bool *Needs2ndDer,
623  int &N_Points, double* &xi, double* &eta,
624  double* &weights, double* X, double* Y,
625  double* absdetjk);
626 
628  static void GetRefFromOrig(RefTrans2D RefTrans,
629  double X, double Y,
630  double &xi, double &eta);
631 
633  static void SetCellForRefTrans(TBaseCell *cell,
634  RefTrans2D reftrans);
635 
636 //======================================================================
637 // QuadFormula1D
638 //======================================================================
640  static TQuadFormula1D *GetQuadFormula1D(QuadFormula1D QF)
641  { return QuadFormulas1D[QF]; };
642 
644  static void RegisterQuadFormula1D(QuadFormula1D QF,
645  TQuadFormula1D *QuadForm)
646  { QuadFormulas1D[QF] = QuadForm; };
647 
649  static QuadFormula1D GetQFLineFromDegree(int accuracy)
650  {
651  if(accuracy<=HighestAccuracyLine)
652  return QFLineFromDegree[accuracy];
653  else
655  };
656 
657 //======================================================================
658 // QuadFormula2D
659 //======================================================================
661  static TQuadFormula2D *GetQuadFormula2D(QuadFormula2D QF)
662  { return QuadFormulas2D[QF]; };
663 
665  static void RegisterQuadFormula2D(QuadFormula2D QF,
666  TQuadFormula2D *QuadForm)
667  { QuadFormulas2D[QF] = QuadForm; };
668 
670  static QuadFormula2D GetQFTriaFromDegree(int accuracy)
671  {
672  if(accuracy<=HighestAccuracyTria)
673  return QFTriaFromDegree[accuracy];
674  else
676  };
678  static QuadFormula2D GetQFQuadFromDegree(int accuracy)
679  {
680  if(accuracy<=HighestAccuracyQuad)
681  return QFQuadFromDegree[accuracy];
682  else
684  };
685 
687  static QuadFormula2D GetQFFromDegree(int accuracy, BF2DRefElements RefElem);
688 
689 
690 //======================================================================
691 // QuadFormula3D
692 //======================================================================
694  static TQuadFormula3D *GetQuadFormula3D(QuadFormula3D QF)
695  { return QuadFormulas3D[QF]; };
696 
698  static void RegisterQuadFormula3D(QuadFormula3D QF,
699  TQuadFormula3D *QuadForm)
700  { QuadFormulas3D[QF] = QuadForm; };
701 
702 };
703 
704 #endif
static int HighestAccuracyTria
Definition: FEDatabase2D.h:135
static BF2DRefElements GetRefElementFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:404
static void RegisterAllHangingNodes()
Definition: FEDatabase2D.C:1583
Definition: FE2DMapper1Reg.h:23
static int PolynomialDegreeFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:159
static void RegisterQuadFormula2D(QuadFormula2D QF, TQuadFormula2D *QuadForm)
Definition: FEDatabase2D.h:665
static NodalFunctional2D GetNodalFunctional2D_IDFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:392
static void RegisterJointValues2D(BaseFunct2D BaseFunct, QuadFormula1D formula, int joint, double **Values)
Definition: FEDatabase2D.h:537
static RefTrans2D GetRefTrans2D_IDFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:400
static void RegisterFE2DMapper1Reg(FEDesc2D FE1, FEDesc2D FE2, TFE2DMapper1Reg *mapper)
Definition: FEDatabase2D.h:500
static void RegisterFE2DMapper(FEDesc2D FE1, FEDesc2D FE2, TFE2DMapper *mapper)
Definition: FEDatabase2D.h:488
static TQuadFormula3D * GetQuadFormula3D(QuadFormula3D QF)
Definition: FEDatabase2D.h:694
static void GenerateArrays()
Definition: FEDatabase2D.C:1644
static void RegisterAllFEDescs()
Definition: FEDatabase2D.C:312
static TQuadFormula1D * QuadFormulas1D[N_QuadFormulas_1D]
Definition: FEDatabase2D.h:42
static TFE2D * GetFE2D(FE2D FE)
Definition: FEDatabase2D.h:353
static void RegisterNodalFunctional2D(NodalFunctional2D NodalFunctional, TNodalFunctional2D *NodalFunctional2D)
Definition: FEDatabase2D.h:345
static void RegisterAllNodalFunctionals()
Definition: FEDatabase2D.C:606
static double * GetProlongationMatrix2D(FE2D parent, Refinements refine, FE2D child, int childnumber)
Definition: FEDatabase2D.C:2330
static void RegisterJointDerivatives2D(BaseFunct2D BaseFunct, QuadFormula1D formula, int joint, MultiIndex2D MultiIndex, double **Values)
Definition: FEDatabase2D.h:552
static TBaseFunct2D * BaseFuncts2D[N_BaseFuncts2D]
Definition: FEDatabase2D.h:84
static TNodalFunctional2D * GetNodalFunctional2DFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:396
static double ** JointDerivatives2D[N_BaseFuncts2D][N_QuadFormulas_1D][MAXN_JOINTS][N_MultiIndices2D]
Definition: FEDatabase2D.h:114
static int GetPolynomialDegreeFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:380
Definition: FE1D.h:21
Definition: FE2D.h:20
static double * GetRestrictionMatrix2D(FE2D parent, Refinements refine, FE2D child, int childnumber)
Definition: FEDatabase2D.C:2494
static TNodalFunctional2D ** GetNodalFunctional2DFromFE2D()
Definition: FEDatabase2D.h:441
static TRefTrans2D * ReferenceTrans2D[N_RefTrans2D]
Definition: FEDatabase2D.h:121
static void RegisterQuadFormula3D(QuadFormula3D QF, TQuadFormula3D *QuadForm)
Definition: FEDatabase2D.h:698
static void RegisterFE2D(FE2D FE, TFE2D *element)
Definition: FEDatabase2D.h:357
static QuadFormula2D QFQuadFromDegree[MAXDEGREE]
Definition: FEDatabase2D.h:138
Definition: RefTrans2D.h:22
Definition: RefTrans1D.h:22
static void RegisterHNDesc2D(HNDesc Desc, THNDesc *HNDesc_Obj)
Definition: FEDatabase2D.h:512
static int * GetPolynomialDegreeFromFE2D()
Definition: FEDatabase2D.h:425
static RefTrans2D * GetRefTrans2D_IDFromFE2D()
Definition: FEDatabase2D.h:445
static TFE2DMapper * GetFE2DMapper(FEDesc2D FE1, FEDesc2D FE2)
Definition: FEDatabase2D.h:484
static void RegisterAllFEs()
Definition: FEDatabase2D.C:753
static double ** OrigElementValues1D[N_BaseFuncts1D][N_MultiIndices1D]
Definition: FEDatabase2D.h:63
static int GetN_BaseFunctFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:376
static TQuadFormula2D * GetQuadFormula2D(QuadFormula2D QF)
Definition: FEDatabase2D.h:661
static QuadFormula2D GetQFTriaFromDegree(int accuracy)
Definition: FEDatabase2D.h:670
TFEDatabase2D()
Definition: FEDatabase2D.C:120
static void SetCellForRefTrans(TBaseCell *cell, RefTrans2D reftrans)
Definition: FEDatabase2D.C:2300
static QuadFormula1D QFLineFromDegree[MAXDEGREE]
Definition: FEDatabase2D.h:66
static double ** GetOrigElementValues(BaseFunct1D BaseFunct, MultiIndex1D MultiIndex)
Definition: FEDatabase2D.h:300
static void RegisterFEDesc1D(FEDesc1D FEDesc, TFEDesc1D *FEDesc1D)
Definition: FEDatabase2D.h:242
static void GetOrigValues(RefTrans2D RefTrans, double xi, double eta, TBaseFunct2D *bf, TCollection *Coll, TGridCell *cell, double *uref, double *uxiref, double *uetaref, double *uorig, double *uxorig, double *uyorig)
Definition: FEDatabase2D.C:2150
static BaseFunct2D BaseFunct2D_IDFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:153
Definition: QuadFormula2D.h:22
Definition: QuadFormula1D.h:21
static TFE2DMapper * FE2DMapper[N_FEDescs2D][N_FEDescs2D]
Definition: FEDatabase2D.h:93
static void RegisterBaseFunct1D(BaseFunct1D BaseFunct, TBaseFunct1D *BaseFunct1D)
Definition: FEDatabase2D.h:253
Definition: QuadFormula3D.h:22
static TNodalFunctional2D * NodalFunctional2DFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:171
static TRefTrans1D * GetRefTrans1D(RefTrans1D reftrans)
Definition: FEDatabase2D.h:306
static TFEDesc2D ** GetFEDesc2DFromFE2D()
Definition: FEDatabase2D.h:413
static double * RestrictionMatrix2D[MaxN_BaseFunctions2D][N_REFDESC][MaxN_BaseFunctions2D][MAXN_CHILDREN]
Definition: FEDatabase2D.h:129
store cells in an array, used by cell iterators
Definition: Collection.h:18
Definition: NodalFunctional1D.h:20
Definition: NodalFunctional2D.h:20
static int * GetAccuracyFromFE2D()
Definition: FEDatabase2D.h:429
static double ** GetJointDerivatives2D(BaseFunct2D BaseFunct, QuadFormula1D formula, int joint, MultiIndex2D MultiIndex)
Definition: FEDatabase2D.h:560
static TQuadFormula1D * GetQuadFormula1D(QuadFormula1D QF)
Definition: FEDatabase2D.h:640
static double ** JointValues2D[N_BaseFuncts2D][N_QuadFormulas_1D][MAXN_JOINTS]
Definition: FEDatabase2D.h:109
static double ** RefElementValues1D[N_BaseFuncts1D][N_QuadFormulas_1D][N_MultiIndices1D]
Definition: FEDatabase2D.h:59
static TFEDesc2D * GetFEDesc2DFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:368
static TBaseFunct2D * GetBaseFunct2DFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:388
static TRefTrans2D * GetRefTrans2D(RefTrans2D reftrans)
Definition: FEDatabase2D.h:608
static TNodalFunctional1D * GetNodalFunctional1D(NodalFunctional1D NodalFunctional)
Definition: FEDatabase2D.h:262
static TFEDesc1D * FEDescs1D[N_FEDescs1D]
Definition: FEDatabase2D.h:51
static TBaseFunct1D * BaseFuncts1D[N_BaseFuncts1D]
Definition: FEDatabase2D.h:45
static int HighestAccuracyLine
Definition: FEDatabase2D.h:69
static int AccuracyFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:162
static void RegisterOrigElementValues(BaseFunct1D BaseFunct, MultiIndex1D MultiIndex, double **Values)
Definition: FEDatabase2D.h:293
static double ** GetRefElementValues(BaseFunct1D BaseFunct, QuadFormula1D QuadFormula, MultiIndex1D MultiIndex)
Definition: FEDatabase2D.h:285
static void RegisterAllQuadFormulas()
Definition: FEDatabase2D.C:134
static int HighestAccuracyQuad
Definition: FEDatabase2D.h:141
static TBaseFunct1D * GetBaseFunct1D(BaseFunct1D BaseFunct)
Definition: FEDatabase2D.h:249
static TNodalFunctional2D * GetNodalFunctional2D(NodalFunctional2D NodalFunctional)
Definition: FEDatabase2D.h:340
static TBaseFunct2D ** GetBaseFunct2DFromFE2D()
Definition: FEDatabase2D.h:433
static BaseFunct2D * GetBaseFunct2D_IDFromFE2D()
Definition: FEDatabase2D.h:417
static void GetOrigFromRef(RefTrans2D RefTrans, int n_points, double *xi, double *eta, double *X, double *Y, double *absdetjk)
Definition: FEDatabase2D.C:2233
static double * ProlongationMatrix2D[MaxN_BaseFunctions2D][N_REFDESC][MaxN_BaseFunctions2D][MAXN_CHILDREN]
Definition: FEDatabase2D.h:125
static TFEDesc1D * GetFEDesc1D(FEDesc1D FEDesc)
Definition: FEDatabase2D.h:238
static QuadFormula2D GetQFFromDegree(int accuracy, BF2DRefElements RefElem)
Definition: FEDatabase2D.C:2707
static TFE2D * FEs2D[N_FEs2D]
Definition: FEDatabase2D.h:78
static RefTrans2D RefTrans2D_IDFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:174
static BaseFunct2D GetBaseFunct2D_IDFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:372
static int * GetN_BaseFunctFromFE2D()
Definition: FEDatabase2D.h:421
static FEDesc2D GetFEDesc2D_IDFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:364
Definition: HNDesc.h:15
static QuadFormula1D GetQFLineFromDegree(int accuracy)
Definition: FEDatabase2D.h:649
static FEDesc2D * GetFEDesc2D_IDFromFE2D()
Definition: FEDatabase2D.h:409
static TFE2DMapper1Reg * GetFE2DMapper1Reg(FEDesc2D FE1, FEDesc2D FE2)
Definition: FEDatabase2D.h:496
static void RegisterNodalFunctional1D(NodalFunctional1D NodalFunctional, TNodalFunctional1D *NodalFunctional1D)
Definition: FEDatabase2D.h:267
information for finite element data structure
Definition: BaseCell.h:25
static void RegisterAllBaseFunctions()
Definition: FEDatabase2D.C:461
static void RegisterProlongationMatrix2D(BaseFunct2D parent, Refinements refine, BaseFunct2D child, int childnumber, double *matrix)
Definition: FEDatabase2D.h:460
static BF2DRefElements * GetRefElementFromFE2D()
Definition: FEDatabase2D.h:449
static QuadFormula2D QFTriaFromDegree[MAXDEGREE]
Definition: FEDatabase2D.h:132
static TNodalFunctional1D * NodalFunctionals1D[N_NodalFunctionals1D]
Definition: FEDatabase2D.h:48
static TFEDesc2D * FEDesc2DFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:150
static TQuadFormula3D * QuadFormulas3D[N_QuadFormulas_3D]
Definition: FEDatabase2D.h:183
static void RegisterFEDesc2D(FEDesc2D FEDesc, TFEDesc2D *FEDesc2D)
Definition: FEDatabase2D.h:320
static TRefTrans1D * ReferenceTrans1D[1]
Definition: FEDatabase2D.h:72
Definition: BaseFunct2D.h:27
Definition: BaseFunct1D.h:25
static TFEDesc2D * GetFEDesc2D(FEDesc2D FEDesc)
Definition: FEDatabase2D.h:316
static TBaseFunct2D * BaseFunct2DFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:165
static NodalFunctional2D * GetNodalFunctional2D_IDFromFE2D()
Definition: FEDatabase2D.h:437
static void RegisterQuadFormula1D(QuadFormula1D QF, TQuadFormula1D *QuadForm)
Definition: FEDatabase2D.h:644
static void GetRefFromOrig(RefTrans2D RefTrans, double X, double Y, double &xi, double &eta)
Definition: FEDatabase2D.C:2269
static void RegisterRefElementValues(BaseFunct1D BaseFunct, QuadFormula1D QuadFormula, MultiIndex1D MultiIndex, double **Values)
Definition: FEDatabase2D.h:276
Definition: FEDatabase2D.h:35
static double ** RefElementValues2D[N_BaseFuncts2D][N_QuadFormulas_2D][N_MultiIndices2D]
Definition: FEDatabase2D.h:104
static NodalFunctional2D NodalFunctional2D_IDFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:168
static TNodalFunctional2D * NodalFunctionals2D[N_NodalFunctionals2D]
Definition: FEDatabase2D.h:87
static THNDesc * GetHNDesc2D(HNDesc Desc)
Definition: FEDatabase2D.h:508
Definition: FEDesc1D.h:17
static RefTrans2D GetOrig(int N_LocalUsedElements, FE2D *LocalUsedElements, TCollection *Coll, TBaseCell *cell, bool *Needs2ndDer, int &N_Points, double *&xi, double *&eta, double *&weights, double *X, double *Y, double *absdetjk)
Definition: FEDatabase2D.C:1765
static void RegisterAllRefTrans()
Definition: FEDatabase2D.C:1624
Definition: FEDesc2D.h:15
static THNDesc * HNDescs2D[N_HNDescs]
Definition: FEDatabase2D.h:99
Definition: FE2DMapper.h:24
static BF2DRefElements RefElementFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:177
static double ** OrigElementValues2D[N_BaseFuncts2D][N_MultiIndices2D]
Definition: FEDatabase2D.h:118
static void RegisterRestrictionMatrix2D(BaseFunct2D parent, Refinements refine, BaseFunct2D child, int childnumber, double *matrix)
Definition: FEDatabase2D.h:474
static TFE1D * FEs1D[N_FEs1D]
Definition: FEDatabase2D.h:54
static int N_BaseFunctFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:156
represent geometric information of the cell
Definition: GridCell.h:15
static TBaseFunct2D * GetBaseFunct2D(BaseFunct2D BaseFunct)
Definition: FEDatabase2D.h:327
static FEDesc2D FEDesc2D_IDFromFE2D[N_FEs2D]
Definition: FEDatabase2D.h:147
static TFE1D * GetFE1D(FE1D FE)
Definition: FEDatabase2D.h:227
static TFEDesc2D * FEDescs2D[N_FEDescs2D]
Definition: FEDatabase2D.h:81
static void RegisterFE1D(FE1D FE, TFE1D *element)
Definition: FEDatabase2D.h:231
static void RegisterBaseFunct2D(BaseFunct2D BaseFunct, TBaseFunct2D *BaseFunct2D)
Definition: FEDatabase2D.h:331
static TFE2DMapper1Reg * FE2DMapper1Reg[N_FEDescs2D][N_FEDescs2D]
Definition: FEDatabase2D.h:96
static void RegisterAllFEMappers()
Definition: FEDatabase2D.C:1186
static TQuadFormula2D * QuadFormulas2D[N_QuadFormulas_2D]
Definition: FEDatabase2D.h:90
static QuadFormula2D GetQFQuadFromDegree(int accuracy)
Definition: FEDatabase2D.h:678
static int GetAccuracyFromFE2D(FE2D ele)
Definition: FEDatabase2D.h:384
static double ** GetJointValues2D(BaseFunct2D BaseFunct, QuadFormula1D formula, int joint)
Definition: FEDatabase2D.h:545