51 assert(e); Q_UNUSED(N); Q_UNUSED(X);
56 int d = GmpFemPhysicsCommon::nodeDim();
71 assert(Bu.n_rows == 2*d && Bu.n_cols == e->
numNodes()*d);
82 if (modeLD ==
"totalLagrangian")
84 for (
int i = 0; i < e->
numNodes(); i++)
89 Bu(0, l) = F(0, 0)*B(0, i);
90 Bu(1, l) = F(0, 1)*B(1, i);
91 Bu(3, l) = F(0, 0)*B(1, i) + F(0, 1)*B(0, i);
93 Bu(0, k) = F(1, 0)*B(0, i);
94 Bu(1, k) = F(1, 1)*B(1, i);
95 Bu(3, k) = F(1, 0)*B(1, i) + F(1, 1)*B(0, i);
98 else if(modeLD ==
"updatedLagrangian")
100 for (
int i = 0; i < e->
numNodes(); i++)
115 if (modeLD ==
"totalLagrangian")
117 for (
int i = 0; i < e->
numNodes(); i++)
123 Bu(0, k) = F(0, 0)*B(0, i);
124 Bu(1, k) = F(0, 1)*B(1, i);
125 Bu(2, k) = F(0, 2)*B(2, i);
126 Bu(3, k) = F(0, 0)*B(1, i) + F(0, 1)*B(0, i);
127 Bu(4, k) = F(0, 2)*B(0, i) + F(0, 0)*B(2, i);
128 Bu(5, k) = F(0, 1)*B(2, i) + F(0, 2)*B(1, i);
130 Bu(0, l) = F(1, 0)*B(0, i);
131 Bu(1, l) = F(1, 1)*B(1, i);
132 Bu(2, l) = F(1, 2)*B(2, i);
133 Bu(3, l) = F(1, 0)*B(1, i) + F(1, 1)*B(0, i);
134 Bu(4, l) = F(1, 2)*B(0, i) + F(1, 0)*B(2, i);
135 Bu(5, l) = F(1, 1)*B(2, i) + F(1, 2)*B(1, i);
137 Bu(0, m) = F(2, 0)*B(0, i);
138 Bu(1, m) = F(2, 1)*B(1, i);
139 Bu(2, m) = F(2, 2)*B(2, i);
140 Bu(3, m) = F(2, 0)*B(1, i) + F(2, 1)*B(0, i);
141 Bu(4, m) = F(2, 2)*B(0, i) + F(2, 0)*B(2, i);
142 Bu(5, m) = F(2, 1)*B(2, i) + F(2, 2)*B(1, i);
145 else if (modeLD ==
"updatedLagrangian")
147 for (
int i = 0; i < e->
numNodes(); i++)
235 Q_UNUSED(e); Q_UNUSED(X0); Q_UNUSED(Xt); Q_UNUSED(N);
238 assert(F.n_rows == 3 && F.n_cols == 3);
242 int d = GmpFemPhysicsCommon::nodeDim();
255 dXdzeta = J0.submat(0, 1, 1, 2);
256 dXdzeta.each_row() -= J0.submat(2, 1, 2, 2);
259 dxdzeta = Jt.submat(0, 1, 1, 2);
260 dxdzeta.each_row() -= Jt.submat(2, 1, 2, 2);
263 Ftemp = arma::solve(dXdzeta, dxdzeta);
264 F(arma::span(0, 1), arma::span(0, 1)) = Ftemp.t();
269 Ftemp = arma::solve(J0, Jt);
270 F(arma::span(0, 1), arma::span(0, 1)) = Ftemp.t();
284 dXdzeta = J0.submat(0, 1, 2, 3);
285 dXdzeta.each_row() -= J0.submat(3, 1, 3, 3);
288 dxdzeta = Jt.submat(0, 1, 2, 3);
289 dxdzeta.each_row() -= Jt.submat(3, 1, 3, 3);
292 Ftemp = arma::solve(dXdzeta, dxdzeta);
298 Ftemp = arma::solve(J0, Jt);
305 return arma::det(F) > 0;