No Matches
Static Public Member Functions | List of all members
MetaEdgeForces Struct Reference

#include <users_modules/basic_finite_elements/src/EdgeForce.hpp>

Static Public Member Functions

static MoFEMErrorCode addElement (MoFEM::Interface &m_field, const std::string field_name, Range *intersect_ptr=NULL)
 Add element taking information from NODESET. More...
static MoFEMErrorCode setOperators (MoFEM::Interface &m_field, boost::ptr_map< std::string, EdgeForce > &edge_forces, Vec F, const std::string field_name, std::string mesh_node_positions="MESH_NODE_POSITIONS")
 Set integration point operators. More...

Detailed Description

Definition at line 59 of file EdgeForce.hpp.

Member Function Documentation

◆ addElement()

static MoFEMErrorCode MetaEdgeForces::addElement ( MoFEM::Interface m_field,
const std::string  field_name,
Range intersect_ptr = NULL 

Add element taking information from NODESET.

Remodeling.cpp, elasticity.cpp, elasticity_mixed_formulation.cpp, and nonlinear_dynamics.cpp.

Definition at line 62 of file EdgeForce.hpp.

64 {
66 CHKERR m_field.add_finite_element("FORCE_FE", MF_ZERO);
70 if (m_field.check_field("MESH_NODE_POSITIONS")) {
73 }
75 it)) {
76 Range tris;
77 CHKERR m_field.get_moab().get_entities_by_type(it->meshset, MBTRI, tris,
78 true);
79 Range edges;
80 CHKERR m_field.get_moab().get_entities_by_type(it->meshset, MBEDGE, edges,
81 true);
82 Range tris_edges;
83 CHKERR m_field.get_moab().get_adjacencies(tris, 1, false, tris_edges,
84 moab::Interface::UNION);
85 edges = subtract(edges, tris_edges);
86 if (intersect_ptr) {
87 edges = intersect(edges, *intersect_ptr);
88 }
89 CHKERR m_field.add_ents_to_finite_element_by_type(edges, MBEDGE,
90 "FORCE_FE");
91 }
93 }
Definition: definitions.h:98
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
Definition: definitions.h:151
Definition: definitions.h:146
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
#define CHKERR
Inline error check.
Definition: definitions.h:535
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
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 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
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string name_filed)=0
set finite element field data
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
virtual bool check_field(const std::string &name) const =0
check if field is in database
Iterator that loops over a specific Cubit MeshSet in a moFEM field.
constexpr auto field_name
virtual moab::Interface & get_moab()=0

◆ setOperators()

static MoFEMErrorCode MetaEdgeForces::setOperators ( MoFEM::Interface m_field,
boost::ptr_map< std::string, EdgeForce > &  edge_forces,
Vec  F,
const std::string  field_name,
std::string  mesh_node_positions = "MESH_NODE_POSITIONS" 

Set integration point operators.

Remodeling.cpp, elasticity.cpp, and elasticity_mixed_formulation.cpp.

Definition at line 97 of file EdgeForce.hpp.

100 {
102 string fe_name = "FORCE_FE";
103 edge_forces.insert(fe_name, new EdgeForce(m_field));
104 if (m_field.check_field(mesh_node_positions)) {
105 auto &fe = edge_forces.at(fe_name).getLoopFe();
106 auto field_ptr = m_field.get_field_structure(field_name);
107 const int nb_coefficients = field_ptr->getNbOfCoeffs();
108 if (nb_coefficients == 3) {
109 fe.getOpPtrVector().push_back(
110 new OpGetHOTangentsOnEdge<3>(mesh_node_positions));
111 }
112 else if (nb_coefficients == 2) {
113 fe.getOpPtrVector().push_back(
114 new OpGetHOTangentsOnEdge<2>(mesh_node_positions));
115 }
116 }
118 it)) {
119 CHKERR edge_forces.at(fe_name).addForce(field_name, F,
120 it->getMeshsetId());
121 }
123 }
@ F
virtual const Field * get_field_structure(const std::string &name, enum MoFEMTypes bh=MF_EXIST) const =0
get field structure
Force on edges and lines.
Definition: EdgeForce.hpp:13
FieldCoefficientsNumber getNbOfCoeffs() const
Get number of field coefficients.

The documentation for this struct was generated from the following file: