32class FE:
public FE_ElementAssembly<SC,LO,GO,NO> {
36 typedef Teuchos::RCP<Domain_Type> DomainPtr_Type;
37 typedef Teuchos::RCP<const Domain_Type> DomainConstPtr_Type;
38 typedef std::vector<DomainConstPtr_Type> DomainConstPtr_vec_Type;
40 typedef Teuchos::RCP<Mesh<SC,LO,GO,NO> > MeshPtr_Type;
42 typedef Teuchos::RCP<MeshUnstr_Type> MeshUnstrPtr_Type;
45 typedef Teuchos::RCP<Elements_Type> ElementsPtr_Type;
46 typedef Teuchos::RCP<const Elements_Type> ElementsConstPtr_Type;
49 typedef Teuchos::RCP<Matrix_Type> MatrixPtr_Type;
51 typedef typename Matrix_Type::MapPtr_Type MapPtr_Type;
52 typedef typename Matrix_Type::MapConstPtr_Type MapConstPtr_Type;
55 typedef Teuchos::RCP<MultiVector_Type> MultiVectorPtr_Type;
56 typedef Teuchos::RCP<const MultiVector_Type> MultiVectorConstPtr_Type;
58 typedef std::vector<GO> vec_GO_Type;
59 typedef std::vector<vec_GO_Type> vec2D_GO_Type;
60 typedef std::vector<vec2D_GO_Type> vec3D_GO_Type;
61 typedef Teuchos::RCP<vec3D_GO_Type> vec3D_GO_ptr_Type;
63 typedef boost::function<void(
double* x,
double* res,
double t,
const double* parameters)> BC_func_Type;
66 typedef Teuchos::RCP<AssembleFE_Type> AssembleFEPtr_Type;
69 typedef Teuchos::RCP<AssembleFENavierStokes_Type> AssembleFENavierStokesPtr_Type;
72 typedef Teuchos::RCP<AssembleFEGeneralizedNewtonian_Type> AssembleFEGeneralizedNewtonianPtr_Type;
75 typedef Teuchos::RCP<AssembleFE_SCI_SMC_Active_Growth_Reorientation_Type> AssembleFE_SCI_SMC_Active_Growth_Reorientation_Ptr_Type;
77 typedef std::vector<AssembleFEPtr_Type> AssembleFEPtr_vec_Type;
80 typedef Teuchos::RCP<BlockMatrix_Type> BlockMatrixPtr_Type;
83 typedef Teuchos::RCP<BlockMultiVector_Type> BlockMultiVectorPtr_Type;
86 typedef Teuchos::RCP<SmallMatrix_Type> SmallMatrixPtr_Type;
90 FE(
bool saveAssembly=
false);
92 void assemblyIdentity(MatrixPtr_Type &A);
94 void assemblySurfaceRobinBC(
int dim,
97 MultiVectorPtr_Type u,
99 std::vector<SC> &funcParameter,
101 ParameterListPtr_Type params);
103 void assemblySurfaceIntegral(
int dim,
105 MultiVectorPtr_Type a,
106 std::string fieldType,
108 std::vector<SC>& funcParameter);
110 void assemblySurfaceIntegralExternal(
int dim,
112 MultiVectorPtr_Type f,
113 MultiVectorPtr_Type d_rep,
114 std::vector<SC>& funcParameter,
116 ParameterListPtr_Type params,
121 MultiVectorPtr_Type f,
122 MultiVectorPtr_Type d_rep,
123 MatrixPtr_Type &Kext,
124 std::vector<SC>& funcParameter,
126 ParameterListPtr_Type params,
129 void assemblySurfaceIntegralFlag(
int dim,
131 MultiVectorPtr_Type a,
132 std::string fieldType,
134 std::vector<SC>& funcParameter);
136 double assemblyResistanceBoundary(
int dim,
138 MultiVectorPtr_Type f,
139 MultiVectorPtr_Type u_rep,
140 vec_dbl_Type flowRate_vec,
141 std::vector<SC>& funcParameter,
143 ParameterListPtr_Type params,
145 double assemblyAbsorbingBoundary(
int dim,
147 MultiVectorPtr_Type f,
148 MultiVectorPtr_Type u_rep,
149 vec_dbl_Type flowRate_vec,
150 std::vector<SC>& funcParameter,
152 double areaOutlet_init,
154 ParameterListPtr_Type params,
157 double assemblyAbsorbingBoundaryPaper(
int dim,
159 MultiVectorPtr_Type f,
160 MultiVectorPtr_Type u_rep,
161 vec_dbl_Type flowRate_vec,
162 std::vector<SC>& funcParameter,
164 double areaOutlet_init,
166 ParameterListPtr_Type params,
168 double assemblyAbsorbingResistanceBoundary(
int dim,
170 MultiVectorPtr_Type f,
171 MultiVectorPtr_Type u_rep,
172 vec_dbl_Type flowRate_vec,
173 std::vector<SC>& funcParameter,
175 double areaOutlet_init,
176 ParameterListPtr_Type params,
178 void assemblyArea(
int dim,
183 int assemblyFlowRate(
int dim,
184 double &flowRateParabolic,
188 MultiVectorPtr_Type solution_rep,
191 void assemblyAverageVelocity(
int dim,
192 double &averageVelocity,
195 MultiVectorPtr_Type solution_rep,
217 void applyBTinv(vec3D_dbl_ptr_Type& dPhiIn,
218 vec3D_dbl_Type& dPhiOut,
221 void applyBTinv(vec3D_dbl_ptr_Type& dPhiIn,
222 vec3D_dbl_Type& dPhiOut,
225 void assemblyLaplace(
int Dimension,
229 bool callFillComplete =
true,
230 int FELocExternal = -1);
232 void assemblyMass(
int dim,
234 std::string fieldType,
236 bool callFillComplete =
true);
241 void assemblyMass(
int dim,
243 std::string fieldType,
246 bool callFillComplete =
true);
248 void assemblyLaplaceVecField(
int dim,
252 bool callFillComplete =
true);
254 void assemblyLaplaceVecFieldV2(
int dim,
258 bool callFillComplete =
true);
290 MultiVectorPtr_Type eModVec,
292 bool callFillComplete=
true);
294 void determineEMod(std::string FEType,
295 MultiVectorPtr_Type solution,
296 MultiVectorPtr_Type &eModVec,
297 DomainConstPtr_Type domain,
298 ParameterListPtr_Type params);
299 void assemblyLaplaceDiffusion(
int Dimension,
303 vec2D_dbl_Type diffusionTensor,
304 bool callFillComplete =
true,
305 int FELocExternal = -1);
307 void assemblyElasticityJacobianAndStressAceFEM(
int dim,
310 MultiVectorPtr_Type &f,
311 MultiVectorPtr_Type u,
312 ParameterListPtr_Type pList,
314 bool callFillComplete=
true);
316 void assemblyElasticityJacobianAceFEM(
int dim,
319 MultiVectorPtr_Type u,
320 std::string material_model,
324 bool callFillComplete=
true);
326 void assemblyElasticityStressesAceFEM(
int dim,
328 MultiVectorPtr_Type &f,
329 MultiVectorPtr_Type u,
330 std::string material_model,
334 bool callFillComplete=
true);
339 MultiVectorPtr_Type u,
340 bool callFillComplete);
345 MultiVectorPtr_Type u,
346 bool callFillComplete);
352 MultiVectorPtr_Type u,
353 bool callFillComplete);
359 MatrixPtr_Type &Bmat,
360 MatrixPtr_Type &BTmat,
361 MapConstPtr_Type map1,
362 MapConstPtr_Type map2,
363 bool callFillComplete =
true);
369 MatrixPtr_Type &Bmat,
370 MatrixPtr_Type &BTmat,
371 MapConstPtr_Type map1,
372 MapConstPtr_Type map2,
373 bool callFillComplete =
true);
380 bool callFillComplete =
true);
387 CoeffFuncDbl_Type func,
389 bool callFillComplete =
true);
397 bool callFillComplete =
true);
406 bool callFillComplete =
true);
417 MultiVectorPtr_Type w,
418 bool callFillComplete =
true);
423 void assemblyFSICoupling(
int dim,
429 MapConstPtr_Type map1,
430 MapConstPtr_Type map2,
431 bool callFillComplete =
true);
433 void assemblyDummyCoupling(
int dim,
437 bool callFillComplete);
442 void assemblyGeometryCoupling(
int dim,
446 MapConstPtr_Type map1,
447 MapConstPtr_Type map2,
448 MapConstPtr_Type map3,
449 bool callFillComplete =
true);
465 void assemblyShapeDerivativeVelocity(
int dim,
470 MultiVectorPtr_Type u,
471 MultiVectorPtr_Type w,
472 MultiVectorPtr_Type p,
476 bool callFillComplete =
true);
481 void assemblyShapeDerivativeDivergence(
int dim,
487 MapConstPtr_Type map1_unique,
488 MapConstPtr_Type map2_unique,
489 MultiVectorPtr_Type u,
490 bool callFillComplete =
true);
493 void assemblyRHS(
int dim,
495 MultiVectorPtr_Type a,
496 std::string fieldType,
498 std::vector<SC>& funcParameter
501 void assemblyRHSDegTest(
int dim,
503 MultiVectorPtr_Type a,
504 std::string fieldType,
506 std::vector<SC>& funcParameter,
509 void buildFullDPhi(vec3D_dbl_ptr_Type dPhi, Teuchos::Array<
SmallMatrix<double> >& dPhiMat);
511 void fillMatrixArray(
SmallMatrix<double> &matIn,
double* matArrayOut, std::string order,
int offset=0);
513 void epsilonTensor(vec_dbl_Type &basisValues,
SmallMatrix<SC> &epsilonValues,
int activeDof);
515 Teuchos::RCP<ElementSpec> es_;
529 void nh3d(
double* v,
double (*E),
double (*Nu),
double** F ,
double** Pmat,
double**** Amat);
540 void mr3d(
double* v,
double (*E),
double (*Nu),
double (*C),
double** F,
double** Pmat,
double**** Amat);
550 void stvk3d(
double* v,
double (*lam),
double (*mue),
double** F,
double** Pmat,
double**** Amat);
560 void stvk2d(
double* v,
double (*lam),
double (*mue),
double** F ,
double** Pmat,
double**** Amat);
576 void applyDiff(vec3D_dbl_Type& dPhiIn,
577 vec3D_dbl_Type& dPhiOut,
581 std::vector<Teuchos::RCP<DataElement> > ed_;