|
| v0.14.0
|
Set of high-level function declaring elements and setting operators to apply forces/fluxes.
More...
#include <users_modules/basic_finite_elements/src/SurfacePressure.hpp>
|
static MoFEMErrorCode | addNeumannBCElements (MoFEM::Interface &m_field, const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS", Range *intersect_ptr=NULL) |
| Declare finite element. More...
|
|
static MoFEMErrorCode | setMomentumFluxOperators (MoFEM::Interface &m_field, boost::ptr_map< std::string, NeumannForcesSurface > &neumann_forces, Vec F, const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS") |
| Set operators to finite elements calculating right hand side vector. More...
|
|
static MoFEMErrorCode | addNeumannFluxBCElements (MoFEM::Interface &m_field, const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS") |
|
static MoFEMErrorCode | setMassFluxOperators (MoFEM::Interface &m_field, boost::ptr_map< std::string, NeumannForcesSurface > &neumann_forces, Vec F, const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS") |
|
Set of high-level function declaring elements and setting operators to apply forces/fluxes.
Definition at line 1261 of file SurfacePressure.hpp.
◆ addNeumannBCElements()
MoFEMErrorCode MetaNeumannForces::addNeumannBCElements |
( |
MoFEM::Interface & |
m_field, |
|
|
const std::string |
field_name, |
|
|
const std::string |
mesh_nodals_positions = "MESH_NODE_POSITIONS" , |
|
|
Range * |
intersect_ptr = NULL |
|
) |
| |
|
static |
Declare finite element.
Search cubit sidesets and blocksets with pressure bc and declare surface elemen
Block set has to have name “PRESSURE”. Can have name “PRESSURE_01” or any other name with prefix. The first attribute of block set is pressure value.
- Parameters
-
m_field | Interface insurance |
field_name | Field name (f.e. DISPLACEMENT) |
mesh_nodals_positions | Name of field on which ho-geometry is defined |
intersect_ptr | Pointer to range to interect meshset entities |
- Returns
- Error code
- Examples
- elasticity.cpp, elasticity_mixed_formulation.cpp, mortar_contact_thermal.cpp, navier_stokes.cpp, nonlinear_dynamics.cpp, simple_contact.cpp, and simple_contact_thermal.cpp.
Definition at line 1974 of file SurfacePressure.cpp.
1987 mesh_nodals_positions);
1994 CHKERR m_field.
get_moab().get_entities_by_dimension(it->meshset, 2, tris,
1997 tris = intersect(tris, *intersect_ptr);
2008 mesh_nodals_positions);
2014 CHKERR m_field.
get_moab().get_entities_by_dimension(it->meshset, 2, tris,
2017 tris = intersect(tris, *intersect_ptr);
2023 const string block_set_force_name(
"FORCE");
2026 if (it->getName().compare(0, block_set_force_name.length(),
2027 block_set_force_name) == 0) {
2029 CHKERR m_field.
get_moab().get_entities_by_dimension(it->meshset, 2, tris,
2032 tris = intersect(tris, *intersect_ptr);
2038 const string block_set_pressure_name(
"PRESSURE");
2040 if (it->getName().compare(0, block_set_pressure_name.length(),
2041 block_set_pressure_name) == 0) {
2043 CHKERR m_field.
get_moab().get_entities_by_dimension(it->meshset, 2, tris,
2046 tris = intersect(tris, *intersect_ptr);
2053 const string block_set_linear_pressure_name(
"LINEAR_PRESSURE");
2055 if (it->getName().compare(0, block_set_linear_pressure_name.length(),
2056 block_set_linear_pressure_name) == 0) {
2058 CHKERR m_field.
get_moab().get_entities_by_dimension(it->meshset, 2, tris,
2061 tris = intersect(tris, *intersect_ptr);
◆ addNeumannFluxBCElements()
MoFEMErrorCode MetaNeumannForces::addNeumannFluxBCElements |
( |
MoFEM::Interface & |
m_field, |
|
|
const std::string |
field_name, |
|
|
const std::string |
mesh_nodals_positions = "MESH_NODE_POSITIONS" |
|
) |
| |
|
static |
◆ setMassFluxOperators()
MoFEMErrorCode MetaNeumannForces::setMassFluxOperators |
( |
MoFEM::Interface & |
m_field, |
|
|
boost::ptr_map< std::string, NeumannForcesSurface > & |
neumann_forces, |
|
|
Vec |
F, |
|
|
const std::string |
field_name, |
|
|
const std::string |
mesh_nodals_positions = "MESH_NODE_POSITIONS" |
|
) |
| |
|
static |
Definition at line 2166 of file SurfacePressure.cpp.
2171 bool ho_geometry = m_field.
check_field(mesh_nodals_positions);
2174 fe_name =
"FLUX_FE";
2177 auto &nf = neumann_forces.at(fe_name);
2178 auto &fe = nf.getLoopFe();
◆ setMomentumFluxOperators()
MoFEMErrorCode MetaNeumannForces::setMomentumFluxOperators |
( |
MoFEM::Interface & |
m_field, |
|
|
boost::ptr_map< std::string, NeumannForcesSurface > & |
neumann_forces, |
|
|
Vec |
F, |
|
|
const std::string |
field_name, |
|
|
const std::string |
mesh_nodals_positions = "MESH_NODE_POSITIONS" |
|
) |
| |
|
static |
Set operators to finite elements calculating right hand side vector.
- Parameters
-
m_field | Interface |
neumann_forces | Map of pointers to force/pressure elements |
F | Right hand side vector |
field_name | Field name (f.e. DISPLACEMENT) |
mesh_nodals_positions | Name of field on which ho-geometry is defined |
- Returns
- Error code
- Examples
- elasticity.cpp, elasticity_mixed_formulation.cpp, mortar_contact_thermal.cpp, navier_stokes.cpp, simple_contact.cpp, and simple_contact_thermal.cpp.
Definition at line 2069 of file SurfacePressure.cpp.
2074 bool ho_geometry = m_field.
check_field(mesh_nodals_positions);
2077 std::string fe_name =
"FORCE_FE";
2079 auto &nf = neumann_forces.at(fe_name);
2080 auto &fe = nf.getLoopFe();
2090 const string block_set_force_name(
"FORCE");
2092 if (it->getName().compare(0, block_set_force_name.length(),
2093 block_set_force_name) == 0) {
2102 std::string fe_name =
"PRESSURE_FE";
2105 auto &nf = neumann_forces.at(fe_name);
2106 auto &fe = nf.getLoopFe();
2118 const string block_set_pressure_name(
"PRESSURE");
2120 if (it->getName().compare(0, block_set_pressure_name.length(),
2121 block_set_pressure_name) == 0) {
2128 const string block_set_linear_pressure_name(
"LINEAR_PRESSURE");
2130 if (it->getName().compare(0, block_set_linear_pressure_name.length(),
2131 block_set_linear_pressure_name) == 0) {
The documentation for this struct was generated from the following files:
MoFEMErrorCode addHOOpsFace3D(const std::string field, E &e, bool hcurl, bool hdiv)
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
#define _IT_CUBITMESHSETS_BY_BCDATA_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet in a moFEM field.
#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
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
virtual bool check_field(const std::string &name) const =0
check if field is in database
virtual MoFEMErrorCode add_ents_to_finite_element_by_dim(const EntityHandle entities, const int dim, const std::string &name, const bool recursive=true)=0
add entities to finite element
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string name_field)=0
set finite element field data
constexpr auto field_name
#define _IT_CUBITMESHSETS_BY_SET_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet having a particular BC meshset in a moFEM field.
Finite element and operators to apply force/pressures applied to surfaces.
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...