|
| v0.14.0
|
#include <users_modules/eshelbian_plasticit/src/EshelbianPlasticity.hpp>
|
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
| Getting interface of core database. More...
|
|
| EshelbianCore (MoFEM::Interface &m_field) |
|
virtual | ~EshelbianCore () |
|
MoFEMErrorCode | getOptions () |
|
template<typename BC > |
MoFEMErrorCode | getBc (boost::shared_ptr< BC > &bc_vec_ptr, const std::string block_name, const int nb_attributes) |
|
MoFEMErrorCode | getSpatialDispBc () |
| [Getting norms] More...
|
|
MoFEMErrorCode | getSpatialRotationBc () |
|
MoFEMErrorCode | getSpatialTractionBc () |
|
MoFEMErrorCode | getTractionFreeBc (const EntityHandle meshset, boost::shared_ptr< TractionFreeBc > &bc_ptr, const std::string contact_set_name) |
| Remove all, but entities where kinematic constrains are applied. More...
|
|
MoFEMErrorCode | getSpatialTractionFreeBc (const EntityHandle meshset=0) |
|
MoFEMErrorCode | addFields (const EntityHandle meshset=0) |
|
MoFEMErrorCode | projectGeometry (const EntityHandle meshset=0) |
|
MoFEMErrorCode | addVolumeFiniteElement (const EntityHandle meshset=0) |
|
MoFEMErrorCode | addBoundaryFiniteElement (const EntityHandle meshset=0) |
|
MoFEMErrorCode | addDMs (const BitRefLevel bit=BitRefLevel().set(0), const EntityHandle meshset=0) |
|
MoFEMErrorCode | addMaterial_HMHHStVenantKirchhoff (const int tape, const double lambda, const double mu, const double sigma_y) |
|
MoFEMErrorCode | addMaterial_HMHMooneyRivlin (const int tape, const double alpha, const double beta, const double lambda, const double sigma_y) |
|
MoFEMErrorCode | addMaterial_HMHNeohookean (const int tape, const double c10, const double K) |
|
MoFEMErrorCode | addMaterial_Hencky (double E, double nu) |
|
MoFEMErrorCode | setBaseVolumeElementOps (const int tag, const bool do_rhs, const bool do_lhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe) |
|
MoFEMErrorCode | setVolumeElementOps (const int tag, const bool add_elastic, const bool add_material, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe_lhs) |
|
MoFEMErrorCode | setFaceElementOps (const bool add_elastic, const bool add_material, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs) |
|
MoFEMErrorCode | setContactElementRhsOps (boost::shared_ptr< ContactTree > &fe_contact_tree) |
|
MoFEMErrorCode | setElasticElementOps (const int tag) |
|
MoFEMErrorCode | setElasticElementToTs (DM dm) |
|
MoFEMErrorCode | solveElastic (TS ts, Vec x) |
|
MoFEMErrorCode | postProcessResults (const int tag, const std::string file) |
|
MoFEMErrorCode | gettingNorms () |
| [Getting norms] More...
|
|
virtual MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const =0 |
|
template<class IFACE > |
MoFEMErrorCode | registerInterface (bool error_if_registration_failed=true) |
| Register interface. More...
|
|
template<class IFACE > |
MoFEMErrorCode | getInterface (IFACE *&iface) const |
| Get interface reference to pointer of interface. More...
|
|
template<class IFACE > |
MoFEMErrorCode | getInterface (IFACE **const iface) const |
| Get interface pointer to pointer of interface. More...
|
|
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type = 0> |
IFACE | getInterface () const |
| Get interface pointer to pointer of interface. More...
|
|
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0> |
IFACE | getInterface () const |
| Get reference to interface. More...
|
|
template<class IFACE > |
IFACE * | getInterface () const |
| Function returning pointer to interface. More...
|
|
virtual | ~UnknownInterface ()=default |
|
- Examples
- ep.cpp.
Definition at line 894 of file EshelbianPlasticity.hpp.
◆ EshelbianCore()
◆ ~EshelbianCore()
EshelbianPlasticity::EshelbianCore::~EshelbianCore |
( |
| ) |
|
|
virtualdefault |
◆ addBoundaryFiniteElement()
- Examples
- ep.cpp.
Definition at line 912 of file EshelbianPlasticity.cpp.
915 auto set_fe_adjacency = [&](
auto fe_name) {
918 boost::make_shared<ParentFiniteElementAdjacencyFunctionSkeleton<2>>(
926 auto add_field_to_fe = [
this](
const std::string fe,
938 Range natural_bc_elements;
941 natural_bc_elements.merge(
v.faces);
946 natural_bc_elements.merge(
v.faces);
951 natural_bc_elements.merge(
v.faces);
962 auto get_skin = [&](
auto &body_ents) {
965 CHKERR skin.find_skin(0, body_ents,
false, skin_ents);
969 auto filter_true_skin = [&](
auto &&skin) {
971 ParallelComm *pcomm =
973 CHKERR pcomm->filter_pstatus(skin, PSTATUS_SHARED | PSTATUS_MULTISHARED,
974 PSTATUS_NOT, -1, &boundary_ents);
975 return boundary_ents;
982 auto skin = filter_true_skin(get_skin(body_ents));
1034 Range front_elements;
1036 Range front_elements_layer;
1038 front_elements_layer,
1039 moab::Interface::UNION);
1040 front_elements.merge(front_elements_layer);
1041 front_edges.clear();
1044 moab::Interface::UNION);
1048 Range front_elements_faces;
1050 true, front_elements_faces,
1051 moab::Interface::UNION);
1052 auto body_skin = filter_true_skin(get_skin(body_ents));
1053 auto front_elements_skin = filter_true_skin(get_skin(front_elements));
1054 Range material_skeleton_faces =
1055 subtract(front_elements_faces, front_elements_skin);
1056 material_skeleton_faces.merge(intersect(front_elements_skin, body_skin));
1061 front_elements_skin);
1063 material_skeleton_faces);
◆ addDMs()
- Examples
- ep.cpp.
Definition at line 1101 of file EshelbianPlasticity.cpp.
1125 auto remove_dofs_on_broken_skin = [&](
const std::string prb_name) {
1127 for (
int d : {0, 1, 2}) {
1128 std::vector<boost::weak_ptr<NumeredDofEntity>> dofs_to_remove;
1130 ->getSideDofsOnBrokenSpaceEntities(
1141 CHKERR remove_dofs_on_broken_skin(
"ESHELBY_PLASTICITY");
1177 auto set_zero_block = [&]() {
1207 auto set_section = [&]() {
1209 PetscSection section;
1214 CHKERR PetscSectionDestroy(§ion);
1231 ->pushMarkDOFsOnEntities<DisplacementCubitBcData>(
◆ addFields()
- Examples
- ep.cpp.
Definition at line 483 of file EshelbianPlasticity.cpp.
486 auto get_tets = [&]() {
492 auto get_tets_skin = [&]() {
493 Range tets_skin_part;
495 CHKERR skin.find_skin(0, get_tets(),
false, tets_skin_part);
496 ParallelComm *pcomm =
499 CHKERR pcomm->filter_pstatus(tets_skin_part,
500 PSTATUS_SHARED | PSTATUS_MULTISHARED,
501 PSTATUS_NOT, -1, &tets_skin);
505 auto subtract_boundary_conditions = [&](
auto &&tets_skin) {
511 tets_skin = subtract(tets_skin,
v.faces);
516 auto add_blockset = [&](
auto block_name,
auto &&tets_skin) {
519 tets_skin.merge(crack_faces);
523 auto subtract_blockset = [&](
auto block_name,
auto &&tets_skin) {
526 tets_skin = subtract(tets_skin, contact_range);
530 auto get_stress_trace_faces = [&](
auto &&tets_skin) {
533 faces, moab::Interface::UNION);
534 Range trace_faces = subtract(faces, tets_skin);
538 auto tets = get_tets();
542 auto trace_faces = get_stress_trace_faces(
544 subtract_blockset(
"CONTACT",
545 subtract_boundary_conditions(get_tets_skin()))
552 boost::make_shared<Range>(subtract(trace_faces, *
contactFaces));
554 boost::make_shared<Range>(get_stress_trace_faces(
Range()));
566 auto add_broken_hdiv_field = [
this, meshset](
const std::string
field_name,
572 auto get_side_map_hdiv = [&]() {
575 std::pair<EntityType,
590 get_side_map_hdiv(), MB_TAG_DENSE,
MF_ZERO);
596 auto add_l2_field = [
this, meshset](
const std::string
field_name,
597 const int order,
const int dim) {
606 auto add_h1_field = [
this, meshset](
const std::string
field_name,
607 const int order,
const int dim) {
619 auto add_l2_field_by_range = [
this](
const std::string
field_name,
620 const int order,
const int dim,
621 const int field_dim,
Range &&
r) {
631 auto add_bubble_field = [
this, meshset](
const std::string
field_name,
632 const int order,
const int dim) {
638 auto field_order_table =
639 const_cast<Field *
>(field_ptr)->getFieldOrderTable();
640 auto get_cgg_bubble_order_zero = [](
int p) {
return 0; };
641 auto get_cgg_bubble_order_tet = [](
int p) {
644 field_order_table[MBVERTEX] = get_cgg_bubble_order_zero;
645 field_order_table[MBEDGE] = get_cgg_bubble_order_zero;
646 field_order_table[MBTRI] = get_cgg_bubble_order_zero;
647 field_order_table[MBTET] = get_cgg_bubble_order_tet;
654 auto add_user_l2_field = [
this, meshset](
const std::string
field_name,
655 const int order,
const int dim) {
661 auto field_order_table =
662 const_cast<Field *
>(field_ptr)->getFieldOrderTable();
663 auto zero_dofs = [](
int p) {
return 0; };
665 field_order_table[MBVERTEX] = zero_dofs;
666 field_order_table[MBEDGE] = zero_dofs;
667 field_order_table[MBTRI] = zero_dofs;
668 field_order_table[MBTET] = dof_l2_tet;
◆ addMaterial_Hencky()
◆ addMaterial_HMHHStVenantKirchhoff()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::addMaterial_HMHHStVenantKirchhoff |
( |
const int |
tape, |
|
|
const double |
lambda, |
|
|
const double |
mu, |
|
|
const double |
sigma_y |
|
) |
| |
◆ addMaterial_HMHMooneyRivlin()
◆ addMaterial_HMHNeohookean()
◆ addVolumeFiniteElement()
- Examples
- ep.cpp.
Definition at line 850 of file EshelbianPlasticity.cpp.
854 auto add_field_to_fe = [
this](
const std::string fe,
887 Range front_elements;
889 Range front_elements_layer;
891 front_elements_layer,
892 moab::Interface::UNION);
893 front_elements.merge(front_elements_layer);
897 moab::Interface::UNION);
◆ d_f_linear()
static double EshelbianPlasticity::EshelbianCore::d_f_linear |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ d_f_log()
static double EshelbianPlasticity::EshelbianCore::d_f_log |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ d_f_log_e()
static double EshelbianPlasticity::EshelbianCore::d_f_log_e |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ dd_f_linear()
static double EshelbianPlasticity::EshelbianCore::dd_f_linear |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ dd_f_log()
static double EshelbianPlasticity::EshelbianCore::dd_f_log |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ dd_f_log_e()
static double EshelbianPlasticity::EshelbianCore::dd_f_log_e |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ f_linear()
static double EshelbianPlasticity::EshelbianCore::f_linear |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ f_log()
static double EshelbianPlasticity::EshelbianCore::f_log |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ f_log_e()
static double EshelbianPlasticity::EshelbianCore::f_log_e |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ getBc()
template<typename BC >
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::getBc |
( |
boost::shared_ptr< BC > & |
bc_vec_ptr, |
|
|
const std::string |
block_name, |
|
|
const int |
nb_attributes |
|
) |
| |
|
inline |
Definition at line 1011 of file EshelbianPlasticity.hpp.
1017 (boost::format(
"%s(.*)") % block_name).str()
1022 std::vector<double> block_attributes;
1023 CHKERR it->getAttributes(block_attributes);
1024 if (block_attributes.size() < nb_attributes) {
1026 "In block %s expected %d attributes, but given %d",
1027 it->getName().c_str(), nb_attributes, block_attributes.size());
1032 bc_vec_ptr->emplace_back(it->getName(), block_attributes, faces);
◆ getOptions()
Definition at line 377 of file EshelbianPlasticity.cpp.
379 const char *list_rots[] = {
"small",
"moderate",
"large",
"no_h1"};
383 const char *list_stretches[] = {
"linear",
"log"};
386 CHKERR PetscOptionsBegin(PETSC_COMM_WORLD,
"",
"Eshelbian plasticity",
388 CHKERR PetscOptionsInt(
"-space_order",
"approximation oder for space",
"",
390 CHKERR PetscOptionsInt(
"-space_h1_order",
"approximation oder for space",
"",
392 CHKERR PetscOptionsInt(
"-material_order",
"approximation oder for material",
394 CHKERR PetscOptionsScalar(
"-viscosity_alpha_u",
"viscosity",
"",
alphaU,
396 CHKERR PetscOptionsScalar(
"-viscosity_alpha_w",
"viscosity",
"",
alphaW,
398 CHKERR PetscOptionsScalar(
"-density_alpha_rho",
"density",
"",
alphaRho,
400 CHKERR PetscOptionsEList(
"-rotations",
"rotations",
"", list_rots,
401 LARGE_ROT + 1, list_rots[choice_rot], &choice_rot,
403 CHKERR PetscOptionsEList(
"-grad",
"gradient of defamation approximate",
"",
405 list_rots[choice_grad], &choice_grad, PETSC_NULL);
410 list_stretches[choice_stretch], &choice_stretch, PETSC_NULL);
412 CHKERR PetscOptionsBool(
"-no_stretch",
"do not solve for stretch",
"",
414 CHKERR PetscOptionsBool(
"-set_singularity",
"set singularity",
"",
418 CHKERR PetscOptionsInt(
"-contact_max_post_proc_ref_level",
"refinement level",
422 ierr = PetscOptionsEnd();
468 MOFEM_LOG(
"EP", Sev::inform) <<
"Gradient of deformation "
474 MOFEM_LOG(
"EP", Sev::inform) <<
"Base exponent e";
475 MOFEM_LOG(
"EP", Sev::inform) <<
"Stretch " << list_stretches[choice_stretch];
◆ getSpatialDispBc()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::getSpatialDispBc |
( |
| ) |
|
[Getting norms]
- Examples
- ep.cpp.
Definition at line 2561 of file EshelbianPlasticity.cpp.
2570 for (
auto bc : bc_mng->getBcMapByBlockName()) {
2571 if (
auto disp_bc = bc.second->dispBcPtr) {
2573 MOFEM_LOG(
"EP", Sev::noisy) << *disp_bc;
2575 std::vector<double> block_attributes(6, 0.);
2576 if (disp_bc->data.flag1 == 1) {
2577 block_attributes[0] = disp_bc->data.value1;
2578 block_attributes[3] = 1;
2580 if (disp_bc->data.flag2 == 1) {
2581 block_attributes[1] = disp_bc->data.value2;
2582 block_attributes[4] = 1;
2584 if (disp_bc->data.flag3 == 1) {
2585 block_attributes[2] = disp_bc->data.value3;
2586 block_attributes[5] = 1;
2588 auto faces = bc.second->bcEnts.subset_by_dimension(2);
◆ getSpatialRotationBc()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::getSpatialRotationBc |
( |
| ) |
|
|
inline |
◆ getSpatialTractionBc()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::getSpatialTractionBc |
( |
| ) |
|
- Examples
- ep.cpp.
Definition at line 2599 of file EshelbianPlasticity.cpp.
2608 for (
auto bc : bc_mng->getBcMapByBlockName()) {
2609 if (
auto force_bc = bc.second->forceBcPtr) {
2610 std::vector<double> block_attributes(6, 0.);
2611 block_attributes[0] = -force_bc->data.value3 * force_bc->data.value1;
2612 block_attributes[3] = 1;
2613 block_attributes[1] = -force_bc->data.value4 * force_bc->data.value1;
2614 block_attributes[4] = 1;
2615 block_attributes[2] = -force_bc->data.value5 * force_bc->data.value1;
2616 block_attributes[5] = 1;
2617 auto faces = bc.second->bcEnts.subset_by_dimension(2);
◆ getSpatialTractionFreeBc()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::getSpatialTractionFreeBc |
( |
const EntityHandle |
meshset = 0 | ) |
|
|
inline |
◆ gettingNorms()
[Getting norms]
Definition at line 2497 of file EshelbianPlasticity.cpp.
2500 auto post_proc_norm_fe =
2501 boost::make_shared<VolumeElementForcesAndSourcesCore>(
mField);
2503 auto post_proc_norm_rule_hook = [](
int,
int,
int p) ->
int {
2506 post_proc_norm_fe->getRuleHook = post_proc_norm_rule_hook;
2508 post_proc_norm_fe->getUserPolynomialBase() =
2509 boost::shared_ptr<BaseFunction>(
new CGGUserPolynomialBase());
2515 enum NORMS { U_NORM_L2 = 0, U_NORM_H1, PIOLA_NORM, U_ERROR_L2, LAST_NORM };
2518 CHKERR VecZeroEntries(norms_vec);
2520 auto u_l2_ptr = boost::make_shared<MatrixDouble>();
2521 auto u_h1_ptr = boost::make_shared<MatrixDouble>();
2522 post_proc_norm_fe->getOpPtrVector().push_back(
2524 post_proc_norm_fe->getOpPtrVector().push_back(
2526 post_proc_norm_fe->getOpPtrVector().push_back(
2528 post_proc_norm_fe->getOpPtrVector().push_back(
2530 post_proc_norm_fe->getOpPtrVector().push_back(
2534 auto piola_ptr = boost::make_shared<MatrixDouble>();
2535 post_proc_norm_fe->getOpPtrVector().push_back(
2537 post_proc_norm_fe->getOpPtrVector().push_back(
2540 TetPolynomialBase::switchCacheBaseOn<HDIV>({post_proc_norm_fe.get()});
2542 *post_proc_norm_fe);
2543 TetPolynomialBase::switchCacheBaseOff<HDIV>({post_proc_norm_fe.get()});
2545 CHKERR VecAssemblyBegin(norms_vec);
2546 CHKERR VecAssemblyEnd(norms_vec);
2547 const double *norms;
2548 CHKERR VecGetArrayRead(norms_vec, &norms);
2549 MOFEM_LOG(
"EP", Sev::inform) <<
"norm_u: " << std::sqrt(norms[U_NORM_L2]);
2550 MOFEM_LOG(
"EP", Sev::inform) <<
"norm_u_h1: " << std::sqrt(norms[U_NORM_H1]);
2552 <<
"norm_error_u_l2: " << std::sqrt(norms[U_ERROR_L2]);
2554 <<
"norm_piola: " << std::sqrt(norms[PIOLA_NORM]);
2555 CHKERR VecRestoreArrayRead(norms_vec, &norms);
◆ getTractionFreeBc()
Remove all, but entities where kinematic constrains are applied.
- Parameters
-
meshset | |
bc_ptr | |
disp_block_set_name | |
rot_block_set_name | |
contact_set_name | |
- Returns
- MoFEMErrorCode
Definition at line 1282 of file EshelbianPlasticity.cpp.
1290 Range tets_skin_part;
1292 CHKERR skin.find_skin(0, tets,
false, tets_skin_part);
1293 ParallelComm *pcomm =
1296 CHKERR pcomm->filter_pstatus(tets_skin_part,
1297 PSTATUS_SHARED | PSTATUS_MULTISHARED,
1298 PSTATUS_NOT, -1, &tets_skin);
1301 for (
int dd = 0;
dd != 3; ++
dd)
1302 (*bc_ptr)[
dd] = tets_skin;
1308 (*bc_ptr)[0] = subtract((*bc_ptr)[0],
v.faces);
1310 (*bc_ptr)[1] = subtract((*bc_ptr)[1],
v.faces);
1312 (*bc_ptr)[2] = subtract((*bc_ptr)[2],
v.faces);
1318 (*bc_ptr)[0] = subtract((*bc_ptr)[0],
v.faces);
1319 (*bc_ptr)[1] = subtract((*bc_ptr)[1],
v.faces);
1320 (*bc_ptr)[2] = subtract((*bc_ptr)[2],
v.faces);
1325 (*bc_ptr)[0] = subtract((*bc_ptr)[0],
v.faces);
1326 (*bc_ptr)[1] = subtract((*bc_ptr)[1],
v.faces);
1327 (*bc_ptr)[2] = subtract((*bc_ptr)[2],
v.faces);
1332 std::regex((boost::format(
"%s(.*)") % contact_set_name).str()))) {
1336 (*bc_ptr)[0] = subtract((*bc_ptr)[0], faces);
1337 (*bc_ptr)[1] = subtract((*bc_ptr)[1], faces);
1338 (*bc_ptr)[2] = subtract((*bc_ptr)[2], faces);
◆ inv_d_f_linear()
static double EshelbianPlasticity::EshelbianCore::inv_d_f_linear |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ inv_d_f_log()
static double EshelbianPlasticity::EshelbianCore::inv_d_f_log |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ inv_dd_f_linear()
static double EshelbianPlasticity::EshelbianCore::inv_dd_f_linear |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ inv_dd_f_log()
static double EshelbianPlasticity::EshelbianCore::inv_dd_f_log |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ inv_f_linear()
static double EshelbianPlasticity::EshelbianCore::inv_f_linear |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ inv_f_log()
static double EshelbianPlasticity::EshelbianCore::inv_f_log |
( |
const double |
v | ) |
|
|
inlinestatic |
◆ postProcessResults()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::postProcessResults |
( |
const int |
tag, |
|
|
const std::string |
file |
|
) |
| |
Definition at line 2344 of file EshelbianPlasticity.cpp.
2350 boost::shared_ptr<DataAtIntegrationPts>(
new DataAtIntegrationPts());
2353 auto post_proc_mesh = boost::make_shared<moab::Core>();
2354 auto post_proc_begin =
2358 auto contact_common_data_ptr = boost::make_shared<ContactOps::CommonData>();
2360 auto get_post_proc = [&](
auto sense) {
2363 auto post_proc_ptr =
2364 boost::make_shared<PostProcBrokenMeshInMoabBaseCont<FaceEle>>(
2371 auto domain_ops = [&](
auto &fe,
int sense) {
2373 fe.getUserPolynomialBase() =
2374 boost::shared_ptr<BaseFunction>(
new CGGUserPolynomialBase());
2383 fe.getOpPtrVector().push_back(
2387 fe.getOpPtrVector().push_back(
2401 fe.getOpPtrVector().push_back(
2402 new OpCalculateRotationAndSpatialGradient(
dataAtPts));
2409 fe.getOpPtrVector().push_back(op);
2418 fe.getOpPtrVector().push_back(
new OpPostProcDataStructure(
2419 post_proc_ptr->getPostProcMesh(), post_proc_ptr->getMapGaussPts(),
2425 post_proc_ptr->getOpPtrVector().push_back(
2428 auto X_h1_ptr = boost::make_shared<MatrixDouble>();
2430 post_proc_ptr->getOpPtrVector().push_back(
2437 domain_ops(*(op_loop_side->getSideFEPtr()), sense);
2438 post_proc_ptr->getOpPtrVector().push_back(op_loop_side);
2440 return post_proc_ptr;
2443 auto post_proc_ptr = get_post_proc(1);
2444 auto post_proc_negative_sense_ptr = get_post_proc(-1);
2447 auto u_h1_ptr = boost::make_shared<MatrixDouble>();
2448 auto lambda_h1_ptr = boost::make_shared<MatrixDouble>();
2449 post_proc_ptr->getOpPtrVector().push_back(
2455 auto calcs_side_traction = [&](
auto &pip) {
2462 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
2463 boost::shared_ptr<BaseFunction>(
new CGGUserPolynomialBase());
2465 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
2467 op_loop_domain_side->getOpPtrVector().push_back(
2469 piolaStress, contact_common_data_ptr->contactTractionPtr()));
2470 pip.push_back(op_loop_domain_side);
2474 CHKERR calcs_side_traction(post_proc_ptr->getOpPtrVector());
2476 post_proc_ptr->getOpPtrVector().push_back(
new OpTreeSearch(
2479 &post_proc_ptr->getPostProcMesh(), &post_proc_ptr->getMapGaussPts()));
2488 post_proc_negative_sense_ptr, 0,
2492 CHKERR post_proc_end.writeFile(file.c_str());
◆ projectGeometry()
- Examples
- ep.cpp.
Definition at line 707 of file EshelbianPlasticity.cpp.
710 auto project_ho_geometry = [&]() {
714 CHKERR project_ho_geometry();
716 auto get_skin = [&](
auto &body_ents) {
719 CHKERR skin.find_skin(0, body_ents,
false, skin_ents);
723 auto filter_true_skin = [&](
auto &&skin) {
725 ParallelComm *pcomm =
727 CHKERR pcomm->filter_pstatus(skin, PSTATUS_SHARED | PSTATUS_MULTISHARED,
728 PSTATUS_NOT, -1, &boundary_ents);
729 return boundary_ents;
732 auto get_crack_front_edges = [&]() {
737 auto body_skin = filter_true_skin(get_skin(body_ents));
738 Range body_skin_edges;
739 CHKERR moab.get_adjacencies(body_skin,
SPACE_DIM - 2,
true, body_skin_edges,
740 moab::Interface::UNION);
742 crack_skin = subtract(crack_skin, body_skin_edges);
743 std::map<int, Range> received_ents;
745 crack_skin, &received_ents);
748 for (
auto &
m : received_ents) {
752 to_remove.merge(intersect(crack_skin,
m.second));
756 crack_skin = subtract(crack_skin, to_remove);
760 return boost::make_shared<Range>(crack_skin);
763 auto get_adj_front_edges = [&](
auto &front_edges) {
765 Range front_crack_nodes;
766 CHKERR moab.get_connectivity(front_edges, front_crack_nodes,
true);
769 Range crack_front_edges;
771 crack_front_edges, moab::Interface::UNION);
772 crack_front_edges = subtract(crack_front_edges, front_edges);
776 Range crack_front_edges_nodes;
777 CHKERR moab.get_connectivity(crack_front_edges, crack_front_edges_nodes,
779 crack_front_edges_nodes =
780 subtract(crack_front_edges_nodes, front_crack_nodes);
781 Range crack_front_edges_with_both_nodes_not_at_front;
782 CHKERR moab.get_adjacencies(crack_front_edges_nodes,
SPACE_DIM - 2,
false,
783 crack_front_edges_with_both_nodes_not_at_front,
784 moab::Interface::UNION);
785 crack_front_edges_with_both_nodes_not_at_front = intersect(
786 crack_front_edges_with_both_nodes_not_at_front, crack_front_edges);
788 return std::make_pair(boost::make_shared<Range>(front_crack_nodes),
789 boost::make_shared<Range>(
790 crack_front_edges_with_both_nodes_not_at_front));
796 auto [front_vertices, front_adj_edges] = get_adj_front_edges(*
frontEdges);
800 auto set_singular_dofs = [&](
auto &front_adj_edges,
auto &front_vertices) {
808 MOFEM_LOG(
"EP", Sev::inform) <<
"Singularity eps " << beta;
811 for (
auto edge : front_adj_edges) {
814 CHKERR moab.get_connectivity(edge, conn, num_nodes,
false);
816 CHKERR moab.get_coords(conn, num_nodes, coords);
817 const double dir[3] = {coords[3] - coords[0], coords[4] - coords[1],
818 coords[5] - coords[2]};
819 double dof[3] = {0, 0, 0};
820 if (front_vertices.find(conn[0]) != front_vertices.end()) {
821 for (
int dd = 0;
dd != 3;
dd++) {
824 }
else if (front_vertices.find(conn[1]) != front_vertices.end()) {
825 for (
int dd = 0;
dd != 3;
dd++) {
831 const int idx = dit->get()->getEntDofIdx();
833 dit->get()->getFieldData() = 0;
835 dit->get()->getFieldData() = dof[idx];
◆ query_interface()
Getting interface of core database.
- Parameters
-
uuid | unique ID of interface |
iface | returned pointer to interface |
- Returns
- error code
Definition at line 353 of file EshelbianPlasticity.cpp.
◆ setBaseVolumeElementOps()
Definition at line 1488 of file EshelbianPlasticity.cpp.
1492 fe = boost::make_shared<VolumeElementForcesAndSourcesCore>(
mField);
1495 boost::make_shared<CGGUserPolynomialBase::CachePhi>(0, 0,
MatrixDouble());
1496 fe->getUserPolynomialBase() =
1497 boost::make_shared<CGGUserPolynomialBase>(bubble_cache);
1506 boost::shared_ptr<DataAtIntegrationPts>(
new DataAtIntegrationPts());
1519 fe->getOpPtrVector().push_back(
1523 fe->getOpPtrVector().push_back(
1538 fe->getOpPtrVector().push_back(
1546 if (std::abs(
alphaRho) > std::numeric_limits<double>::epsilon()) {
1558 fe->getOpPtrVector().push_back(
1559 new OpCalculateRotationAndSpatialGradient(
dataAtPts));
◆ setContactElementRhsOps()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::setContactElementRhsOps |
( |
boost::shared_ptr< ContactTree > & |
fe_contact_tree | ) |
|
Contact requires that body is marked
Definition at line 2074 of file EshelbianPlasticity.cpp.
2082 auto get_body_range = [
this](
auto name,
int dim) {
2083 std::map<int, Range> map;
2088 (boost::format(
"%s(.*)") % name).str()
2097 map[m_ptr->getMeshsetId()] = ents;
2103 auto get_map_skin = [
this](
auto &&map) {
2104 ParallelComm *pcomm =
2108 for (
auto &
m : map) {
2110 CHKERR skin.find_skin(0,
m.second,
false, skin_faces);
2112 PSTATUS_SHARED | PSTATUS_MULTISHARED,
2113 PSTATUS_NOT, -1,
nullptr),
2115 m.second.swap(skin_faces);
2125 auto contact_common_data_ptr = boost::make_shared<ContactOps::CommonData>();
2127 auto calcs_side_traction = [&](
auto &pip) {
2134 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
2135 boost::make_shared<CGGUserPolynomialBase>();
2137 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
2139 op_loop_domain_side->getOpPtrVector().push_back(
2141 piolaStress, contact_common_data_ptr->contactTractionPtr()));
2142 pip.push_back(op_loop_domain_side);
2146 auto add_contact_three = [&]() {
2148 auto tree_moab_ptr = boost::make_shared<moab::Core>();
2149 fe_contact_tree = boost::make_shared<ContactTree>(
2151 get_map_skin(get_body_range(
"BODY", 3)));
2152 fe_contact_tree->getOpPtrVector().push_back(
2154 contactDisp, contact_common_data_ptr->contactDispPtr()));
2155 CHKERR calcs_side_traction(fe_contact_tree->getOpPtrVector());
2156 auto u_h1_ptr = boost::make_shared<MatrixDouble>();
2157 fe_contact_tree->getOpPtrVector().push_back(
2159 fe_contact_tree->getOpPtrVector().push_back(
2160 new OpMoveNode(fe_contact_tree, contact_common_data_ptr, u_h1_ptr));
2164 CHKERR add_contact_three();
◆ setElasticElementOps()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::setElasticElementOps |
( |
const int |
tag | ) |
|
- Examples
- ep.cpp.
Definition at line 2169 of file EshelbianPlasticity.cpp.
2180 boost::make_shared<ForcesAndSourcesCore::UserDataOperator::AdjCache>();
2182 auto get_op_contact_bc = [&]() {
2186 return op_loop_side;
◆ setElasticElementToTs()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::setElasticElementToTs |
( |
DM |
dm | ) |
|
◆ setFaceElementOps()
Definition at line 2005 of file EshelbianPlasticity.cpp.
2011 fe_rhs = boost::make_shared<FaceElementForcesAndSourcesCore>(
mField);
2012 fe_lhs = boost::make_shared<FaceElementForcesAndSourcesCore>(
mField);
2015 fe_rhs->getRuleHook = [](
int,
int,
int p) {
return 2 * (p + 1); };
2016 fe_lhs->getRuleHook = [](
int,
int,
int p) {
return 2 * (p + 1); };
2027 auto get_broken_op_side = [
this](
auto &pip) {
2032 auto broken_data_ptr =
2033 boost::make_shared<std::vector<BrokenBaseSideData>>();
2037 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
2038 boost::make_shared<CGGUserPolynomialBase>();
2041 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
2043 op_loop_domain_side->getOpPtrVector().push_back(
2045 pip.push_back(op_loop_domain_side);
2046 return broken_data_ptr;
2049 auto broken_data_ptr = get_broken_op_side(fe_rhs->getOpPtrVector());
2051 fe_rhs->getOpPtrVector().push_back(
2055 boost::make_shared<TimeScale>(
"disp_history.txt")
2058 fe_rhs->getOpPtrVector().push_back(
new OpRotationBc(
2063 boost::make_shared<TimeScale>(
"rotation_history.txt")
2067 fe_rhs->getOpPtrVector().push_back(
◆ setVolumeElementOps()
Contact requires that body is marked
Definition at line 1571 of file EshelbianPlasticity.cpp.
1578 auto get_body_range = [
this](
auto name,
int dim) {
1579 std::map<int, Range> map;
1584 (boost::format(
"%s(.*)") % name).str()
1593 map[m_ptr->getMeshsetId()] = ents;
1599 auto rule_contact = [](
int,
int,
int o) {
return -1; };
1602 auto set_rule_contact = [refine](
1605 int order_col,
int order_data
1609 auto rule = 2 * order_data;
1610 fe_raw_ptr->
gaussPts = Tools::refineTriangleIntegrationPts(rule, refine);
1614 auto time_scale = boost::make_shared<TimeScale>();
1621 fe_rhs->getOpPtrVector().push_back(
1623 fe_rhs->getOpPtrVector().push_back(
1628 fe_rhs->getOpPtrVector().push_back(
1632 fe_rhs->getOpPtrVector().push_back(
1634 fe_rhs->getOpPtrVector().push_back(
1636 fe_rhs->getOpPtrVector().push_back(
1639 auto set_hybridisation = [&](
auto &pip) {
1653 op_loop_skeleton_side->getSideFEPtr()->getRuleHook =
FaceRule();
1654 CHKERR EshelbianPlasticity::
1655 AddHOOps<SPACE_DIM - 1, SPACE_DIM, SPACE_DIM>::add(
1656 op_loop_skeleton_side->getOpPtrVector(), {L2},
1661 auto broken_data_ptr =
1662 boost::make_shared<std::vector<BrokenBaseSideData>>();
1666 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
1667 boost::make_shared<CGGUserPolynomialBase>();
1670 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
1672 op_loop_domain_side->getOpPtrVector().push_back(
1674 auto flux_mat_ptr = boost::make_shared<MatrixDouble>();
1675 op_loop_domain_side->getOpPtrVector().push_back(
1678 op_loop_domain_side->getOpPtrVector().push_back(
1682 op_loop_skeleton_side->getOpPtrVector().push_back(op_loop_domain_side);
1684 GAUSS>::OpBrokenSpaceConstrainDHybrid<SPACE_DIM>;
1686 GAUSS>::OpBrokenSpaceConstrainDFlux<SPACE_DIM>;
1687 op_loop_skeleton_side->getOpPtrVector().push_back(
1689 auto hybrid_ptr = boost::make_shared<MatrixDouble>();
1690 op_loop_skeleton_side->getOpPtrVector().push_back(
1693 op_loop_skeleton_side->getOpPtrVector().push_back(
1694 new OpC_dBroken(broken_data_ptr, hybrid_ptr, 1.));
1697 pip.push_back(op_loop_skeleton_side);
1702 auto set_contact = [&](
auto &pip) {
1717 op_loop_skeleton_side->getSideFEPtr()->getRuleHook = rule_contact;
1718 op_loop_skeleton_side->getSideFEPtr()->setRuleHook = set_rule_contact;
1719 CHKERR EshelbianPlasticity::
1720 AddHOOps<SPACE_DIM - 1, SPACE_DIM, SPACE_DIM>::add(
1721 op_loop_skeleton_side->getOpPtrVector(), {L2},
1726 auto broken_data_ptr =
1727 boost::make_shared<std::vector<BrokenBaseSideData>>();
1730 auto contact_common_data_ptr =
1731 boost::make_shared<ContactOps::CommonData>();
1733 auto add_ops_domain_side = [&](
auto &pip) {
1738 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
1739 boost::make_shared<CGGUserPolynomialBase>();
1742 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
1744 op_loop_domain_side->getOpPtrVector().push_back(
1747 op_loop_domain_side->getOpPtrVector().push_back(
1749 piolaStress, contact_common_data_ptr->contactTractionPtr()));
1750 pip.push_back(op_loop_domain_side);
1754 auto add_ops_contact_rhs = [&](
auto &pip) {
1757 auto contact_sfd_map_range_ptr =
1758 boost::make_shared<std::map<int, Range>>(
1759 get_body_range(
"CONTACT_SDF",
SPACE_DIM - 1));
1762 contactDisp, contact_common_data_ptr->contactDispPtr()));
1763 auto u_h1_ptr = boost::make_shared<MatrixDouble>();
1766 pip.push_back(
new OpTreeSearch(
1772 contact_sfd_map_range_ptr));
1781 CHKERR add_ops_domain_side(op_loop_skeleton_side->getOpPtrVector());
1782 CHKERR add_ops_contact_rhs(op_loop_skeleton_side->getOpPtrVector());
1785 pip.push_back(op_loop_skeleton_side);
1790 CHKERR set_hybridisation(fe_rhs->getOpPtrVector());
1791 CHKERR set_contact(fe_rhs->getOpPtrVector());
1794 using BodyNaturalBC =
1796 Assembly<PETSC>::LinearForm<
GAUSS>;
1798 BodyNaturalBC::OpFlux<NaturalMeshsetType<BLOCKSET>, 1, 3>;
1799 CHKERR BodyNaturalBC::AddFluxToPipeline<OpBodyForce>::add(
1801 "BODY_FORCE", Sev::inform);
1810 const bool symmetric_system =
1814 fe_lhs->getOpPtrVector().push_back(
1816 fe_lhs->getOpPtrVector().push_back(
new OpSpatialConsistency_dBubble_dP(
1818 fe_lhs->getOpPtrVector().push_back(
1822 fe_lhs->getOpPtrVector().push_back(
1825 fe_lhs->getOpPtrVector().push_back(
new OpSpatialPhysical_du_dP(
1827 fe_lhs->getOpPtrVector().push_back(
new OpSpatialPhysical_du_dBubble(
1829 if (!symmetric_system) {
1830 fe_lhs->getOpPtrVector().push_back(
new OpSpatialPhysical_du_domega(
1835 fe_lhs->getOpPtrVector().push_back(
new OpSpatialEquilibrium_dw_dP(
1837 fe_lhs->getOpPtrVector().push_back(
new OpSpatialEquilibrium_dw_dw(
1840 fe_lhs->getOpPtrVector().push_back(
new OpSpatialConsistency_dP_domega(
1842 fe_lhs->getOpPtrVector().push_back(
new OpSpatialConsistency_dBubble_domega(
1845 if (!symmetric_system) {
1846 fe_lhs->getOpPtrVector().push_back(
new OpSpatialRotation_domega_dP(
1848 fe_lhs->getOpPtrVector().push_back(
new OpSpatialRotation_domega_dBubble(
1850 fe_lhs->getOpPtrVector().push_back(
1854 auto set_hybridisation = [&](
auto &pip) {
1868 op_loop_skeleton_side->getSideFEPtr()->getRuleHook =
FaceRule();
1869 CHKERR EshelbianPlasticity::
1870 AddHOOps<SPACE_DIM - 1, SPACE_DIM, SPACE_DIM>::add(
1871 op_loop_skeleton_side->getOpPtrVector(), {L2},
1876 auto broken_data_ptr =
1877 boost::make_shared<std::vector<BrokenBaseSideData>>();
1881 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
1882 boost::make_shared<CGGUserPolynomialBase>();
1885 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
1887 op_loop_domain_side->getOpPtrVector().push_back(
1890 op_loop_skeleton_side->getOpPtrVector().push_back(op_loop_domain_side);
1892 GAUSS>::OpBrokenSpaceConstrain<SPACE_DIM>;
1893 op_loop_skeleton_side->getOpPtrVector().push_back(
1896 pip.push_back(op_loop_skeleton_side);
1901 auto set_contact = [&](
auto &pip) {
1916 op_loop_skeleton_side->getSideFEPtr()->getRuleHook = rule_contact;
1917 op_loop_skeleton_side->getSideFEPtr()->setRuleHook = set_rule_contact;
1918 CHKERR EshelbianPlasticity::
1919 AddHOOps<SPACE_DIM - 1, SPACE_DIM, SPACE_DIM>::add(
1920 op_loop_skeleton_side->getOpPtrVector(), {L2},
1925 auto broken_data_ptr =
1926 boost::make_shared<std::vector<BrokenBaseSideData>>();
1929 auto contact_common_data_ptr =
1930 boost::make_shared<ContactOps::CommonData>();
1932 auto add_ops_domain_side = [&](
auto &pip) {
1937 op_loop_domain_side->getSideFEPtr()->getUserPolynomialBase() =
1938 boost::make_shared<CGGUserPolynomialBase>();
1941 op_loop_domain_side->getOpPtrVector(), {HDIV, H1, L2},
1943 op_loop_domain_side->getOpPtrVector().push_back(
1946 op_loop_domain_side->getOpPtrVector().push_back(
1948 piolaStress, contact_common_data_ptr->contactTractionPtr()));
1949 pip.push_back(op_loop_domain_side);
1953 auto add_ops_contact_lhs = [&](
auto &pip) {
1956 contactDisp, contact_common_data_ptr->contactDispPtr()));
1957 auto u_h1_ptr = boost::make_shared<MatrixDouble>();
1960 pip.push_back(
new OpTreeSearch(
1966 auto contact_sfd_map_range_ptr =
1967 boost::make_shared<std::map<int, Range>>(
1968 get_body_range(
"CONTACT_SDF",
SPACE_DIM - 1));
1972 contact_sfd_map_range_ptr));
1975 contactDisp, broken_data_ptr, contact_common_data_ptr,
1979 broken_data_ptr,
contactDisp, contact_common_data_ptr,
1986 CHKERR add_ops_domain_side(op_loop_skeleton_side->getOpPtrVector());
1987 CHKERR add_ops_contact_lhs(op_loop_skeleton_side->getOpPtrVector());
1990 pip.push_back(op_loop_skeleton_side);
1995 CHKERR set_hybridisation(fe_lhs->getOpPtrVector());
1996 CHKERR set_contact(fe_lhs->getOpPtrVector());
◆ solveElastic()
MoFEMErrorCode EshelbianPlasticity::EshelbianCore::solveElastic |
( |
TS |
ts, |
|
|
Vec |
x |
|
) |
| |
- Examples
- ep.cpp.
Definition at line 2225 of file EshelbianPlasticity.cpp.
2230 boost::shared_ptr<ContactOps::SDFPython> sdf_python_ptr;
2232 auto file_exists = [](std::string myfile) {
2233 std::ifstream file(myfile.c_str());
2240 char sdf_file_name[255] =
"sdf.py";
2242 sdf_file_name, 255, PETSC_NULL);
2244 if (file_exists(sdf_file_name)) {
2245 MOFEM_LOG(
"EP", Sev::inform) << sdf_file_name <<
" file found";
2246 sdf_python_ptr = boost::make_shared<ContactOps::SDFPython>();
2247 CHKERR sdf_python_ptr->sdfInit(sdf_file_name);
2248 ContactOps::sdfPythonWeakPtr = sdf_python_ptr;
2250 MOFEM_LOG(
"EP", Sev::warning) << sdf_file_name <<
" file NOT found";
2255 boost::shared_ptr<TsCtx>
ts_ctx;
2263 CHKERR TSAppendOptionsPrefix(ts,
"elastic_");
2264 CHKERR TSSetFromOptions(ts);
2269 CHKERR TSGetSNES(ts, &snes);
2271 PetscViewerAndFormat *vf;
2272 CHKERR PetscViewerAndFormatCreate(PETSC_VIEWER_STDOUT_WORLD,
2273 PETSC_VIEWER_DEFAULT, &vf);
2276 (
MoFEMErrorCode(*)(SNES, PetscInt, PetscReal,
void *))SNESMonitorFields,
2279 PetscSection section;
2282 CHKERR PetscSectionGetNumFields(section, &num_fields);
2283 for (
int ff = 0; ff != num_fields; ff++) {
2290 CHKERR VecGhostUpdateBegin(x, INSERT_VALUES, SCATTER_FORWARD);
2291 CHKERR VecGhostUpdateEnd(x, INSERT_VALUES, SCATTER_FORWARD);
2294 boost::shared_ptr<SetUpSchur> schur_ptr;
2297 CHKERR schur_ptr->setUp(ts);
2300 if (std::abs(
alphaRho) > std::numeric_limits<double>::epsilon()) {
2302 CHKERR VecDuplicate(x, &xx);
2303 CHKERR VecZeroEntries(xx);
2304 CHKERR TS2SetSolution(ts, x, xx);
2307 CHKERR TSSetSolution(ts, x);
2310 TetPolynomialBase::switchCacheBaseOn<HDIV>(
2316 CHKERR TSSolve(ts, PETSC_NULL);
2318 TetPolynomialBase::switchCacheBaseOff<HDIV>(
2322 int lin_solver_iterations;
2323 CHKERR SNESGetLinearSolveIterations(snes, &lin_solver_iterations);
2325 <<
"Number of linear solver iterations " << lin_solver_iterations;
2327 PetscBool test_cook_flg = PETSC_FALSE;
2330 if (test_cook_flg) {
2331 constexpr
int expected_lin_solver_iterations = 11;
2332 if (lin_solver_iterations > expected_lin_solver_iterations)
2335 "Expected number of iterations is different than expected %d > %d",
2336 lin_solver_iterations, expected_lin_solver_iterations);
◆ alphaRho
double EshelbianPlasticity::EshelbianCore::alphaRho = 0 |
◆ alphaU
double EshelbianPlasticity::EshelbianCore::alphaU = 0 |
◆ alphaW
double EshelbianPlasticity::EshelbianCore::alphaW = 0 |
◆ bcSpatialDispVecPtr
boost::shared_ptr<BcDispVec> EshelbianPlasticity::EshelbianCore::bcSpatialDispVecPtr |
◆ bcSpatialFreeTraction
boost::shared_ptr<TractionFreeBc> EshelbianPlasticity::EshelbianCore::bcSpatialFreeTraction |
◆ bcSpatialRotationVecPtr
boost::shared_ptr<BcRotVec> EshelbianPlasticity::EshelbianCore::bcSpatialRotationVecPtr |
◆ bcSpatialTraction
boost::shared_ptr<TractionBcVec> EshelbianPlasticity::EshelbianCore::bcSpatialTraction |
◆ bitAdjEnt
BitRefLevel EshelbianPlasticity::EshelbianCore::bitAdjEnt = BitRefLevel().set() |
◆ bitAdjEntMask
BitRefLevel EshelbianPlasticity::EshelbianCore::bitAdjEntMask |
◆ bitAdjParent
BitRefLevel EshelbianPlasticity::EshelbianCore::bitAdjParent = BitRefLevel().set() |
◆ bitAdjParentMask
BitRefLevel EshelbianPlasticity::EshelbianCore::bitAdjParentMask |
◆ bubbleField
const std::string EshelbianPlasticity::EshelbianCore::bubbleField = "bubble" |
◆ contactDisp
const std::string EshelbianPlasticity::EshelbianCore::contactDisp = "contactDisp" |
◆ contactElement
const std::string EshelbianPlasticity::EshelbianCore::contactElement = "CONTACT" |
◆ contactFaces
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::contactFaces |
◆ contactRefinementLevels
int EshelbianPlasticity::EshelbianCore::contactRefinementLevels = 1 |
◆ contactTreeRhs
boost::shared_ptr<ContactTree> EshelbianPlasticity::EshelbianCore::contactTreeRhs |
◆ crackElement
const std::string EshelbianPlasticity::EshelbianCore::crackElement = "CRACK" |
◆ crackFaces
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::crackFaces |
◆ d_f
boost::function< double(const double)> EshelbianPlasticity::EshelbianCore::d_f |
|
static |
◆ dataAtPts
◆ dd_f
boost::function< double(const double)> EshelbianPlasticity::EshelbianCore::dd_f |
|
static |
◆ dM
SmartPetscObj<DM> EshelbianPlasticity::EshelbianCore::dM |
◆ dmElastic
SmartPetscObj<DM> EshelbianPlasticity::EshelbianCore::dmElastic |
◆ dmMaterial
SmartPetscObj<DM> EshelbianPlasticity::EshelbianCore::dmMaterial |
◆ dmPrjSpatial
SmartPetscObj<DM> EshelbianPlasticity::EshelbianCore::dmPrjSpatial |
◆ elasticBcLhs
◆ elasticBcRhs
◆ elasticFeLhs
boost::shared_ptr<VolumeElementForcesAndSourcesCore> EshelbianPlasticity::EshelbianCore::elasticFeLhs |
◆ elasticFeRhs
boost::shared_ptr<VolumeElementForcesAndSourcesCore> EshelbianPlasticity::EshelbianCore::elasticFeRhs |
◆ elementVolumeName
const std::string EshelbianPlasticity::EshelbianCore::elementVolumeName = "EP" |
◆ eshelbyStress
const std::string EshelbianPlasticity::EshelbianCore::eshelbyStress = "S" |
◆ exponentBase
double EshelbianPlasticity::EshelbianCore::exponentBase = exp(1) |
|
static |
◆ frontAdjEdges
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::frontAdjEdges |
◆ frontEdges
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::frontEdges |
◆ frontLayers
int EshelbianPlasticity::EshelbianCore::frontLayers = 3 |
◆ frontVertices
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::frontVertices |
◆ gradApproximator
◆ hybridMaterialDisp
const std::string EshelbianPlasticity::EshelbianCore::hybridMaterialDisp = "hybridMaterialDisp" |
◆ hybridSpatialDisp
const std::string EshelbianPlasticity::EshelbianCore::hybridSpatialDisp = "hybridSpatialDisp" |
◆ inv_d_f
boost::function< double(const double)> EshelbianPlasticity::EshelbianCore::inv_d_f |
|
static |
◆ inv_dd_f
boost::function< double(const double)> EshelbianPlasticity::EshelbianCore::inv_dd_f |
|
static |
◆ inv_f
boost::function< double(const double)> EshelbianPlasticity::EshelbianCore::inv_f |
|
static |
◆ materialH1Positions
const std::string EshelbianPlasticity::EshelbianCore::materialH1Positions = "XH1" |
◆ materialL2Disp
const std::string EshelbianPlasticity::EshelbianCore::materialL2Disp = "WL2" |
◆ materialOrder
int EshelbianPlasticity::EshelbianCore::materialOrder = 1 |
◆ materialSkeletonElement
const std::string EshelbianPlasticity::EshelbianCore::materialSkeletonElement = "MATERIAL_SKELETON" |
◆ materialSkeletonFaces
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::materialSkeletonFaces |
◆ materialVolumeElement
const std::string EshelbianPlasticity::EshelbianCore::materialVolumeElement = "MEP" |
◆ mField
◆ naturalBcElement
const std::string EshelbianPlasticity::EshelbianCore::naturalBcElement = "NATURAL_BC" |
◆ noStretch
PetscBool EshelbianPlasticity::EshelbianCore::noStretch = PETSC_FALSE |
|
inlinestatic |
◆ parentAdjSkeletonFunctionDim2
boost::shared_ptr<ParentFiniteElementAdjacencyFunctionSkeleton<2> > EshelbianPlasticity::EshelbianCore::parentAdjSkeletonFunctionDim2 |
◆ physicalEquations
boost::shared_ptr<PhysicalEquations> EshelbianPlasticity::EshelbianCore::physicalEquations |
◆ piolaStress
const std::string EshelbianPlasticity::EshelbianCore::piolaStress = "P" |
◆ rotAxis
const std::string EshelbianPlasticity::EshelbianCore::rotAxis = "omega" |
◆ rotSelector
◆ setSingularity
PetscBool EshelbianPlasticity::EshelbianCore::setSingularity = PETSC_TRUE |
|
inlinestatic |
◆ skeletonElement
const std::string EshelbianPlasticity::EshelbianCore::skeletonElement = "SKELETON" |
◆ skeletonFaces
boost::shared_ptr<Range> EshelbianPlasticity::EshelbianCore::skeletonFaces |
◆ skinElement
const std::string EshelbianPlasticity::EshelbianCore::skinElement = "SKIN" |
◆ spaceH1Order
int EshelbianPlasticity::EshelbianCore::spaceH1Order = -1 |
◆ spaceOrder
int EshelbianPlasticity::EshelbianCore::spaceOrder = 2 |
◆ spatialH1Disp
const std::string EshelbianPlasticity::EshelbianCore::spatialH1Disp = "wH1" |
◆ spatialL2Disp
const std::string EshelbianPlasticity::EshelbianCore::spatialL2Disp = "wL2" |
◆ stretchSelector
◆ stretchTensor
const std::string EshelbianPlasticity::EshelbianCore::stretchTensor = "u" |
The documentation for this struct was generated from the following files:
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.
virtual MoFEMErrorCode modify_finite_element_adjacency_table(const std::string &fe_name, const EntityType type, ElementAdjacencyFunct function)=0
modify finite element table, only for advanced user
#define CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
static double f_log_e(const double v)
static double f_linear(const double v)
ElementsAndOps< SPACE_DIM >::BoundaryEle BoundaryEle
virtual MoFEMErrorCode loop_finite_elements(const std::string problem_name, const std::string &fe_name, FEMethod &method, boost::shared_ptr< NumeredEntFiniteElement_multiIndex > fe_ptr=nullptr, MoFEMTypes bh=MF_EXIST, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr(), int verb=DEFAULT_VERBOSITY)=0
Make a loop over finite elements.
#define MYPCOMM_INDEX
default communicator number PCOMM
virtual MoFEMErrorCode loop_dofs(const Problem *problem_ptr, const std::string &field_name, RowColData rc, DofMethod &method, int lower_rank, int upper_rank, int verb=DEFAULT_VERBOSITY)=0
Make a loop over dofs.
boost::shared_ptr< BcRotVec > bcSpatialRotationVecPtr
static boost::function< double(const double)> dd_f
const std::string hybridMaterialDisp
static double inv_f_log(const double v)
MoFEMErrorCode getTractionFreeBc(const EntityHandle meshset, boost::shared_ptr< TractionFreeBc > &bc_ptr, const std::string contact_set_name)
Remove all, but entities where kinematic constrains are applied.
const std::string piolaStress
Problem manager is used to build and partition problems.
const std::string spatialH1Disp
MoFEMErrorCode setBaseVolumeElementOps(const int tag, const bool do_rhs, const bool do_lhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe)
static double exponentBase
static double inv_dd_f_linear(const double v)
PipelineManager::ElementsAndOpsByDim< SPACE_DIM >::FaceSideEle EleOnSide
multi_index_container< DofsSideMapData, indexed_by< ordered_non_unique< tag< TypeSide_mi_tag >, composite_key< DofsSideMapData, member< DofsSideMapData, EntityType, &DofsSideMapData::type >, member< DofsSideMapData, int, &DofsSideMapData::side > >>, ordered_unique< tag< EntDofIdx_mi_tag >, member< DofsSideMapData, int, &DofsSideMapData::dof > > > > DofsSideMap
Map entity stype and side to element/entity dof index.
Calculate symmetric tensor field rates ant integratio pts.
virtual MPI_Comm & get_comm() const =0
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string name_row)=0
set field row which finite element use
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
PetscErrorCode DMMoFEMSetSquareProblem(DM dm, PetscBool square_problem)
set squared problem
boost::shared_ptr< Range > materialSkeletonFaces
FEMethodsSequence & getLoopsMonitor()
Get the loops to do Monitor object.
@ L2
field with C-1 continuity
BitRefLevel bitAdjParentMask
bit ref level for parent parent
static MoFEMErrorCode postStepFun(TS ts)
Calculate tenor field using tensor base, i.e. Hdiv/Hcurl.
virtual const Field * get_field_structure(const std::string &name, enum MoFEMTypes bh=MF_EXIST) const =0
get field structure
Natural boundary conditions.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Get values at integration pts for tensor filed rank 1, i.e. vector field.
static double dd_f_linear(const double v)
#define _IT_GET_DOFS_FIELD_BY_NAME_AND_ENT_FOR_LOOP_(MFIELD, NAME, ENT, IT)
loop over all dofs from a moFEM field and particular field
UBlasMatrix< double > MatrixDouble
const std::string stretchTensor
const std::string materialVolumeElement
virtual int get_comm_rank() const =0
static double d_f_linear(const double v)
Set integration rule to volume elements.
Definition of the force bc data structure.
static double dd_f_log(const double v)
PetscErrorCode DMoFEMMeshToLocalVector(DM dm, Vec l, InsertMode mode, ScatterMode scatter_mode)
set local (or ghosted) vector values on mesh for partition only
Definition of the displacement bc data structure.
virtual MoFEMErrorCode add_broken_field(const std::string name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const std::vector< std::pair< EntityType, std::function< MoFEMErrorCode(BaseFunction::DofsSideMap &)>> > list_dof_side_map, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
Add field.
Projection of edge entities with one mid-node on hierarchical basis.
static double inv_f_linear(const double v)
static boost::function< double(const double)> d_f
SmartPetscObj< DM > dmPrjSpatial
Projection spatial displacement.
#define NBVOLUMETET_L2(P)
Number of base functions on tetrahedron for L2 space.
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeRhs
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcRhs
boost::shared_ptr< VolumeElementForcesAndSourcesCore > elasticFeLhs
boost::shared_ptr< Range > frontEdges
const std::string hybridSpatialDisp
virtual MoFEMErrorCode add_ents_to_field_by_dim(const Range &ents, const int dim, const std::string &name, int verb=DEFAULT_VERBOSITY)=0
Add entities to field meshset.
virtual MoFEMErrorCode add_ents_to_field_by_type(const Range &ents, const EntityType type, const std::string &name, int verb=DEFAULT_VERBOSITY)=0
Add entities to field meshset.
Provide data structure for (tensor) field approximation.
@ USER_BASE
user implemented approximation base
PetscErrorCode DMMoFEMAddElement(DM dm, std::string fe_name)
add element to dm
static double f_log(const double v)
PetscErrorCode TsMonitorSet(TS ts, PetscInt step, PetscReal t, Vec u, void *ctx)
Set monitor for TS solver.
Approximate field values for given petsc vector.
boost::shared_ptr< Range > frontAdjEdges
PetscErrorCode DMMoFEMSetDestroyProblem(DM dm, PetscBool destroy_problem)
static double d_f_log_e(const double v)
virtual MoFEMErrorCode add_ents_to_finite_element_by_type(const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
add entities to finite element
Get norm of input MatrixDouble for Tensor2.
boost::shared_ptr< Range > crackFaces
#define CHKERR
Inline error check.
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
virtual moab::Interface & get_moab()=0
PetscErrorCode DMMoFEMTSSetIJacobian(DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
set TS Jacobian evaluation function
PetscErrorCode DMoFEMLoopFiniteElementsUpAndLowRank(DM dm, const char fe_name[], MoFEM::FEMethod *method, int low_rank, int up_rank, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr())
Executes FEMethod for finite elements in DM.
static boost::shared_ptr< SetUpSchur > createSetUpSchur(MoFEM::Interface &m_field, EshelbianCore *ep_core_ptr)
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string name_row)=0
set field col which finite element use
static MoFEMErrorCode preStepFun(TS ts)
const std::string skinElement
static double d_f_log(const double v)
static enum RotSelector gradApproximator
Section manager is used to create indexes and sections.
auto createDM(MPI_Comm comm, const std::string dm_type_name)
Creates smart DM object.
static auto save_range(moab::Interface &moab, const std::string name, const Range r)
Simple interface for fast problem set-up.
PetscErrorCode DMMoFEMTSSetI2Jacobian(DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
set TS Jacobian evaluation function
virtual MoFEMErrorCode build_finite_elements(int verb=DEFAULT_VERBOSITY)=0
Build finite elements.
#define MOFEM_LOG_C(channel, severity, format,...)
std::vector< Range > TractionFreeBc
PetscErrorCode DMMoFEMTSSetI2Function(DM dm, const std::string fe_name, boost::shared_ptr< MoFEM::FEMethod > method, boost::shared_ptr< MoFEM::BasicMethod > pre_only, boost::shared_ptr< MoFEM::BasicMethod > post_only)
set TS implicit function evaluation function
static enum StretchSelector stretchSelector
SmartPetscObj< DM > dmElastic
Elastic problem.
boost::shared_ptr< FaceElementForcesAndSourcesCore > elasticBcLhs
boost::shared_ptr< ContactTree > contactTreeRhs
Make a contact tree.
PetscErrorCode DMMoFEMCreateSubDM(DM subdm, DM dm, const char problem_name[])
Must be called by user to set Sub DM MoFEM data structures.
boost::shared_ptr< Range > skeletonFaces
static enum RotSelector rotSelector
static boost::function< double(const double)> f
boost::shared_ptr< BcDispVec > bcSpatialDispVecPtr
static boost::function< double(const double)> inv_d_f
const std::string materialSkeletonElement
ElementsAndOps< SPACE_DIM >::SideEle SideEle
Calculate tenor field using vectorial base, i.e. Hdiv/Hcurl.
virtual int get_comm_size() const =0
boost::shared_ptr< TractionBcVec > bcSpatialTraction
EshelbianCore(MoFEM::Interface &m_field)
MoFEM::Interface & mField
static PetscBool noStretch
PostProcBrokenMeshInMoabBaseEndImpl< PostProcBrokenMeshInMoabBase< ForcesAndSourcesCore > > PostProcBrokenMeshInMoabBaseEnd
Enable to run stack of post-processing elements. Use this to end stack.
PetscErrorCode DMoFEMPreProcessFiniteElements(DM dm, MoFEM::FEMethod *method)
execute finite element method for each element in dm (problem)
Get norm of input MatrixDouble for Tensor1.
static PetscBool setSingularity
const std::string contactElement
MoFEMErrorCode setFaceElementOps(const bool add_elastic, const bool add_material, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< FaceElementForcesAndSourcesCore > &fe_lhs)
SmartPetscObj< DM > dM
Coupled problem all fields.
Set integration rule to boundary elements.
PetscErrorCode DMoFEMPostProcessFiniteElements(DM dm, MoFEM::FEMethod *method)
execute finite element method for each element in dm (problem)
const std::string rotAxis
PetscErrorCode DMMoFEMCreateMoFEM(DM dm, MoFEM::Interface *m_field_ptr, const char problem_name[], const MoFEM::BitRefLevel bit_level, const MoFEM::BitRefLevel bit_mask=MoFEM::BitRefLevel().set())
Must be called by user to set MoFEM data structures.
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string name_field)=0
set finite element field data
const std::string spatialL2Disp
boost::shared_ptr< Range > contactFaces
constexpr auto field_name
boost::shared_ptr< TractionFreeBc > bcSpatialFreeTraction
Calculate trace of vector (Hdiv/Hcurl) space.
static double dd_f_log_e(const double v)
static MoFEMErrorCode postStepDestroy()
Get field gradients at integration pts for scalar filed rank 0, i.e. vector field.
const std::string bubbleField
structure to get information form mofem into EntitiesFieldData
Calculate divergence of tonsorial field using vectorial base.
static boost::function< double(const double)> inv_f
const double v
phase velocity of light in medium (cm/ns)
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
#define MOFEM_LOG(channel, severity)
Log.
boost::shared_ptr< PhysicalEquations > physicalEquations
const std::string elementVolumeName
boost::shared_ptr< Range > frontVertices
#define NBVOLUMETET_CCG_BUBBLE(P)
Bubble function for CGG H div space.
ForcesAndSourcesCore::UserDataOperator UserDataOperator
BitRefLevel bitAdjParent
bit ref level for parent
@ DISCONTINUOUS
Broken continuity (No effect on L2 space)
BitRefLevel bitAdjEntMask
bit ref level for parent parent
static double inv_d_f_linear(const double v)
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
@ AINSWORTH_LEGENDRE_BASE
Ainsworth Cole (Legendre) approx. base .
PetscErrorCode DMMoFEMTSSetIFunction(DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
set TS implicit function evaluation function
Calculate symmetric tensor field values at integration pts.
const FTensor::Tensor2< T, Dim, Dim > Vec
@ MOFEM_DATA_INCONSISTENCY
MatrixDouble gaussPts
Matrix of integration points.
PetscErrorCode PetscOptionsGetString(PetscOptions *, const char pre[], const char name[], char str[], size_t size, PetscBool *set)
Interface for managing meshsets containing materials and boundary conditions.
auto createVectorMPI(MPI_Comm comm, PetscInt n, PetscInt N)
Create MPI Vector.
const std::string skeletonElement
virtual MoFEMErrorCode build_fields(int verb=DEFAULT_VERBOSITY)=0
static double inv_d_f_log(const double v)
PetscErrorCode DMMoFEMGetTsCtx(DM dm, MoFEM::TsCtx **ts_ctx)
get MoFEM::TsCtx data structure
static MoFEMErrorCode postStepInitialise(EshelbianCore *ep_ptr)
FieldApproximationBase
approximation base
BoundaryEle::UserDataOperator BdyEleOp
static boost::function< double(const double)> inv_dd_f
static double inv_dd_f_log(const double v)
FTensor::Index< 'm', 3 > m
MoFEMErrorCode getOptions()
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
@ MOFEM_ATOM_TEST_INVALID
virtual MoFEMErrorCode build_adjacencies(const Range &ents, int verb=DEFAULT_VERBOSITY)=0
build adjacencies
PetscErrorCode PetscOptionsGetScalar(PetscOptions *, const char pre[], const char name[], PetscScalar *dval, PetscBool *set)
int contactRefinementLevels
MoFEMErrorCode getBc(boost::shared_ptr< BC > &bc_vec_ptr, const std::string block_name, const int nb_attributes)
virtual bool check_finite_element(const std::string &name) const =0
Check if finite element is in database.
PetscErrorCode DMMoFEMAddSubFieldRow(DM dm, const char field_name[])
boost::shared_ptr< ParentFiniteElementAdjacencyFunctionSkeleton< 2 > > parentAdjSkeletonFunctionDim2
virtual MoFEMErrorCode set_field_order(const EntityHandle meshset, const EntityType type, const std::string &name, const ApproximationOrder order, int verb=DEFAULT_VERBOSITY)=0
Set order approximation of the entities in the field.
MoFEMErrorCode getCubitMeshsetPtr(const int ms_id, const CubitBCType cubit_bc_type, const CubitMeshSets **cubit_meshset_ptr) const
get cubit meshset
MoFEMErrorCode setVolumeElementOps(const int tag, const bool add_elastic, const bool add_material, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe_rhs, boost::shared_ptr< VolumeElementForcesAndSourcesCore > &fe_lhs)
const std::string crackElement
static auto get_range_from_block(MoFEM::Interface &m_field, const std::string block_name, int dim)
PetscErrorCode DMoFEMLoopFiniteElements(DM dm, const char fe_name[], MoFEM::FEMethod *method, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr())
Executes FEMethod for finite elements in DM.
const std::string materialL2Disp
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ HDIV
field with continuous normal traction
MoFEMErrorCode setContactElementRhsOps(boost::shared_ptr< ContactTree > &fe_contact_tree)
const std::string eshelbyStress
#define CHKERRG(n)
Check error code of MoFEM/MOAB/PETSc function.
virtual MoFEMErrorCode add_field(const std::string name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_of_coefficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
Add field.
BitRefLevel bitAdjEnt
bit ref level for parent
const std::string contactDisp
Element used to execute operators on side of the element.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
FTensor::Index< 'l', 3 > l
PostProcBrokenMeshInMoabBaseBeginImpl< PostProcBrokenMeshInMoabBase< ForcesAndSourcesCore > > PostProcBrokenMeshInMoabBaseBegin
Enable to run stack of post-processing elements. Use this to begin stack.
const std::string naturalBcElement
MoFEMErrorCode gettingNorms()
[Getting norms]
PetscErrorCode DMMoFEMSetIsPartitioned(DM dm, PetscBool is_partitioned)
const std::string materialH1Positions
PetscErrorCode PetscOptionsGetBool(PetscOptions *, const char pre[], const char name[], PetscBool *bval, PetscBool *set)