ParMooN
 All Classes Functions Variables Friends Pages
BaseFunct3D.h
1 // =======================================================================
2 // %W% %G%
3 //
4 // Class: TBaseFunct3D
5 //
6 // Purpose: represents the set of base functions for a finite element
7 // in three dimensions
8 //
9 // Author: Gunar Matthies
10 //
11 // History: start of implementation 19.11.99
12 //
13 // =======================================================================
14 
15 #ifndef __BASEFUNCT3D__
16 #define __BASEFUNCT3D__
17 
18 #include <QuadFormula2D.h>
19 #include <QuadFormula3D.h>
20 #include <Constants.h>
21 #include <GridCell.h>
22 
23 #include <Enumerations.h>
24 
28 {
29  protected:
31  int Dimension;
32 
34  BaseFunct3D BaseFunct;
35 
37  DoubleFunct3D *Functions[N_MultiIndices3D];
38 
40  bool changable;
41 
43  BF3DRefElements RefElement;
44 
47 
49  int Accuracy;
50 
54 
57  int ***BF2Change;
58 
61 
62  public:
64  TBaseFunct3D(int dimension, BaseFunct3D basefunct,
65  BF3DRefElements refelement,
66  DoubleFunct3D* functions,
67  DoubleFunct3D* derivativesXi,
68  DoubleFunct3D* derivativesEta,
69  DoubleFunct3D* derivativesZeta,
70  DoubleFunct3D* derivativesXiXi,
71  DoubleFunct3D* derivativesXiEta,
72  DoubleFunct3D* derivativesXiZeta,
73  DoubleFunct3D* derivativesEtaEta,
74  DoubleFunct3D* derivativesEtaZeta,
75  DoubleFunct3D* derivativesZetaZeta,
76  int polynomialdegree,
77  int accuracy,
78  int n_bf2change,
79  int ***bf2change,
80  int baseVectDim = 1
81  );
82 
84  TBaseFunct3D(int dimension);
85 
87  int GetDimension() const
88  { return Dimension; }
89 
91  void GetDerivatives(MultiIndex3D MultiIndex, double xi,
92  double eta, double zeta, double *values)
93  { Functions[MultiIndex](xi, eta, zeta, values); };
94 
97  void GetDerivatives(MultiIndex3D MultiIndex,
98  TQuadFormula3D *formula, double **values);
99 
101  void GetValues(int N_Points, double *t, double *s,
102  int i, double **Values);
103 
105  void GetValues(int N_Points, double *t, double *s, int i,
106  MultiIndex3D index, double **Values);
107 
110  { changable = false; };
111 
113  void SetFunction(MultiIndex3D MultiIndex, DoubleFunct3D* function);
114 
116  void MakeRefElementData(QuadFormula2D QuadFormula);
117 
119  void MakeRefElementData(QuadFormula3D QuadFormula);
120 
123 
125  BF3DRefElements GetRefElement() const
126  { return RefElement; };
127 
130  { return PolynomialDegree; };
131 
133  int GetAccuracy() const
134  { return Accuracy; };
135 
137  int GetN_BF2Change() const
138  { return N_BF2Change; }
139 
141  int ***GetBF2Change() const
142  { return BF2Change; }
143 
145  void ChangeBF(TCollection *Coll, TBaseCell *Cell, double *Values);
146 
148  void ChangeBF(TCollection *Coll, TBaseCell *Cell, int N_Points, double **Values);
149 
151  BaseFunct3D GetID() const
152  { return BaseFunct; }
153 
155  int GetBaseVectDim() const
156  { return BaseVectDim; }
157 
158 };
159 
160 #endif
void MakeRefElementData(QuadFormula2D QuadFormula)
Definition: BaseFunct3D.C:310
bool changable
Definition: BaseFunct3D.h:40
int GetPolynomialDegree() const
Definition: BaseFunct3D.h:129
int Dimension
Definition: BaseFunct3D.h:31
void SetFunction(MultiIndex3D MultiIndex, DoubleFunct3D *function)
Definition: BaseFunct3D.C:302
BaseFunct3D GetID() const
Definition: BaseFunct3D.h:151
TBaseFunct3D(int dimension, BaseFunct3D basefunct, BF3DRefElements refelement, DoubleFunct3D *functions, DoubleFunct3D *derivativesXi, DoubleFunct3D *derivativesEta, DoubleFunct3D *derivativesZeta, DoubleFunct3D *derivativesXiXi, DoubleFunct3D *derivativesXiEta, DoubleFunct3D *derivativesXiZeta, DoubleFunct3D *derivativesEtaEta, DoubleFunct3D *derivativesEtaZeta, DoubleFunct3D *derivativesZetaZeta, int polynomialdegree, int accuracy, int n_bf2change, int ***bf2change, int baseVectDim=1)
Definition: BaseFunct3D.C:22
BF3DRefElements GetRefElement() const
Definition: BaseFunct3D.h:125
int N_BF2Change
Definition: BaseFunct3D.h:53
Definition: QuadFormula3D.h:22
BF3DRefElements RefElement
Definition: BaseFunct3D.h:43
int GetDimension() const
Definition: BaseFunct3D.h:87
store cells in an array, used by cell iterators
Definition: Collection.h:18
void GetValues(int N_Points, double *t, double *s, int i, double **Values)
Definition: BaseFunct3D.C:91
void GetDerivatives(MultiIndex3D MultiIndex, double xi, double eta, double zeta, double *values)
Definition: BaseFunct3D.h:91
int PolynomialDegree
Definition: BaseFunct3D.h:46
TGridCell * GenerateRefElement()
Definition: BaseFunct3D.C:531
int GetBaseVectDim() const
Definition: BaseFunct3D.h:155
int BaseVectDim
Definition: BaseFunct3D.h:60
void SetUnchangable()
Definition: BaseFunct3D.h:109
BaseFunct3D BaseFunct
Definition: BaseFunct3D.h:34
information for finite element data structure
Definition: BaseCell.h:25
DoubleFunct3D * Functions[N_MultiIndices3D]
Definition: BaseFunct3D.h:37
void ChangeBF(TCollection *Coll, TBaseCell *Cell, double *Values)
Definition: BaseFunct3D.C:589
int GetAccuracy() const
Definition: BaseFunct3D.h:133
int Accuracy
Definition: BaseFunct3D.h:49
Definition: BaseFunct3D.h:27
int *** BF2Change
Definition: BaseFunct3D.h:57
int GetN_BF2Change() const
Definition: BaseFunct3D.h:137
represent geometric information of the cell
Definition: GridCell.h:15
int *** GetBF2Change() const
Definition: BaseFunct3D.h:141