118 getFTensor2SymmetricFromMat<SPACE_DIM>(
commonDataPtr->plasticFlow);
120 auto t_plastic_strain_dot =
121 getFTensor2SymmetricFromMat<SPACE_DIM>(
commonDataPtr->plasticStrainDot);
125 getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM, 0>(*
commonDataPtr->mDPtr);
128 const size_t nb_integration_pts = data.getN().size1();
129 const size_t nb_base_functions = data.getN().size2();
130 auto t_w = getFTensor0IntegrationWeight();
131 auto t_base = data.getFTensor0N();
135 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
136 double alpha = getMeasure() * t_w;
140 const double tau_dot = t_tau_dot;
143 t_flow_stress_diff(
i,
j) = t_D(
i,
j,
k,
l) * (t_plastic_strain_dot(
k,
l) -
144 t_tau_dot * t_flow(
k,
l));
148 t_nf(
i,
j) += (
alpha * t_base) * t_flow_stress_diff(
i,
j);
152 for (; bb < nb_base_functions; ++bb)
156 ++t_plastic_strain_dot;
#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()
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
static FTensor::Tensor2< FTensor::PackPtr< double *, 3 >, 2, 2 > get_nf(VectorDouble &nf, FTensor::Number< 2 >)
FTensor::Index< 'j', SPACE_DIM > j
[Common data]
FTensor::Index< 'l', SPACE_DIM > l
FTensor::Index< 'k', SPACE_DIM > k
FTensor::Index< 'i', SPACE_DIM > i
VectorDouble locF
local entity vector
int nbRows
number of dofs on rows