924 auto ¶ms = commonDataPtr->blockParams;
926 const size_t nb_gauss_pts = DomainEleOp::getGaussPts().size2();
927 auto t_w = DomainEleOp::getFTensor0IntegrationWeight();
928 auto t_tau = getFTensor0FromVec(commonDataPtr->plasticTau);
929 auto t_tau_dot = getFTensor0FromVec(commonDataPtr->plasticTauDot);
930 auto t_f = getFTensor0FromVec(commonDataPtr->plasticSurface);
931 auto t_flow = getFTensor2SymmetricFromMat<DIM>(commonDataPtr->plasticFlow);
932 auto t_plastic_strain =
933 getFTensor2SymmetricFromMat<DIM>(commonDataPtr->plasticStrain);
935 getFTensor2SymmetricFromMat<DIM>(*(commonDataPtr->mStressPtr));
937 auto t_D = getFTensor4DdgFromMat<DIM, DIM, 0>(*commonDataPtr->mDPtr);
938 auto t_D_Op = getFTensor4DdgFromMat<DIM, DIM, 0>(*mDPtr);
940 auto t_temp = getFTensor0FromVec(TPCommonDataPtr->temperature);
947 t_flow_dir_dstress(
i,
j,
k,
l) =
948 1.5 * (t_diff_deviator(
M,
N,
i,
j) * t_diff_deviator(
M,
N,
k,
l));
949 t_flow_dir_dstrain(
i,
j,
k,
l) =
950 t_flow_dir_dstress(
i,
j,
m,
n) * t_D_Op(
m,
n,
k,
l);
955 commonDataPtr->resC.resize(nb_gauss_pts,
false);
956 commonDataPtr->resCdTau.resize(nb_gauss_pts,
false);
957 commonDataPtr->resCdStrain.resize(
size_symm, nb_gauss_pts,
false);
958 commonDataPtr->resCdPlasticStrain.resize(
size_symm, nb_gauss_pts,
false);
959 TPCommonDataPtr->resCdTemperature.resize(nb_gauss_pts,
false);
960 commonDataPtr->resFlow.resize(
size_symm, nb_gauss_pts,
false);
961 commonDataPtr->resFlowDtau.resize(
size_symm, nb_gauss_pts,
false);
966 TPCommonDataPtr->resFlowDtemp.resize(
size_symm, nb_gauss_pts,
false);
968 commonDataPtr->resC.clear();
969 commonDataPtr->resCdTau.clear();
970 commonDataPtr->resCdStrain.clear();
971 commonDataPtr->resCdPlasticStrain.clear();
972 TPCommonDataPtr->resCdTemperature.clear();
973 commonDataPtr->resFlow.clear();
974 commonDataPtr->resFlowDtau.clear();
975 commonDataPtr->resFlowDstrain.clear();
976 commonDataPtr->resFlowDstrainDot.clear();
977 TPCommonDataPtr->resFlowDtemp.clear();
979 auto t_res_c = getFTensor0FromVec(commonDataPtr->resC);
980 auto t_res_c_dtau = getFTensor0FromVec(commonDataPtr->resCdTau);
981 auto t_res_c_dstrain =
982 getFTensor2SymmetricFromMat<DIM>(commonDataPtr->resCdStrain);
983 auto t_res_c_plastic_strain =
984 getFTensor2SymmetricFromMat<DIM>(commonDataPtr->resCdPlasticStrain);
985 auto t_res_c_temperature =
986 getFTensor0FromVec(TPCommonDataPtr->resCdTemperature);
987 auto t_res_flow = getFTensor2SymmetricFromMat<DIM>(commonDataPtr->resFlow);
988 auto t_res_flow_dtau =
989 getFTensor2SymmetricFromMat<DIM>(commonDataPtr->resFlowDtau);
990 auto t_res_flow_dstrain =
991 getFTensor4DdgFromMat<DIM, DIM>(commonDataPtr->resFlowDstrain);
992 auto t_res_flow_dplastic_strain =
993 getFTensor4DdgFromMat<DIM, DIM>(commonDataPtr->resFlowDstrainDot);
994 auto t_res_flow_dtemp =
995 getFTensor2SymmetricFromMat<DIM>(TPCommonDataPtr->resFlowDtemp);
1007 ++t_res_c_plastic_strain;
1008 ++t_res_c_temperature;
1011 ++t_res_flow_dstrain;
1012 ++t_res_flow_dplastic_strain;
1018 auto get_avtive_pts = [&]() {
1019 int nb_points_avtive_on_elem = 0;
1020 int nb_points_on_elem = 0;
1022 auto t_tau = getFTensor0FromVec(commonDataPtr->plasticTau);
1023 auto t_tau_dot = getFTensor0FromVec(commonDataPtr->plasticTauDot);
1024 auto t_f = getFTensor0FromVec(commonDataPtr->plasticSurface);
1025 auto t_plastic_strain_dot =
1026 getFTensor2SymmetricFromMat<SPACE_DIM>(commonDataPtr->plasticStrainDot);
1027 auto t_temp = getFTensor0FromVec(TPCommonDataPtr->temperature);
1029 auto dt = this->getTStimeStep();
1031 for (
auto gg = 0; gg != nb_gauss_pts; ++gg) {
1034 w(eqiv, t_tau_dot, t_f,
1038 TPCommonDataPtr->temp0, t_temp),
1042 ++nb_points_on_elem;
1044 ++nb_points_avtive_on_elem;
1050 ++t_plastic_strain_dot;
1061 nb_points += nb_points_on_elem;
1062 if (nb_points_avtive_on_elem > 0) {
1064 active_points += nb_points_avtive_on_elem;
1065 if (nb_points_avtive_on_elem == nb_points_on_elem) {
1066 ++avtive_full_elems;
1070 if (nb_points_avtive_on_elem != nb_points_on_elem)
1076 if (DomainEleOp::getTSCtx() == TSMethod::TSContext::CTX_TSSETIJACOBIAN) {
1080 for (
auto gg = 0; gg != nb_gauss_pts; ++gg) {
1085 double c_dot_tau, c_sigma_y,
c, c_f, c_equiv;
1088 t_diff_eqiv(
i,
j) = 0.0;
1097 t_stress,
trace(t_stress),
1109template <
int DIM,
typename DomainEleOp>
1116 boost::shared_ptr<CommonData> common_data_ptr,
1117 boost::shared_ptr<MatrixDouble> mDPtr);
1119 boost::shared_ptr<MatrixDouble> mDPtr);
1124 boost::shared_ptr<MatrixDouble> mDPtr;
1125 boost::shared_ptr<CommonData> commonDataPtr;
1128template <
int DIM,
typename DomainEleOp>
1130 const std::string
field_name, boost::shared_ptr<CommonData> common_data_ptr,
1131 boost::shared_ptr<MatrixDouble> m_D_ptr)
1133 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {
1135 std::fill(&DomainEleOp::doEntities[MBEDGE],
1136 &DomainEleOp::doEntities[MBMAXTYPE],
false);
1139template <
int DIM,
typename DomainEleOp>
1140OpPlasticStressImpl<DIM, GAUSS, DomainEleOp>::OpPlasticStressImpl(
1141 boost::shared_ptr<CommonData> common_data_ptr,
1142 boost::shared_ptr<MatrixDouble> m_D_ptr)
1144 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {}
1147template <
int DIM,
typename DomainEleOp>
1149OpPlasticStressImpl<DIM, GAUSS, DomainEleOp>::doWork(
int side, EntityType type,
1158 const size_t nb_gauss_pts = commonDataPtr->mStrainPtr->size2();
1159 commonDataPtr->mStressPtr->resize((DIM * (DIM + 1)) / 2, nb_gauss_pts);
1160 auto t_D = getFTensor4DdgFromMat<DIM, DIM, 0>(*mDPtr);
1162 getFTensor2SymmetricFromMat<DIM>(*(commonDataPtr->mStrainPtr));
1163 auto t_plastic_strain =
1164 getFTensor2SymmetricFromMat<DIM>(commonDataPtr->plasticStrain);
1166 getFTensor2SymmetricFromMat<DIM>(*(commonDataPtr->mStressPtr));
1168 for (
size_t gg = 0; gg != nb_gauss_pts; ++gg) {
1170 t_D(
i,
j,
k,
l) * (t_strain(
k,
l) - t_plastic_strain(
k,
l));
1180template <
int DIM,
typename AssemblyDomainEleOp>
1184 boost::shared_ptr<CommonData> common_data_ptr,
1185 boost::shared_ptr<MatrixDouble> m_D_ptr);
1189 boost::shared_ptr<CommonData> commonDataPtr;
1190 boost::shared_ptr<MatrixDouble> mDPtr;
1193template <
int DIM,
typename AssemblyDomainEleOp>
1196 boost::shared_ptr<CommonData> common_data_ptr,
1197 boost::shared_ptr<MatrixDouble> m_D_ptr)
1199 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {}
1201template <
int DIM,
typename AssemblyDomainEleOp>
1204 EntitiesFieldData::EntData &data) {
1211 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
1214 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
1215 const auto nb_base_functions = data.getN().size2();
1217 auto t_res_flow = getFTensor2SymmetricFromMat<DIM>(commonDataPtr->resFlow);
1221 auto next = [&]() { ++t_res_flow; };
1223 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
1224 auto t_base = data.getFTensor0N();
1225 auto &nf = AssemblyDomainEleOp::locF;
1226 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
1227 double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
1231 t_rhs(L) = alpha * (t_res_flow(
i,
j) * t_L(
i,
j, L));
1234 auto t_nf = getFTensor1FromArray<size_symm, size_symm>(nf);
1236 for (; bb != AssemblyDomainEleOp::nbRows /
size_symm; ++bb) {
1237 t_nf(L) += t_base * t_rhs(L);
1241 for (; bb < nb_base_functions; ++bb)
1248template <
typename AssemblyDomainEleOp>
1252 boost::shared_ptr<CommonData> common_data_ptr,
1253 boost::shared_ptr<MatrixDouble> m_D_ptr);
1257 boost::shared_ptr<CommonData> commonDataPtr;
1258 boost::shared_ptr<MatrixDouble> mDPtr;
1261template <
typename AssemblyDomainEleOp>
1264 boost::shared_ptr<CommonData> common_data_ptr,
1265 boost::shared_ptr<MatrixDouble> m_D_ptr)
1267 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {}
1269template <
typename AssemblyDomainEleOp>
1272 EntitiesFieldData::EntData &data) {
1275 const size_t nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
1276 const size_t nb_base_functions = data.getN().size2();
1278 auto t_res_c = getFTensor0FromVec(commonDataPtr->resC);
1280 auto next = [&]() { ++t_res_c; };
1282 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
1283 auto &nf = AssemblyDomainEleOp::locF;
1284 auto t_base = data.getFTensor0N();
1285 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
1286 const double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
1288 const auto res = alpha * t_res_c;
1292 for (; bb != AssemblyDomainEleOp::nbRows; ++bb) {
1293 nf[bb] += t_base * res;
1296 for (; bb < nb_base_functions; ++bb)
1303template <
int DIM,
typename AssemblyDomainEleOp>
1307 const std::string row_field_name,
const std::string col_field_name,
1308 boost::shared_ptr<CommonData> common_data_ptr,
1309 boost::shared_ptr<MatrixDouble> m_D_ptr);
1310 MoFEMErrorCode
iNtegrate(EntitiesFieldData::EntData &row_data,
1311 EntitiesFieldData::EntData &col_data);
1314 boost::shared_ptr<CommonData> commonDataPtr;
1315 boost::shared_ptr<MatrixDouble> mDPtr;
1318template <
int DIM,
typename AssemblyDomainEleOp>
1321 const std::string row_field_name,
const std::string col_field_name,
1322 boost::shared_ptr<CommonData> common_data_ptr,
1323 boost::shared_ptr<MatrixDouble> m_D_ptr)
1326 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {
1327 AssemblyDomainEleOp::sYmm =
false;
1333 &mat(3 * rr + 0, 0), &mat(3 * rr + 0, 1), &mat(3 * rr + 0, 2),
1334 &mat(3 * rr + 1, 0), &mat(3 * rr + 1, 1), &mat(3 * rr + 1, 2),
1335 &mat(3 * rr + 2, 0), &mat(3 * rr + 2, 1), &mat(3 * rr + 2, 2)};
1341 &mat(6 * rr + 0, 0), &mat(6 * rr + 0, 1), &mat(6 * rr + 0, 2),
1342 &mat(6 * rr + 0, 3), &mat(6 * rr + 0, 4), &mat(6 * rr + 0, 5),
1343 &mat(6 * rr + 1, 0), &mat(6 * rr + 1, 1), &mat(6 * rr + 1, 2),
1344 &mat(6 * rr + 1, 3), &mat(6 * rr + 1, 4), &mat(6 * rr + 1, 5),
1345 &mat(6 * rr + 2, 0), &mat(6 * rr + 2, 1), &mat(6 * rr + 2, 2),
1346 &mat(6 * rr + 2, 3), &mat(6 * rr + 2, 4), &mat(6 * rr + 2, 5),
1347 &mat(6 * rr + 3, 0), &mat(6 * rr + 3, 1), &mat(6 * rr + 3, 2),
1348 &mat(6 * rr + 3, 3), &mat(6 * rr + 3, 4), &mat(6 * rr + 3, 5),
1349 &mat(6 * rr + 4, 0), &mat(6 * rr + 4, 1), &mat(6 * rr + 4, 2),
1350 &mat(6 * rr + 4, 3), &mat(6 * rr + 4, 4), &mat(6 * rr + 4, 5),
1351 &mat(6 * rr + 5, 0), &mat(6 * rr + 5, 1), &mat(6 * rr + 5, 2),
1352 &mat(6 * rr + 5, 3), &mat(6 * rr + 5, 4), &mat(6 * rr + 5, 5)};
1355template <
int DIM,
typename AssemblyDomainEleOp>
1357OpCalculatePlasticFlowLhs_dEPImpl<DIM, GAUSS, AssemblyDomainEleOp>::iNtegrate(
1358 EntitiesFieldData::EntData &row_data,
1359 EntitiesFieldData::EntData &col_data) {
1366 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
1370 auto &locMat = AssemblyDomainEleOp::locMat;
1372 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
1373 const auto nb_row_base_functions = row_data.getN().size2();
1375 auto t_res_flow_dstrain =
1376 getFTensor4DdgFromMat<DIM, DIM>(commonDataPtr->resFlowDstrain);
1377 auto t_res_flow_dplastic_strain =
1378 getFTensor4DdgFromMat<DIM, DIM>(commonDataPtr->resFlowDstrainDot);
1382 ++t_res_flow_dstrain;
1383 ++t_res_flow_dplastic_strain;
1386 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
1387 auto t_row_base = row_data.getFTensor0N();
1388 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
1389 double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
1394 alpha * (t_L(
i,
j, O) * ((t_res_flow_dplastic_strain(
i,
j,
k,
l) -
1395 t_res_flow_dstrain(
i,
j,
k,
l)) *
1400 for (; rr != AssemblyDomainEleOp::nbRows /
size_symm; ++rr) {
1403 auto t_col_base = col_data.getFTensor0N(gg, 0);
1404 for (
size_t cc = 0; cc != AssemblyDomainEleOp::nbCols /
size_symm; ++cc) {
1405 t_mat(O, L) += ((t_row_base * t_col_base) * t_res_mat(O, L));
1413 for (; rr < nb_row_base_functions; ++rr)
1420template <
int DIM,
typename AssemblyDomainEleOp>
1424 const std::string row_field_name,
const std::string col_field_name,
1425 boost::shared_ptr<CommonData> common_data_ptr,
1426 boost::shared_ptr<MatrixDouble> m_D_ptr);
1427 MoFEMErrorCode
iNtegrate(EntitiesFieldData::EntData &row_data,
1428 EntitiesFieldData::EntData &col_data);
1431 boost::shared_ptr<CommonData> commonDataPtr;
1432 boost::shared_ptr<MatrixDouble> mDPtr;
1435template <
int DIM,
typename AssemblyDomainEleOp>
1439 const std::string row_field_name,
const std::string col_field_name,
1440 boost::shared_ptr<CommonData> common_data_ptr,
1441 boost::shared_ptr<MatrixDouble> m_D_ptr);
1442 MoFEMErrorCode
iNtegrate(EntitiesFieldData::EntData &row_data,
1443 EntitiesFieldData::EntData &col_data);
1446 boost::shared_ptr<CommonData> commonDataPtr;
1447 boost::shared_ptr<MatrixDouble> mDPtr;
1450template <
int DIM,
typename AssemblyDomainEleOp>
1453 const std::string row_field_name,
const std::string col_field_name,
1454 boost::shared_ptr<CommonData> common_data_ptr,
1455 boost::shared_ptr<MatrixDouble> m_D_ptr)
1458 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {
1459 AssemblyDomainEleOp::sYmm =
false;
1465 &mat(3 * rr + 0, 0), &mat(3 * rr + 1, 0), &mat(3 * rr + 2, 0)};
1471 &mat(6 * rr + 0, 0), &mat(6 * rr + 1, 0), &mat(6 * rr + 2, 0),
1472 &mat(6 * rr + 3, 0), &mat(6 * rr + 4, 0), &mat(6 * rr + 5, 0)};
1475template <
int DIM,
typename AssemblyDomainEleOp>
1477OpCalculatePlasticFlowLhs_dTAUImpl<DIM, GAUSS, AssemblyDomainEleOp>::iNtegrate(
1478 EntitiesFieldData::EntData &row_data,
1479 EntitiesFieldData::EntData &col_data) {
1484 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
1487 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
1488 const size_t nb_row_base_functions = row_data.getN().size2();
1489 auto &locMat = AssemblyDomainEleOp::locMat;
1491 auto t_res_flow_dtau =
1492 getFTensor2SymmetricFromMat<DIM>(commonDataPtr->resFlowDtau);
1496 auto next = [&]() { ++t_res_flow_dtau; };
1498 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
1499 auto t_row_base = row_data.getFTensor0N();
1500 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
1501 double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
1504 t_res_vec(L) = alpha * (t_res_flow_dtau(
i,
j) * t_L(
i,
j, L));
1508 for (; rr != AssemblyDomainEleOp::nbRows /
size_symm; ++rr) {
1511 auto t_col_base = col_data.getFTensor0N(gg, 0);
1512 for (
size_t cc = 0; cc != AssemblyDomainEleOp::nbCols; cc++) {
1513 t_mat(L) += t_row_base * t_col_base * t_res_vec(L);
1519 for (; rr != nb_row_base_functions; ++rr)
1526template <
int DIM,
typename AssemblyDomainEleOp>
1530 const std::string row_field_name,
const std::string col_field_name,
1531 boost::shared_ptr<CommonData> common_data_ptr,
1532 boost::shared_ptr<MatrixDouble> mat_D_ptr);
1533 MoFEMErrorCode
iNtegrate(EntitiesFieldData::EntData &row_data,
1534 EntitiesFieldData::EntData &col_data);
1537 boost::shared_ptr<CommonData> commonDataPtr;
1538 boost::shared_ptr<MatrixDouble> mDPtr;
1541template <
int DIM,
typename AssemblyDomainEleOp>
1544 const std::string row_field_name,
const std::string col_field_name,
1545 boost::shared_ptr<CommonData> common_data_ptr,
1546 boost::shared_ptr<MatrixDouble> m_D_ptr)
1549 commonDataPtr(common_data_ptr), mDPtr(m_D_ptr) {
1550 AssemblyDomainEleOp::sYmm =
false;
1555 &mat(0, 0), &mat(0, 1), &mat(0, 2)};
1560 &mat(0, 0), &mat(0, 1), &mat(0, 2), &mat(0, 3), &mat(0, 4), &mat(0, 5)};
1563template <
int DIM,
typename AssemblyDomainEleOp>
1565OpCalculateConstraintsLhs_dEPImpl<DIM, GAUSS, AssemblyDomainEleOp>::iNtegrate(
1566 EntitiesFieldData::EntData &row_data,
1567 EntitiesFieldData::EntData &col_data) {
1572 constexpr auto size_symm = (DIM * (DIM + 1)) / 2;
1575 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
1576 const auto nb_row_base_functions = row_data.getN().size2();
1579 getFTensor2SymmetricFromMat<SPACE_DIM>(commonDataPtr->resCdStrain);
1580 auto t_c_dplastic_strain =
1581 getFTensor2SymmetricFromMat<SPACE_DIM>(commonDataPtr->resCdPlasticStrain);
1585 ++t_c_dplastic_strain;
1590 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
1591 auto t_row_base = row_data.getFTensor0N();
1592 for (
auto gg = 0; gg != nb_integration_pts; ++gg) {
1593 const double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
1598 t_L(
i,
j, L) * (t_c_dplastic_strain(
i,
j) - t_c_dstrain(
i,
j));
1604 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
1605 const auto row_base = alpha * t_row_base;
1606 auto t_col_base = col_data.getFTensor0N(gg, 0);
1607 for (
size_t cc = 0; cc != AssemblyDomainEleOp::nbCols /
size_symm; cc++) {
1608 t_mat(L) += (row_base * t_col_base) * t_res_vec(L);
1614 for (; rr != nb_row_base_functions; ++rr)
1621template <
typename AssemblyDomainEleOp>
1625 const std::string row_field_name,
const std::string col_field_name,
1626 boost::shared_ptr<CommonData> common_data_ptr);
1627 MoFEMErrorCode
iNtegrate(EntitiesFieldData::EntData &row_data,
1628 EntitiesFieldData::EntData &col_data);
1631 boost::shared_ptr<CommonData> commonDataPtr;
1634template <
typename AssemblyDomainEleOp>
1637 const std::string row_field_name,
const std::string col_field_name,
1638 boost::shared_ptr<CommonData> common_data_ptr)
1641 commonDataPtr(common_data_ptr) {
1642 AssemblyDomainEleOp::sYmm =
false;
1645template <
typename AssemblyDomainEleOp>
1647OpCalculateConstraintsLhs_dTAUImpl<GAUSS, AssemblyDomainEleOp>::iNtegrate(
1648 EntitiesFieldData::EntData &row_data,
1649 EntitiesFieldData::EntData &col_data) {
1652 const auto nb_integration_pts = AssemblyDomainEleOp::getGaussPts().size2();
1653 const auto nb_row_base_functions = row_data.getN().size2();
1655 auto t_res_c_dtau = getFTensor0FromVec(commonDataPtr->resCdTau);
1656 auto next = [&]() { ++t_res_c_dtau; };
1658 auto t_w = AssemblyDomainEleOp::getFTensor0IntegrationWeight();
1659 auto t_row_base = row_data.getFTensor0N();
1660 for (
size_t gg = 0; gg != nb_integration_pts; ++gg) {
1661 const double alpha = AssemblyDomainEleOp::getMeasure() * t_w;
1664 const auto res = alpha * (t_res_c_dtau);
1667 auto mat_ptr = AssemblyDomainEleOp::locMat.data().begin();
1669 for (; rr != AssemblyDomainEleOp::nbRows; ++rr) {
1670 auto t_col_base = col_data.getFTensor0N(gg, 0);
1671 for (
size_t cc = 0; cc != AssemblyDomainEleOp::nbCols; ++cc) {
1672 *mat_ptr += t_row_base * t_col_base * res;
1678 for (; rr < nb_row_base_functions; ++rr)