130 {
132
137
138 auto t_w = this->getFTensor0IntegrationWeight();
139
140 auto t_row_base = row_data.getFTensor1N<3>();
141
146
148
149 auto t_grad = getFTensor2FromMat<DIM, DIM>(*(
matGradPtr));
150
151
152 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
153
154 for (size_t gg = 0; gg != AssemblyDomainEleOp::nbIntegrationPts; ++gg) {
155
157 auto t_J = determinantTensor(t_F);
158
159 t_right_Cauchy_Green(M, L) =
162
163 const double alpha = this->getMeasure() * t_w;
164
165 t_Kinv_over_J(M, L) =
167 t_J) *
168 t_right_Cauchy_Green(M, L);
169
170 size_t rr = 0;
171 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
172 t_Kinv_over_J_row_base(L) = t_Kinv_over_J(M, L) * t_row_base(M);
173 auto t_col_base = col_data.getFTensor1N<3>(gg, 0);
174 for (size_t cc = 0; cc != AssemblyDomainEleOp::nbCols; ++cc) {
175 this->locMat(rr, cc) += t_Kinv_over_J_row_base(L) * t_col_base(L);
176 ++t_col_base;
177 }
178 ++t_row_base;
179 }
180 for (; rr < AssemblyDomainEleOp::nbRowBaseFunctions; ++rr)
181 ++t_row_base;
182
183 ++t_w;
184 ++t_coords;
185 ++t_grad;
186 }
187
189}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'J', DIM1 > J
FTensor::Index< 'M', 3 > M