118 {
120
123
124 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
125
126
128 auto t_plastic_strain_rate =
130
131
132 const double vol = AssemblyDomainEleOp::getMeasure();
133
134 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
135
136 auto t_row_base = data.getFTensor0N();
137
138
139 auto t_coords = AssemblyDomainEleOp::getFTensor1CoordsAtGaussPts();
140
141
142 for (size_t gg = 0; gg != nb_integration_pts; ++gg) {
143
144 const double alpha =
145 t_w * vol *
147 t_stress(
i,
j) * t_plastic_strain_rate(
i,
j);
148
149
150 size_t rr = 0;
151 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
152 AssemblyDomainEleOp::locF[rr] += alpha * t_row_base;
153 ++t_row_base;
154 }
155 for (; rr < AssemblyDomainEleOp::nbRowBaseFunctions; ++rr)
156 ++t_row_base;
157 ++t_w;
158 ++t_coords;
159 ++t_stress;
160 ++t_plastic_strain_rate;
161 };
163}
#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', 3 > j