15 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
16 boost::shared_ptr<PhysicalEquations> physics_ptr)
34 boost::shared_ptr<DataAtIntegrationPts>
36 boost::shared_ptr<PhysicalEquations>
45 boost::shared_ptr<DataAtIntegrationPts>
49 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
54 std::string row_field, std::string col_field,
55 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const char type,
56 const bool assemble_symmetry,
ScaleOff scale_off = []() {
return 1; })
57 : T(row_field, col_field,
type, false),
85 double *vec_ptr =
nF.data().data();
87 int *ind_ptr = data.
getIndices().data().data();
88 CHKERR VecSetValues(this->getTSf(), nb_dofs, ind_ptr, vec_ptr, ADD_VALUES);
92 virtual MoFEMErrorCode
assemble(
int, EntityType,
106 EntityType, EntityType,
111 const auto row_nb_dofs = row_data.
getIndices().size();
112 const auto col_nb_dofs = col_data.
getIndices().size();
113 transposeK.resize(col_nb_dofs, row_nb_dofs,
false);
118 CHKERR MatSetValues<AssemblyTypeSelector<A>>(this->getTSB(), row_data,
119 col_data,
K, ADD_VALUES);
121 CHKERR MatSetValues<AssemblyTypeSelector<A>>(
122 this->getTSB(), col_data, row_data,
transposeK, ADD_VALUES);
139 MoFEMErrorCode
doWork(
int row_side,
int col_side, EntityType row_type,
140 EntityType col_type,
EntData &row_data,
150 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
161 MoFEMErrorCode
assemble(
int row_side,
int col_side, EntityType row_type,
162 EntityType col_type,
EntData &row_data,
167 constexpr bool store_matrices =
false;
168 if constexpr (store_matrices) {
170 m.resize(
K.size1(),
K.size2(),
false);
174 m.resize(
K.size2(),
K.size1(),
false);
182 static inline std::map<std::pair<std::string, std::string>, MatrixDouble>
191 using OpAssembleVolume::OpAssembleVolume;
195 "OpAssembleVolumePositiveDefine not implemented");
199 MoFEMErrorCode
doWork(
int row_side,
int col_side, EntityType row_type,
200 EntityType col_type,
EntData &row_data,
211 constexpr bool run_psd =
true;
215 auto higham_method_one_pass = [&](MatrixDouble &mat) {
218 const int size = (
n + 2) *
n;
220 double *work =
new double[size];
222 VectorDouble eig(
n, 0.0);
223 MatrixDouble eigen_vec = prod(trans(mat), mat);
225 eig.data().data(), work, lwork) > 0)
227 "The algorithm failed to compute eigenvalues.");
230 for (
auto &e : eig) {
231 constexpr double eps = std::numeric_limits<double>::epsilon();
232 e = std::max(std::sqrt(std::abs(e)),
eps);
235 auto diagonal_matrix =
236 ublas::diagonal_matrix<
double, ublas::row_major,
237 VecAllocator<double>>(
n, eig.data());
238 MatrixDouble symm_mat;
239 symm_mat = prod(trans(eigen_vec), diagonal_matrix);
240 symm_mat = prod(symm_mat, eigen_vec);
242 MatrixDouble hat_m = (mat + symm_mat) / 2.0;
247 auto hat_k = higham_method_one_pass(
K);
251 CHKERR assemble(row_side, col_side, row_type, col_type, row_data, col_data);
261 VectorPtr external_pressure_ptr,
262 boost::shared_ptr<ExternalStrainVec> external_strain_vec_ptr,
263 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv);
276 :
public ForcesAndSourcesCore::UserDataOperator {
283 boost::shared_ptr<DataAtIntegrationPts>
290 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
295 boost::shared_ptr<DataAtIntegrationPts>
301 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
303 std::fill(&doEntities[MBVERTEX], &doEntities[MBMAXTYPE],
false);
304 for (
auto t = moab::CN::TypeDimensionMap[
SPACE_DIM].first;
305 t <= moab::CN::TypeDimensionMap[
SPACE_DIM].second; ++
t)
306 doEntities[
t] =
true;
312 boost::shared_ptr<DataAtIntegrationPts>
318 std::string block_name,
Range block_entities,
319 std::array<double, 6> &reaction_vec)
326 boost::shared_ptr<DataAtIntegrationPts>
335 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
336 const double alpha,
const double rho)
348 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
349 double alpha_r,
double alpha_r0,
double alpha_omega,
350 double alpha_omega0,
double alpha_viscous_r,
351 double alpha_viscous_r0,
double alpha_viscous_omega,
352 double alpha_viscous_omega0)
374 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
383 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
392 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
397template <
int INTERP_ORDER>
400 std::string tag_name =
"")
402 std::fill(&doEntities[MBVERTEX], &doEntities[MBMAXTYPE],
false);
403 doEntities[MBVERTEX] =
true;
416 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
417 boost::shared_ptr<ScalingMethod> scaling_method_ptr)
428template <AssemblyType A>
430 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
432 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
436 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
437 boost::shared_ptr<BcDispVec> &bc_disp_ptr,
438 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
439 boost::shared_ptr<Range> ents_ptr =
nullptr)
440 :
OP(broken_base_side_data, ents_ptr), bcDispPtr(bc_disp_ptr),
441 scalingMethodsMap(smv) {}
451 using OP::OpDispBcImpl;
459template <AssemblyType A>
461 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
463 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
467 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
468 boost::shared_ptr<BcRotVec> &bc_rot_ptr,
469 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
470 boost::shared_ptr<Range> ents_ptr =
nullptr)
471 :
OP(broken_base_side_data, ents_ptr), bcRotPtr(bc_rot_ptr),
472 scalingMethodsMap(smv) {}
492 using OP::OpRotationBcImpl;
499 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
501 const std::string row_field, boost::shared_ptr<TractionBcVec> bc_data,
502 boost::shared_ptr<double> piola_scale_ptr,
503 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
504 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
505 row_field, row_field, FaceUserDataOperator::OPROW),
517 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
519 const std::string row_field, boost::shared_ptr<PressureBcVec> bc_data,
520 boost::shared_ptr<double> piola_scale_ptr,
521 boost::shared_ptr<MatrixDouble> hybrid_grad_disp,
522 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
523 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
524 row_field, row_field, FaceUserDataOperator::OPROW),
537template <AssemblyType A, IntegrationType I>
540template <AssemblyType A>
542 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBase {
545 typename FormsIntegrators<FaceUserDataOperator>::Assembly<
A>
::OpBase;
548 std::string row_field, boost::shared_ptr<PressureBcVec> bc_data,
549 boost::shared_ptr<MatrixDouble> hybrid_grad_disp,
550 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
551 :
OP(row_field, row_field,
OP::OPROWCOL), bcData(bc_data),
552 hybridGradDispPtr(hybrid_grad_disp), scalingMethodsMap(smv) {}
571 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
573 const std::string row_field,
574 boost::shared_ptr<AnalyticalTractionBcVec> bc_data,
575 boost::shared_ptr<double> piola_scale_ptr,
576 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv)
577 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
578 row_field, row_field, FaceUserDataOperator::OPROW),
585 boost::shared_ptr<AnalyticalTractionBcVec>
bcData;
591 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
594 typename FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase;
597 std::string row_field, boost::shared_ptr<MatrixDouble> hybrid_disp_ptr,
598 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_side_data_ptr,
599 boost::shared_ptr<SpringBcVec> bc_spring_ptr)
613 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBase {
615 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
A>
::OpBase;
618 boost::shared_ptr<SpringBcVec> bc_spring_ptr)
619 :
OP(row_field, row_field,
OP::OPROWCOL),
bcSpringPtr(bc_spring_ptr) {}
628 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
631 typename FormsIntegrators<FaceUserDataOperator>::Assembly<
A>
::OpBrokenBase;
634 std::string row_field,
635 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
636 boost::shared_ptr<SpringBcVec> bc_spring_ptr)
637 :
OP(row_field, broken_base_side_data, false, false, nullptr),
650template <AssemblyType A>
652 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase {
655 typename FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>
::OpBase;
658 std::string row_field, boost::shared_ptr<MatrixDouble> hybrid_disp_ptr,
659 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_side_data_ptr,
661 boost::shared_ptr<NormalDisplacementBcVec> &bc_disp_ptr,
662 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
663 boost::shared_ptr<Range> ents_ptr =
nullptr)
664 : FormsIntegrators<FaceUserDataOperator>::Assembly<PETSC>::
OpBase(
665 row_field, row_field,
OP::OPROW),
666 hybridDispPtr(hybrid_disp_ptr),
667 brokenBaseSideDataPtr(
668 broken_side_data_ptr),
669 bcDispPtr(bc_disp_ptr), scalingMethodsMap(smv) {}
680template <AssemblyType A>
682 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBase {
685 typename FormsIntegrators<FaceUserDataOperator>::Assembly<
A>
::OpBase;
688 std::string row_field,
689 boost::shared_ptr<NormalDisplacementBcVec> &bc_disp_ptr,
690 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
691 boost::shared_ptr<Range> ents_ptr =
nullptr)
692 :
OP(row_field, row_field,
OP::OPROWCOL), bcDispPtr(bc_disp_ptr),
693 scalingMethodsMap(smv) {}
701template <AssemblyType A>
703 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
705 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
709 std::string row_field,
710 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
711 boost::shared_ptr<NormalDisplacementBcVec> &bc_disp_ptr,
712 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
713 boost::shared_ptr<Range> ents_ptr =
nullptr)
714 :
OP(row_field, broken_base_side_data, false, false, ents_ptr),
715 bcDispPtr(bc_disp_ptr), scalingMethodsMap(smv) {}
725 using OP::OpNormalDispBcRhsImpl;
749template <AssemblyType A>
751 :
public FormsIntegrators<FaceUserDataOperator>::Assembly<A>
::OpBrokenBase {
753 using OP =
typename FormsIntegrators<FaceUserDataOperator>::Assembly<
757 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
758 boost::shared_ptr<AnalyticalDisplacementBcVec> &bc_disp_ptr,
759 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
760 boost::shared_ptr<Range> ents_ptr =
nullptr)
761 :
OP(broken_base_side_data, ents_ptr), bcDispPtr(bc_disp_ptr),
762 scalingMethodsMap(smv) {}
766 boost::shared_ptr<AnalyticalDisplacementBcVec>
bcDispPtr;
772 using OP::OpAnalyticalDispBcImpl;
780 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
781 const bool assemble_off =
false)
793 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
794 const double alpha,
const double rho)
804 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
805 const bool assemble_off =
false)
816 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
817 const bool assemble_off =
false)
827 using OpAssembleVolume::OpAssembleVolume;
829 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
830 const bool assemble_off)
840 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
841 [[maybe_unused]]
double alpha_omega)
852 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
853 const bool assemble_off)
863 std::string row_field, std::string col_field,
864 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
874 std::string row_field, std::string col_field,
875 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
double alpha_r,
877 double alpha_omega,
double alpha_omega0,
double alpha_viscous_r,
878 double alpha_viscous_r0,
double alpha_viscous_omega,
879 double alpha_viscous_omega0)
903 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
904 const bool has_nonhomogeneous_mat_block)
919 std::string row_field, std::string col_field,
920 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
921 const bool has_nonhomogeneous_mat_block)
936 std::string row_field, std::string col_field,
937 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
938 const bool has_nonhomogeneous_mat_block)
961 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
970 std::string row_field, std::string col_field,
971 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
983 std::string row_field, std::string col_field,
984 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const bool assemble_off)
995 :
public VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator {
997 using OP = VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator;
1004 std::vector<EntityHandle> &map_gauss_pts,
1005 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
1018 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
1025 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
1035 boost::shared_ptr<DataAtIntegrationPts> data_ptr)
1043 :
public VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator {
1046 using OP = VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator;
1054 boost::shared_ptr<DataAtIntegrationPts>
1059 :
public FaceElementForcesAndSourcesCore::UserDataOperator {
1062 using OP = FaceElementForcesAndSourcesCore::UserDataOperator;
1070 boost::shared_ptr<DataAtIntegrationPts>
1074template <
int FE_DIM,
int PROBLEM_DIM,
int SPACE_DIM>
struct AddHOOps;
1078 static MoFEMErrorCode
1079 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1080 std::vector<FieldSpace> space, std::string geom_field_name,
1081 boost::shared_ptr<Range> crack_front_edges_ptr);
1086 static MoFEMErrorCode
1087 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1088 std::vector<FieldSpace> space, std::string geom_field_name,
1089 boost::shared_ptr<Range> crack_front_edges_ptr);
1094 static MoFEMErrorCode
1095 add(boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
1096 std::vector<FieldSpace> space, std::string geom_field_name,
1097 boost::shared_ptr<Range> crack_front_edges_ptr,
1098 boost::shared_ptr<MatrixDouble> jac =
nullptr,
1099 boost::shared_ptr<VectorDouble> det =
nullptr,
1100 boost::shared_ptr<MatrixDouble> inv_jac =
nullptr);
1104 FormsIntegrators<FaceElementForcesAndSourcesCore::UserDataOperator>::
1105 Assembly<A>::LinearForm<GAUSS>::OpBaseTimesVector<1,
SPACE_DIM,
1108template <
typename OP>
1114 MoFEMErrorCode
doWork(
int row_side, EntityType row_type,
1115 EntitiesFieldData::EntData &row_data) {
1119 if (OP::entsPtr->find(this->getFEEntityHandle()) == OP::entsPtr->end())
1124 if (!BASE::brokenBaseSideData) {
1129 auto do_work_rhs = [
this](int, EntityType,
1130 EntitiesFieldData::EntData &row_data) {
1133 OP::nbRows = row_data.getIndices().size();
1137 OP::nbIntegrationPts = OP::getGaussPts().size2();
1139 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(row_data);
1141 OP::locF.resize(OP::nbRows,
false);
1144 CHKERR this->iNtegrate(row_data);
1146 CHKERR this->aSsemble(row_data);
1150 auto do_work_lhs = [
this](
int row_side,
int col_side, EntityType row_type,
1151 EntityType col_type,
1152 EntitiesFieldData::EntData &row_data,
1153 EntitiesFieldData::EntData &col_data) {
1156 auto check_if_assemble_transpose = [&] {
1158 if (OP::rowSide != OP::colSide || OP::rowType != OP::colType)
1162 }
else if (OP::assembleTranspose) {
1168 OP::rowSide = row_side;
1169 OP::rowType = row_type;
1170 OP::colSide = col_side;
1171 OP::colType = col_type;
1172 OP::nbCols = col_data.getIndices().size();
1173 OP::locMat.resize(OP::nbRows, OP::nbCols,
false);
1175 CHKERR this->iNtegrate(row_data, col_data);
1176 CHKERR this->aSsemble(row_data, col_data, check_if_assemble_transpose());
1180 switch (OP::opType) {
1183 OP::nbRows = row_data.getIndices().size();
1186 OP::nbIntegrationPts = OP::getGaussPts().size2();
1187 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(row_data);
1192 for (
auto &bd : *BASE::brokenBaseSideData) {
1195 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
1197 "base functions not set");
1204 row_side, bd.getSide(),
1207 row_type, bd.getType(),
1210 row_data, bd.getData()
1217 for (
auto &bd : *BASE::brokenBaseSideData) {
1218 fluxMatPtr = boost::shared_ptr<MatrixDouble>(BASE::brokenBaseSideData,
1220 CHKERR do_work_rhs(bd.getSide(), bd.getType(), bd.getData());
1226 (std::string(
"wrong op type ") +
1227 OpBaseDerivativesBase::OpTypeNames[
static_cast<unsigned char>(
1244 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1245 boost::shared_ptr<MatrixDouble> vec,
1246 ScalarFun beta_coeff = [](
double,
double,
double)
constexpr {
return 1; },
1247 boost::shared_ptr<Range> ents_ptr =
nullptr);
1255 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1256 ScalarFun beta_coeff = [](
double,
double,
double)
constexpr {
return 1; },
1257 boost::shared_ptr<Range> ents_ptr =
nullptr);
1260 MoFEMErrorCode
doWork(
int row_side, EntityType row_type,
1261 EntitiesFieldData::EntData &row_data);
1268 const std::string row_field,
1269 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1270 ScalarFun beta_coeff, boost::shared_ptr<Range> ents_ptr =
nullptr);
1273 MoFEMErrorCode
iNtegrate(EntitiesFieldData::EntData &data);
1278 FormsIntegrators<FaceElementForcesAndSourcesCore::UserDataOperator>::
1285 std::string row_field,
1286 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1287 ScalarFun beta,
const bool assmb_transpose,
const bool only_transpose,
1288 boost::shared_ptr<Range> ents_ptr =
nullptr);
1295 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1296 ScalarFun beta, boost::shared_ptr<Range> ents_ptr =
nullptr);
1298 MoFEMErrorCode
doWork(
int row_side, EntityType row_type,
1299 EntitiesFieldData::EntData &row_data);
1307 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1308 boost::shared_ptr<BcDispVec> &bc_disp_ptr,
1309 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
1310 ScalarFun tau_coeff, boost::shared_ptr<Range> ents_ptr =
nullptr)
1325 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1326 boost::shared_ptr<BcDispVec> &bc_disp_ptr, ScalarFun tau_coeff,
1327 boost::shared_ptr<Range> ents_ptr =
nullptr)
1328 :
OP(broken_base_side_data, tau_coeff, ents_ptr),
bcDispPtr(bc_disp_ptr) {
1342 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1343 boost::shared_ptr<AnalyticalDisplacementBcVec> &bc_disp_ptr,
1344 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
1345 ScalarFun tau_coeff, boost::shared_ptr<Range> ents_ptr =
nullptr)
1360 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1361 boost::shared_ptr<AnalyticalDisplacementBcVec> &bc_disp_ptr,
1362 ScalarFun tau_coeff, boost::shared_ptr<Range> ents_ptr =
nullptr)
1363 :
OP(broken_base_side_data, tau_coeff, ents_ptr),
bcDispPtr(bc_disp_ptr) {
1376 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1377 boost::shared_ptr<BcRotVec> &bc_ptr,
1378 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv,
1379 ScalarFun tau_coeff, boost::shared_ptr<Range> ents_ptr =
nullptr)
1394 boost::shared_ptr<std::vector<BrokenBaseSideData>> broken_base_side_data,
1395 boost::shared_ptr<BcRotVec> &bc_ptr, ScalarFun tau_coeff,
1396 boost::shared_ptr<Range> ents_ptr =
nullptr)
1397 :
OP(broken_base_side_data, tau_coeff, ents_ptr),
bcRotPtr(bc_ptr) {
FormsIntegrators< FaceElementForcesAndSourcesCore::UserDataOperator >::Assembly< A >::BiLinearForm< GAUSS >::OpMass< 1, SPACE_DIM > OpMassVectorFace
FormsIntegrators< VolUserDataOperator >::Assembly< A >::BiLinearForm< GAUSS >::OpMass< 9, 9 > OpStressGram_dBubble_dBubble
FormsIntegrators< FaceElementForcesAndSourcesCore::UserDataOperator >::Assembly< A >::LinearForm< GAUSS >::OpBaseTimesVector< 1, SPACE_DIM, SPACE_DIM > OpBaseTimesVectorFace
FormsIntegrators< VolUserDataOperator >::Assembly< A >::BiLinearForm< GAUSS >::OpMass< 3, 9 > OpStressGram_dP_dP
ForcesAndSourcesCore::UserDataOperator UserDataOperator
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
FieldSpace
approximation spaces
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
const double n
refractive index of diffusive medium
static __CLPK_integer lapack_dsyev(char jobz, char uplo, __CLPK_integer n, __CLPK_doublereal *a, __CLPK_integer lda, __CLPK_doublereal *w, __CLPK_doublereal *work, __CLPK_integer lwork)
constexpr double t
plate stiffness
constexpr auto field_name
OpBaseImpl< PETSC, EdgeEleOp > OpBase
FormsIntegrators< DomainEleOp >::Assembly< PETSC >::BiLinearForm< GAUSS >::OpMass< 1, SPACE_DIM > OpMass
[Only used with Hooke equation (linear material model)]
FTensor::Index< 'm', 3 > m
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name, boost::shared_ptr< Range > crack_front_edges_ptr)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name, boost::shared_ptr< Range > crack_front_edges_ptr)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, std::vector< FieldSpace > space, std::string geom_field_name, boost::shared_ptr< Range > crack_front_edges_ptr, boost::shared_ptr< MatrixDouble > jac=nullptr, boost::shared_ptr< VectorDouble > det=nullptr, boost::shared_ptr< MatrixDouble > inv_jac=nullptr)
bool sYmm
If true assume that matrix is symmetric structure.
Data on single entity (This is passed as argument to DataOperator::doWork)
const VectorInt & getIndices() const
Get global indices of degrees of freedom on entity.
@ OPROW
operator doWork function is executed on FE rows
@ OPROWCOL
operator doWork is executed on FE rows &columns
@ OPSPACE
operator do Work is execute on space data
boost::shared_ptr< AnalyticalDisplacementBcVec > bcDispPtr
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &data)
OpAnalyticalDispBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< AnalyticalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
MatrixDouble K
local tangent matrix
VectorDouble nF
local right hand side vector
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
virtual MoFEMErrorCode integrate(int, EntityType, EntData &data)
virtual MoFEMErrorCode assemble(EntData &data)
virtual MoFEMErrorCode integrate(EntData &, EntData &)
OpAssembleBasic(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
virtual MoFEMErrorCode integrate(EntData &)
const bool assembleSymmetry
virtual MoFEMErrorCode assemble(int, int, EntityType, EntityType, EntData &row_data, EntData &col_data)
boost::function< double()> ScaleOff
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpAssembleBasic(const FieldSpace space)
virtual MoFEMErrorCode assemble(int, EntityType, EntData &data)
OpAssembleBasic(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry, ScaleOff scale_off=[]() { return 1;})
MoFEMErrorCode doWork(int, EntityType, EntData &)
Operator for linear form, usually to calculate values on right hand side.
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
Operator for bi-linear form, usually to calculate values on left hand side.
typename OP::ScaleOff ScaleOff
static std::map< std::pair< std::string, std::string >, MatrixDouble > mapMatrix
MoFEMErrorCode assemble(int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
boost::shared_ptr< AnalyticalTractionBcVec > bcData
OpBrokenAnalyticalTractionBc(const std::string row_field, boost::shared_ptr< AnalyticalTractionBcVec > bc_data, boost::shared_ptr< double > piola_scale_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
boost::shared_ptr< double > piolaScalePtr
MoFEMErrorCode iNtegrate(EntData &data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode doWork(int row_side, EntityType row_type, EntitiesFieldData::EntData &row_data)
MoFEMErrorCode doWork(int row_side, EntityType row_type, EntitiesFieldData::EntData &row_data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< MatrixDouble > hybridGradDispPtr
OpBrokenPressureBcLhsImpl_dU(std::string row_field, boost::shared_ptr< PressureBcVec > bc_data, boost::shared_ptr< MatrixDouble > hybrid_grad_disp, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
boost::shared_ptr< PressureBcVec > bcData
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< MatrixDouble > hybridGradDispPtr
boost::shared_ptr< double > piolaScalePtr
MoFEMErrorCode iNtegrate(EntData &data)
OpBrokenPressureBc(const std::string row_field, boost::shared_ptr< PressureBcVec > bc_data, boost::shared_ptr< double > piola_scale_ptr, boost::shared_ptr< MatrixDouble > hybrid_grad_disp, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
boost::shared_ptr< PressureBcVec > bcData
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpBrokenTractionBc(const std::string row_field, boost::shared_ptr< TractionBcVec > bc_data, boost::shared_ptr< double > piola_scale_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
boost::shared_ptr< double > piolaScalePtr
boost::shared_ptr< TractionBcVec > bcData
MoFEMErrorCode iNtegrate(EntData &data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
Operator for linear form, usually to calculate values on right hand side.
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpCalculateEshelbyStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
Calculate q = 3 K_ext epsilon_ext at integration points.
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode doWork(int side, EntityType type, EntData &data) override
Operator for linear form, usually to calculate values on right hand side.
boost::shared_ptr< ExternalStrainVec > externalStrainVecPtr
VectorPtr externalPressurePtr
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
std::array< double, 6 > & reactionVec
OpCalculateReactionForces(boost::shared_ptr< DataAtIntegrationPts > data_ptr, std::string block_name, Range block_entities, std::array< double, 6 > &reaction_vec)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
Operator for linear form, usually to calculate values on right hand side.
OpCalculateRotationAndSpatialGradient(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
OpCalculateTractionFromSideEle(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpDispBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcDispVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< BcDispVec > bcDispPtr
MoFEMErrorCode iNtegrate(EntData &data)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
FaceElementForcesAndSourcesCore::UserDataOperator OP
OpFaceMaterialForce(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
Caluclate face material force and normal pressure at gauss points.
OpFaceSideMaterialForce(boost::shared_ptr< DataAtIntegrationPts > data_ptr)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
OpGetInternalStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr, std::string tag_name="")
MoFEMErrorCode iNtegrate(EntitiesFieldData::EntData &data)
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenBaseSideDataPtr
virtual MoFEMErrorCode evaluateLhs(EntData &data)=0
boost::shared_ptr< PhysicalEquations > physicsPtr
material physical equations
virtual MoFEMErrorCode evaluateRhs(EntData &data)=0
OpJacobian(FieldSpace space, UserDataOperator::OpType op_type)
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
OpJacobian(const bool eval_rhs, const bool eval_lhs, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
boost::shared_ptr< NormalDisplacementBcVec > bcDispPtr
OpNormalDispBcLhsImpl_dP(std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< NormalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpNormalDispBcLhsImpl_dU(std::string row_field, boost::shared_ptr< NormalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< NormalDisplacementBcVec > bcDispPtr
boost::shared_ptr< MatrixDouble > hybridDispPtr
OpNormalDispBcRhsImpl(std::string row_field, boost::shared_ptr< MatrixDouble > hybrid_disp_ptr, boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_side_data_ptr, boost::shared_ptr< NormalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< NormalDisplacementBcVec > bcDispPtr
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenBaseSideDataPtr
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &data)
std::vector< EntityHandle > & mapGaussPts
OpPostProcDataStructure(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, boost::shared_ptr< DataAtIntegrationPts > data_ptr, int sense)
moab::Interface & postProcMesh
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
MoFEMErrorCode doWork(int side, EntityType type, EntData &data)
VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator OP
OpRotationBcImpl(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcRotVec > &bc_rot_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
boost::shared_ptr< BcRotVec > bcRotPtr
Apply rotation boundary condition.
MoFEMErrorCode iNtegrate(EntData &data)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyBubble(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyDivTerm(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &data)
OpSpatialConsistencyP(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
OpSpatialConsistency_dBubble_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool has_nonhomogeneous_mat_block)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
const bool hasNonhomogeneousMatBlock
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dBubble_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool has_nonhomogeneous_mat_block)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
const bool hasNonhomogeneousMatBlock
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dBubble_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialConsistency_dP_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool has_nonhomogeneous_mat_block)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrateImpl(EntData &row_data, EntData &col_data)
const bool hasNonhomogeneousMatBlock
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialConsistency_dP_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialEquilibrium_dw_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialEquilibrium_dw_dw(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha, const double rho)
MoFEMErrorCode integrate(EntData &data)
OpSpatialEquilibrium(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha, const double rho)
MoFEMErrorCode integrate(EntData &row_data)
OpSpatialPhysicalInternalStress(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< ScalingMethod > scaling_method_ptr)
boost::shared_ptr< ScalingMethod > scalingMethodPtr
OpSpatialPhysical_du_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off=false)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPhysical_du_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialPrj_dx_dw(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialPrj_dx_dx(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
OpSpatialPrj(std::string row_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation_domega_dBubble(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
OpSpatialRotation_domega_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const bool assemble_off)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
double alphaViscousOmega0
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation_domega_domega(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_r, double alpha_r0, double alpha_omega, double alpha_omega0, double alpha_viscous_r, double alpha_viscous_r0, double alpha_viscous_omega, double alpha_viscous_omega0)
OpSpatialRotation_domega_du(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_omega)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
OpSpatialRotation(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, double alpha_r, double alpha_r0, double alpha_omega, double alpha_omega0, double alpha_viscous_r, double alpha_viscous_r0, double alpha_viscous_omega, double alpha_viscous_omega0)
double alphaViscousOmega0
MoFEMErrorCode integrate(EntData &data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< SpringBcVec > bcSpringPtr
OpSpringLhsBc_dP(std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< SpringBcVec > bc_spring_ptr)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< SpringBcVec > bcSpringPtr
OpSpringLhsBc_dU(std::string row_field, boost::shared_ptr< SpringBcVec > bc_spring_ptr)
boost::shared_ptr< MatrixDouble > hybridDispPtr
OpSpringRhsBc(std::string row_field, boost::shared_ptr< MatrixDouble > hybrid_disp_ptr, boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_side_data_ptr, boost::shared_ptr< SpringBcVec > bc_spring_ptr)
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< SpringBcVec > bcSpringPtr
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenBaseSideDataPtr
boost::weak_ptr< MatrixDouble > fluxMatPtr
MoFEMErrorCode doWork(int row_side, EntityType row_type, EntitiesFieldData::EntData &row_data)
OpBrokenBaseImpl< OP > BASE
OpStressGram_dBubble_dP(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr)
MoFEMErrorCode integrate(EntData &row_data, EntData &col_data)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< BcDispVec > bcDispPtr
OpTauStabilizationDispLhsBc(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcDispVec > &bc_disp_ptr, ScalarFun tau_coeff, boost::shared_ptr< Range > ents_ptr=nullptr)
OpTauStabilizationDispRhsBc(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcDispVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, ScalarFun tau_coeff, boost::shared_ptr< Range > ents_ptr=nullptr)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< BcDispVec > bcDispPtr
boost::shared_ptr< AnalyticalDisplacementBcVec > bcDispPtr
MoFEMErrorCode iNtegrate(EntData &data)
OpTauStabilizationOpAnalyticalDispBc(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< AnalyticalDisplacementBcVec > &bc_disp_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, ScalarFun tau_coeff, boost::shared_ptr< Range > ents_ptr=nullptr)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
boost::shared_ptr< AnalyticalDisplacementBcVec > bcDispPtr
OpTauStabilizationOpAnalyticalDispLhsBc(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< AnalyticalDisplacementBcVec > &bc_disp_ptr, ScalarFun tau_coeff, boost::shared_ptr< Range > ents_ptr=nullptr)
boost::shared_ptr< BcRotVec > bcRotPtr
OpTauStabilizationRotationLhsBc(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcRotVec > &bc_ptr, ScalarFun tau_coeff, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
std::map< std::string, boost::shared_ptr< ScalingMethod > > scalingMethodsMap
OpTauStabilizationRotationRhsBc(boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< BcRotVec > &bc_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv, ScalarFun tau_coeff, boost::shared_ptr< Range > ents_ptr=nullptr)
MoFEMErrorCode iNtegrate(EntData &data)
boost::shared_ptr< BcRotVec > bcRotPtr