Finite Element Domain Decomposition Library
FEDDLib
Loading...
Searching...
No Matches
AssembleFE_SCI_SMC_Active_Growth_Reorientation_decl.hpp
1#ifndef AssembleFE_SCI_SMC_Active_Growth_Reorientation_DECL_hpp
2#define AssembleFE_SCI_SMC_Active_Growth_Reorientation_DECL_hpp
3
4#include "feddlib/core/AceFemAssembly/AssembleFE.hpp"
5#include "feddlib/core/AceFemAssembly/AssembleFEBlock.hpp"
6#include "feddlib/core/FEDDCore.hpp"
7#include "feddlib/core/LinearAlgebra/Matrix.hpp"
8#include "feddlib/core/LinearAlgebra/MultiVector.hpp"
9#include <stdio.h>
10#include <stdlib.h>
11#include <string.h>
12
13//#ifdef FEDD_HAVE_ACEGENINTERFACE
14//#include <aceinterface.h>
15//#include <ace2.h>
16//#endif
17
24
25
26namespace FEDD {
27
28template <class SC = default_sc, class LO = default_lo, class GO = default_go, class NO = default_no>
29class AssembleFE_SCI_SMC_Active_Growth_Reorientation : public AssembleFE<SC,LO,GO,NO> {
30 public:
31
32 typedef Matrix<SC,LO,GO,NO> Matrix_Type;
33 typedef Teuchos::RCP<Matrix_Type> MatrixPtr_Type;
34
35 typedef SmallMatrix<SC> SmallMatrix_Type;
36 typedef Teuchos::RCP<SmallMatrix_Type> SmallMatrixPtr_Type;
37
38 typedef MultiVector<SC,LO,GO,NO> MultiVector_Type;
39 typedef Teuchos::RCP<MultiVector_Type> MultiVectorPtr_Type;
40
41 typedef AssembleFE<SC,LO,GO,NO> AssembleFE_Type;
42
46 void assembleJacobian() override;
47
51 void assembleRHS() override;
52
57 void assembleJacobianBlock(LO i) override{};
58
59 void advanceInTime(double dt) override;
60
61 void getMassMatrix(SmallMatrixPtr_Type &massMatrix ){massMatrix=massMatrix_;};
62
63 protected:
64 AssembleFE_SCI_SMC_Active_Growth_Reorientation(int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type params,tuple_disk_vec_ptr_Type tuple);
65
66 private:
67
68 void assemble_SCI_SMC_Active_Growth_Reorientation(SmallMatrixPtr_Type &elementMatrix);
69
70
71 friend class AssembleFEFactory<SC,LO,GO,NO>; // Must have for specfic classes
72
73 std::string FEType_ ; // FEType of Disk
74
75 SmallMatrixPtr_Type massMatrix_;
76
77 int dofsSolid_ ; // Degrees of freedom per node
78 int dofsChem_;
79 int numNodesSolid_ ; // Number of nodes of element
80 int numNodesChem_ ; // Number of nodes of element
81
82
83 int dofsElement_; // "Dimension of return matrix"
84
85 int dofOrdering_; // Order of DOFs:
86 // dofOrdering = 1 -> 'u1 v1 w1 c1 u2 v2 w2 c2 ... un vn wn cn'
87 // dofOrdering = 2 -> 'u1 v1 w1 u2 v2 w2 ... un vn wn c1 c2 c3 ... cn'
88
89
90
91 int iCode_; // Integration Code
92 int historyLength_; // Length of history vector
93
94 vec_dbl_Type historyUpdated_;
95 vec_dbl_Type history_;
96
97 vec_dbl_Type solutionC_n_;
98 vec_dbl_Type solutionC_n1_;
99
100 vec2D_dbl_Type timeParametersVec_;
101 double numSegments_ ;
102 /*
103 fA -Fibre angle_1
104 $[Lambda]$C50 -LambdaC50_2
105 $[Gamma]$3 -Gamma3_3
106 $[Lambda]$BarCDotMax -LambdaBarCDotMax_4
107 $[Lambda]$BarCDotMin -LambdaBarCDotMin_5
108 $[Gamma]$2 -Gamma2_6
109 $[Gamma]$1 -Gamma1_7
110 $[Eta]$1 -Eta1_8
111 Ca50 -Ca50_9
112 k2 -K2_10
113 k5 -K5_11
114 k3 -K3_12
115 k4 -K4_13
116 k7 -K7_14
117 $[Kappa]$C -KappaC_15
118 $[Beta]$1 -Beta1_16
119 $[Mu]$a -MuA_17
120 $[Alpha]$ -Alpha_18
121 $[Epsilon]$1 -Epsilon1_19
122 $[Epsilon]$2 -Epsilon2_20
123 c1 -C1_21
124 $[Alpha]$1 -Alpha1_22
125 $[Alpha]$2 -Alpha2_23
126 $[Gamma]$6 -Gamma6_24"
127 "$[Lambda]$P50 -LambdaP50_25"
128 "kDotMin -KDotMin_26"
129 "$[Zeta]$1 -Zeta1_27"
130 "kDotMax -KDotMax_28"
131 "$[Gamma]$4 -Gamma4_29"
132 "$[Lambda]$BarDotPMin -LambdaBarDotPMin_30"
133 "$[Lambda]$BarDotPMax -LambdaBarDotPMax_31"
134 "$[Gamma]$5 -Gamma5_32"
135 "$[Zeta]$2 -Zeta2_33"
136 "$[CapitalDelta]$$[Lambda]$BarPMin -DeltaLambdaBarPMin_34"
137 "p1 -P1_35"
138 "p3 -P3_36"
139 "c50 -C50_37"
140 "d0 -D0_38"
141 "m -M_39"
142 "activeStartTime -ActiveStartTime_40"
143 "k$[Eta]$Plus -kEtaPlus_41"
144 "m$[Eta]$Plus -mEtaPlus_42"
145 "growthStartTime -growthStartTime_43"
146 "reorientationStartTime -reorientationStartTime_44"
147 "growthEndTime -growthEndTime_45"
148 "reorientationEndTime -reorientationEndTime_46"
149 "k$[Theta]$Plus -KThetaPlus_47"
150 "k$[Theta]$Minus -KThetaMinus_48"
151 "m$[Theta]$Plus -MThetaPlus_49"
152 "m$[Theta]$Minus -MThetaMinus_50"
153 "$[Theta]$Plus1 -ThetaPlus1_51"
154 "$[Theta]$Plus2 -ThetaPlus2_52"
155 "$[Theta]$Plus3 -ThetaPlus3_53"
156 "$[Theta]$Minus1 -ThetaMinus1_54"
157 "$[Theta]$Minus2 -ThetaMinus2_55"
158 "$[Theta]$Minus3 -ThetaMinus3_56"
159 "$[Rho]$ -Density_57"
160 */
161
162 double fA_;
163 double lambdaC50_;
164 double gamma3_;
165 double lambdaBarCDotMax_;
166 double lambdaBarCDotMin_;
167 double gamma2_;
168 double gamma1_;
169 double eta_;
170 double ca50_;
171 double k2_;
172 double k5_;
173 double k3_;
174 double k4_;
175 double k7_;
176 double kappa_;
177 double beta1_;
178 double muA_;
179 double beta2_;
180 double alpha2_;
181 double alpha3_;
182 double alpha1_;
183 double alpha4_;
184 double alpha5_;
185 double gamma6_ ;
186 double lambdaP50_;
187 double kDotMin_ ;
188 double zeta1_ ;
189 double kDotMax_ ;
190 double gamma4_ ;
191 double lambdaBarDotPMin_ ;
192 double lambdaBarDotPMax_ ;
193 double gamma5_;
194 double zeta2_;
195 double DeltaLambdaBarPMin_ ;
196 double p1_;
197 double p3_;
198 double c50_;
199 double d0_;
200 double m_;
201 double activeStartTime_;
202 double kEtaPlus_ ;
203 double mEtaPlus_ ;
204 double growthStartTime_ ;
205 double reorientationStartTime_ ;
206 double growthEndTime_ ;
207 double reorientationEndTime_ ;
208 double kThetaPlus_ ;
209 double kThetaMinus_ ;
210 double mThetaPlus_ ;
211 double mThetaMinus_ ;
212 double thetaPlus1_ ;
213 double thetaPlus2_ ;
214 double thetaPlus3_ ;
215 double thetaMinus1_ ;
216 double thetaMinus2_ ;
217 double thetaMinus3_ ;
218 double kMin_;
219 double rho_;
220};
221
222}
223#endif //AssembleFE_SCI_SMC_Active_Growth_Reorientation_DECL_hpp
This class allows for constructing AssembleFE objects.
Definition AssembleFEFactory_decl.hpp:37
Definition AssembleFE_SCI_SMC_Active_Growth_Reorientation_decl.hpp:29
void assembleJacobian() override
Assemble the element Jacobian matrix.
Definition AssembleFE_SCI_SMC_Active_Growth_Reorientation_def.hpp:194
void advanceInTime(double dt) override
This function is called every time the FEDDLib proceeds from one to the next time step....
Definition AssembleFE_SCI_SMC_Active_Growth_Reorientation_def.hpp:204
void assembleJacobianBlock(LO i) override
Assemble block parts of the element Jacobian matrix.
Definition AssembleFE_SCI_SMC_Active_Growth_Reorientation_decl.hpp:57
void assembleRHS() override
Assemble the element right hand side vector.
Definition AssembleFE_SCI_SMC_Active_Growth_Reorientation_def.hpp:228
AssembleFE(int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type parameters, tuple_disk_vec_ptr_Type tuple)
Definition AssembleFE_def.hpp:10
Definition Matrix_decl.hpp:32
Definition MultiVector_decl.hpp:36
This class represents a templated small Matrix of type T. Primarily created for 2x2 and 3x3 matrices....
Definition SmallMatrix.hpp:22
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5