74 {
75
77
78 try {
79
80 moab::Core mb_instance;
81 moab::Interface &moab = mb_instance;
82
83
86
89
90 DMType dm_name = "DMMOFEM";
92
94 CHKERR simple_interface->getOptions();
95 CHKERR simple_interface->loadFile(
"");
96 CHKERR simple_interface->addDomainField(
"FIELD1",
H1,
98 CHKERR simple_interface->setFieldOrder(
"FIELD1",
order);
99 CHKERR simple_interface->setUp();
100
101 auto get_ents_on_mesh_skin = [&]() {
106 CHKERR skin.find_skin(0, faces,
false, skin_edges);
108 CHKERR moab.get_connectivity(skin_edges, skin_verts,
true);
109 skin_edges.merge(skin_verts);
110 return skin_edges;
111 };
112
113 auto mark_boundary_dofs = [&](
Range &skin_edges) {
115 std::vector<unsigned char>
marker;
116 problem_manager->markDofs(simple_interface->getProblemName(),
ROW,
118
119 problem_manager->modifyMarkDofs(simple_interface->getProblemName(),
ROW,
123 };
124
125 auto skin_ents = get_ents_on_mesh_skin();
126
127
128
129
130 auto marker = mark_boundary_dofs(skin_ents);
131
132 boost::shared_ptr<FaceEle> fe(
new FaceEle(m_field));
133 fe->getOpPtrVector().push_back(
new OpFace(skin_ents,
marker));
134
135 auto dm = simple_interface->getDM();
137 fe);
138 }
140
142}
MoFEM::FaceElementForcesAndSourcesCore FaceEle
#define CATCH_ERRORS
Catch errors.
@ AINSWORTH_LEGENDRE_BASE
Ainsworth Cole (Legendre) approx. base .
#define CHKERR
Inline error check.
PetscErrorCode DMRegister_MoFEM(const char sname[])
Register MoFEM problem.
PetscErrorCode DMoFEMLoopFiniteElements(DM dm, const char fe_name[], MoFEM::FEMethod *method, CacheTupleWeakPtr cache_ptr=CacheTupleSharedPtr())
Executes FEMethod for finite elements in DM.
auto marker
set bit to marker
PetscErrorCode PetscOptionsGetInt(PetscOptions *, const char pre[], const char name[], PetscInt *ivalue, PetscBool *set)
virtual moab::Interface & get_moab()=0
static MoFEMErrorCode Initialize(int *argc, char ***args, const char file[], const char help[])
Initializes the MoFEM database PETSc, MOAB and MPI.
static MoFEMErrorCode Finalize()
Checks for options to be called at the conclusion of the program.
Deprecated interface functions.
Problem manager is used to build and partition problems.
Simple interface for fast problem set-up.
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.