ParMooN
 All Classes Functions Variables Friends Pages
LocalAssembling2D.h
1 
21 #ifndef __LOCAL_ASSEMBLING_2D__
22 #define __LOCAL_ASSEMBLING_2D__
23 
24 #include <Enumerations.h>
25 #include <Constants.h>
26 #include <string>
27 #include <vector>
28 
29 enum LocalAssembling2D_type { CD2D_Galerkin,
30  CD2D_SUPG,
31  CD2D_GLS,
32  CD2D_Axiax3D_Galerkin,
33  TCD2D_Mass_Rhs_Galerkin, // mass matrix and rhs
34  TCD2D_Stiff_Rhs_Galerkin,// stiffness matrix + rhs
35  TCD2D_Mass_Rhs_SUPG, // mass matrix and rhs
36  TCD2D_Stiff_Rhs_SUPG, // stiffness matrix + rhs
37  NSE2D_Galerkin,
38  NSE2D_Galerkin_Nonlinear,
39  Darcy2D_Galerkin
40 };
41 
44 {
45  protected:
47  std::string name;
48 
50  int N_Terms;
51 
53  int N_Spaces;
54 
58 
63  std::vector<MultiIndex2D> Derivatives;
64 
66  std::vector<int> FESpaceNumber;
67 
69  std::vector<int> RowSpace;
70 
72  std::vector<int> ColumnSpace;
73 
75  std::vector<int> RhsSpace;
76 
78  CoeffFct2D *Coeffs;
79 
82  AssembleFctParam2D *AssembleParam;
83 
85  ManipulateFct2D *Manipulate;
86 
88  double ***AllOrigValues;
89 
91  double **OrigValues;
92 
93  int N_Matrices;
94  int N_Rhs;
95 
96 
99 
101  std::vector<ParamFct*> ParameterFct;
102 
104  std::vector<int> BeginParameter;
105 
106  // number of parameters
107  int N_Parameters;
108 
111 
114 
116  std::vector<int> FEValue_FctIndex;
117 
119  std::vector<MultiIndex2D> FEValue_MultiIndex;
120 
128  void set_parameters_for_nse(LocalAssembling2D_type type);
129  public:
131  LocalAssembling2D(LocalAssembling2D_type type, TFEFunction2D **fefunctions2d,
132  CoeffFct2D *coeffs);
133 
136 
137 
138 
140  void GetLocalForms(int N_Points, double *weights, double *AbsDetjk,
141  double *X, double *Y,
142  int *N_BaseFuncts, BaseFunct2D *BaseFuncts,
143  double **Parameters, double **AuxArray,
144  TBaseCell *Cell, int N_Matrices, int N_Rhs,
145  double ***LocMatrix, double **LocRhs,
146  double factor = 1.);
147 
149  void GetParameters(int n_points, TCollection *Coll,
150  TBaseCell *cell, int cellnum,
151  double *x, double *y,
152  double **Parameters);
153 
155  void GetParameters(int N_Points, TCollection *Coll,
156  TBaseCell *cell, int cellnum,
157  double *s, int joint,
158  double **Parameters);
159 
160 
161 
163  const std::string& get_name() const
164  { return name; }
165 
168  { return Needs2ndDerivatives; }
169 
171  CoeffFct2D *GetCoeffFct() const
172  { return Coeffs; }
173 
175  int rowSpaceOfMat(int i) const
176  { return RowSpace[i]; }
177 
179  int colSpaceOfMat(int i) const
180  { return ColumnSpace[i]; }
181 
182  int GetN_ParamFct() const
183  { return N_ParamFct; }
184 
185  int GetN_Parameters() const
186  { return N_Parameters; }
187 };
188 
189 
190 #endif // __LOCAL_ASSEMBLING_2D__
std::vector< int > RhsSpace
which FE space corresponds to each right-hand side
Definition: LocalAssembling2D.h:75
std::vector< int > FESpaceNumber
for each term, there is one FESpace2D asociated with that term
Definition: LocalAssembling2D.h:66
bool * GetNeeds2ndDerivatives() const
Definition: LocalAssembling2D.h:167
void set_parameters_for_nse(LocalAssembling2D_type type)
CoeffFct2D * Coeffs
Definition: LocalAssembling2D.h:78
int N_Terms
number of terms
Definition: LocalAssembling2D.h:50
TFEFunction2D ** FEFunctions2D
Definition: LocalAssembling2D.h:110
AssembleFctParam2D * AssembleParam
function doing the real assembling using parameters from argument list
Definition: LocalAssembling2D.h:82
store cells in an array, used by cell iterators
Definition: Collection.h:18
ManipulateFct2D * Manipulate
Definition: LocalAssembling2D.h:85
void GetLocalForms(int N_Points, double *weights, double *AbsDetjk, 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.)
std::vector< MultiIndex2D > Derivatives
multiindices for derivatives of ansatz and test functions
Definition: LocalAssembling2D.h:63
std::string name
Definition: LocalAssembling2D.h:47
int colSpaceOfMat(int i) const
Definition: LocalAssembling2D.h:179
std::vector< int > BeginParameter
Definition: LocalAssembling2D.h:104
double ** OrigValues
Definition: LocalAssembling2D.h:91
std::vector< ParamFct * > ParameterFct
Definition: LocalAssembling2D.h:101
Definition: LocalAssembling2D.h:43
double *** AllOrigValues
Definition: LocalAssembling2D.h:88
std::vector< int > FEValue_FctIndex
Definition: LocalAssembling2D.h:116
LocalAssembling2D(LocalAssembling2D_type type, TFEFunction2D **fefunctions2d, CoeffFct2D *coeffs)
information for finite element data structure
Definition: BaseCell.h:25
int N_FEValues
Definition: LocalAssembling2D.h:113
bool * Needs2ndDerivatives
for each space we store a bool indicatin if second derivatives are needed
Definition: LocalAssembling2D.h:57
int rowSpaceOfMat(int i) const
Definition: LocalAssembling2D.h:175
void GetParameters(int n_points, TCollection *Coll, TBaseCell *cell, int cellnum, double *x, double *y, double **Parameters)
int N_ParamFct
Definition: LocalAssembling2D.h:98
std::vector< int > RowSpace
which FE space corresponds to each row
Definition: LocalAssembling2D.h:69
CoeffFct2D * GetCoeffFct() const
Definition: LocalAssembling2D.h:171
const std::string & get_name() const
Definition: LocalAssembling2D.h:163
std::vector< MultiIndex2D > FEValue_MultiIndex
Definition: LocalAssembling2D.h:119
Definition: FEFunction2D.h:24
int N_Spaces
number of involved spaces (typically one or two)
Definition: LocalAssembling2D.h:53
std::vector< int > ColumnSpace
which FE space corresponds to each column
Definition: LocalAssembling2D.h:72