v0.14.0
Classes | Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
PostProcFaceOnRefinedMesh Struct Reference

Postprocess on face. More...

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

Inheritance diagram for PostProcFaceOnRefinedMesh:
[legend]
Collaboration diagram for PostProcFaceOnRefinedMesh:
[legend]

Classes

struct  CommonData
 
struct  OpGetFieldValuesOnSkinImpl
 

Public Types

typedef struct OpGetFieldValuesOnSkinImpl< 3 > OpGetFieldGradientValuesOnSkin
 
typedef struct OpGetFieldValuesOnSkinImpl< 1 > OpGetFieldValuesOnSkin
 
- Public Types inherited from MoFEM::ForcesAndSourcesCore
typedef boost::function< int(int order_row, int order_col, int order_data)> RuleHookFun
 
typedef boost::function< MoFEMErrorCode(ForcesAndSourcesCore *fe_raw_ptr, int order_row, int order_col, int order_data)> GaussHookFun
 
- Public Types inherited from MoFEM::KspMethod
enum  KSPContext { CTX_SETFUNCTION, CTX_OPERATORS, CTX_KSPNONE }
 pass information about context of KSP/DM for with finite element is computed More...
 
- Public Types inherited from MoFEM::PetscData
enum  DataContext {
  CTX_SET_NONE = 0, CTX_SET_F = 1 << 0, CTX_SET_A = 1 << 1, CTX_SET_B = 1 << 2,
  CTX_SET_X = 1 << 3, CTX_SET_X_T = 1 << 4, CTX_SET_X_TT = 1 << 6, CTX_SET_TIME = 1 << 7
}
 
using Switches = std::bitset< 8 >
 
- Public Types inherited from MoFEM::SnesMethod
enum  SNESContext { CTX_SNESSETFUNCTION, CTX_SNESSETJACOBIAN, CTX_SNESNONE }
 
- Public Types inherited from MoFEM::TSMethod
enum  TSContext {
  CTX_TSSETRHSFUNCTION, CTX_TSSETRHSJACOBIAN, CTX_TSSETIFUNCTION, CTX_TSSETIJACOBIAN,
  CTX_TSTSMONITORSET, CTX_TSNONE
}
 

Public Member Functions

 PostProcFaceOnRefinedMesh (MoFEM::Interface &m_field, bool six_node_post_proc_tris=true)
 
int getRule (int order)
 
MoFEMErrorCode generateReferenceElementMesh ()
 
MoFEMErrorCode setGaussPts (int order)
 
MoFEMErrorCode preProcess ()
 function is run at the beginning of loop More...
 
MoFEMErrorCode postProcess ()
 function is run at the end of loop More...
 
virtual PostProcCommonOnRefMesh::CommonDatagetCommonData ()
 
MoFEMErrorCode addFieldValuesGradientPostProcOnSkin (const std::string field_name, const std::string vol_fe_name="dFE", boost::shared_ptr< MatrixDouble > grad_mat_ptr=nullptr, bool save_on_tag=true)
 
MoFEMErrorCode addFieldValuesPostProcOnSkin (const std::string field_name, const std::string vol_fe_name="dFE", boost::shared_ptr< MatrixDouble > mat_ptr=nullptr, bool save_on_tag=true)
 
- Public Member Functions inherited from PostProcTemplateOnRefineMesh< MoFEM::FaceElementForcesAndSourcesCore >
 PostProcTemplateOnRefineMesh (MoFEM::Interface &m_field)
 
virtual ~PostProcTemplateOnRefineMesh ()
 
MoFEMErrorCode addFieldValuesPostProc (const std::string field_name, Vec v=PETSC_NULL)
 Add operator to post-process L2, H1, Hdiv, Hcurl field value. More...
 
MoFEMErrorCode addFieldValuesPostProc (const std::string field_name, const std::string tag_name, Vec v=PETSC_NULL)
 Add operator to post-process L2 or H1 field value. More...
 
MoFEMErrorCode addFieldValuesGradientPostProc (const std::string field_name, Vec v=PETSC_NULL)
 Add operator to post-process L2 or H1 field gradient. More...
 
MoFEMErrorCode addFieldValuesGradientPostProc (const std::string field_name, const std::string tag_name, Vec v=PETSC_NULL)
 Add operator to post-process L2 or H1 field gradient. More...
 
MoFEMErrorCode addFieldValuesGradientPostProc (const std::string field_name, int space_dim, Vec v=PETSC_NULL)
 Add operator to post-process L2 or H1 field gradient. More...
 
MoFEMErrorCode writeFile (const std::string file_name, const char *file_type="MOAB", const char *file_options="PARALLEL=WRITE_PART")
 wrote results in (MOAB) format, use "file_name.h5m" More...
 
- Public Member Functions inherited from MoFEM::FaceElementForcesAndSourcesCore
MoFEMErrorCode operator() ()
 function is run for every finite element More...
 
 FaceElementForcesAndSourcesCore (Interface &m_field)
 
- Public Member Functions inherited from MoFEM::ForcesAndSourcesCore
 ForcesAndSourcesCore (Interface &m_field)
 
boost::ptr_deque< UserDataOperator > & getOpPtrVector ()
 Use to push back operator for row operator. More...
 
auto & getElementPolynomialBase ()
 Get the Entity Polynomial Base object. More...
 
auto & getUserPolynomialBase ()
 Get the User Polynomial Base object. More...
 
int getMaxDataOrder () const
 Get max order of approximation for data fields. More...
 
int getMaxRowOrder () const
 Get max order of approximation for field in rows. More...
 
int getMaxColOrder () const
 Get max order of approximation for field in columns. More...
 
auto & getEntData (const FieldSpace space, const EntityType type, const int side)
 Get the entity data. More...
 
auto & getDataOnElementBySpaceArray ()
 Get data on entities and space. More...
 
auto & getDerivedDataOnElementBySpaceArray ()
 Get derived data on entities and space. More...
 
- Public Member Functions inherited from MoFEM::FEMethod
MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 FEMethod ()=default
 
auto getFEName () const
 get finite element name More...
 
auto getDataDofsPtr () const
 
auto getDataVectorDofsPtr () const
 
const FieldEntity_vector_viewgetDataFieldEnts () const
 
boost::shared_ptr< FieldEntity_vector_view > & getDataFieldEntsPtr () const
 
auto & getRowFieldEnts () const
 
auto & getRowFieldEntsPtr () const
 
auto & getColFieldEnts () const
 
auto & getColFieldEntsPtr () const
 
auto getRowDofsPtr () const
 
auto getColDofsPtr () const
 
auto getNumberOfNodes () const
 
EntityHandle getFEEntityHandle () const
 
MoFEMErrorCode getNodeData (const std::string field_name, VectorDouble &data, const bool reset_dofs=true)
 
- Public Member Functions inherited from MoFEM::BasicMethod
 BasicMethod ()
 
virtual ~BasicMethod ()=default
 
int getNinTheLoop () const
 get number of evaluated element in the loop More...
 
int getLoopSize () const
 get loop size More...
 
auto getLoHiFERank () const
 Get lo and hi processor rank of iterated entities. More...
 
auto getLoFERank () const
 Get upper rank in loop for iterating elements. More...
 
auto getHiFERank () const
 Get upper rank in loop for iterating elements. More...
 
unsigned int getFieldBitNumber (std::string field_name) const
 
MoFEMErrorCode copyBasicMethod (const BasicMethod &basic)
 Copy data from other base method to this base method. More...
 
boost::weak_ptr< CacheTuplegetCacheWeakPtr () const
 Get the cache weak ptr object. More...
 
- Public Member Functions inherited from MoFEM::KspMethod
 KspMethod ()
 
virtual ~KspMethod ()=default
 
MoFEMErrorCode copyKsp (const KspMethod &ksp)
 copy data form another method More...
 
- Public Member Functions inherited from MoFEM::PetscData
 PetscData ()
 
virtual ~PetscData ()=default
 
MoFEMErrorCode copyPetscData (const PetscData &petsc_data)
 
- Public Member Functions inherited from MoFEM::UnknownInterface
template<class IFACE >
MoFEMErrorCode registerInterface (bool error_if_registration_failed=true)
 Register interface. More...
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE *&iface) const
 Get interface refernce 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
 
- Public Member Functions inherited from MoFEM::SnesMethod
 SnesMethod ()
 
virtual ~SnesMethod ()=default
 
MoFEMErrorCode copySnes (const SnesMethod &snes)
 Copy snes data. More...
 
- Public Member Functions inherited from MoFEM::TSMethod
 TSMethod ()
 
virtual ~TSMethod ()=default
 
MoFEMErrorCode copyTs (const TSMethod &ts)
 Copy TS solver data. More...
 

Public Attributes

bool sixNodePostProcTris
 
std::map< EntityHandle, EntityHandleelementsMap
 
CommonData commonData
 
- Public Attributes inherited from PostProcTemplateOnRefineMesh< MoFEM::FaceElementForcesAndSourcesCore >
moab::Core coreMesh
 
moab::Interface & postProcMesh
 
boost::shared_ptr< WrapMPIComm > wrapRefMeshComm
 
std::vector< EntityHandlemapGaussPts
 
- Public Attributes inherited from MoFEM::FaceElementForcesAndSourcesCore
std::string meshPositionsFieldName
 
- Public Attributes inherited from MoFEM::ForcesAndSourcesCore
InterfacemField
 
RuleHookFun getRuleHook
 Hook to get rule. More...
 
GaussHookFun setRuleHook
 Set function to calculate integration rule. More...
 
MatrixDouble gaussPts
 Matrix of integration points. More...
 
- Public Attributes inherited from MoFEM::FEMethod
std::string feName
 Name of finite element. More...
 
boost::shared_ptr< const NumeredEntFiniteElementnumeredEntFiniteElementPtr
 
boost::function< bool(FEMethod *fe_method_ptr)> exeTestHook
 Tet if element to skip element. More...
 
- Public Attributes inherited from MoFEM::BasicMethod
int nInTheLoop
 number currently of processed method More...
 
int loopSize
 local number oe methods to process More...
 
std::pair< int, int > loHiFERank
 Llo and hi processor rank of iterated entities. More...
 
int rAnk
 processor rank More...
 
int sIze
 number of processors in communicator More...
 
const RefEntity_multiIndexrefinedEntitiesPtr
 container of mofem dof entities More...
 
const RefElement_multiIndexrefinedFiniteElementsPtr
 container of mofem finite element entities More...
 
const ProblemproblemPtr
 raw pointer to problem More...
 
const Field_multiIndexfieldsPtr
 raw pointer to fields container More...
 
const FieldEntity_multiIndexentitiesPtr
 raw pointer to container of field entities More...
 
const DofEntity_multiIndexdofsPtr
 raw pointer container of dofs More...
 
const FiniteElement_multiIndexfiniteElementsPtr
 raw pointer to container finite elements More...
 
const EntFiniteElement_multiIndexfiniteElementsEntitiesPtr
 
const FieldEntityEntFiniteElementAdjacencyMap_multiIndexadjacenciesPtr
 
boost::function< MoFEMErrorCode()> preProcessHook
 Hook function for pre-processing. More...
 
boost::function< MoFEMErrorCode()> postProcessHook
 Hook function for post-processing. More...
 
boost::function< MoFEMErrorCode()> operatorHook
 Hook function for operator. More...
 
boost::movelib::unique_ptr< boolvecAssembleSwitch
 
boost::movelib::unique_ptr< boolmatAssembleSwitch
 
boost::weak_ptr< CacheTuplecacheWeakPtr
 
- Public Attributes inherited from MoFEM::KspMethod
KSPContext ksp_ctx
 Context. More...
 
KSP ksp
 KSP solver. More...
 
Vec & ksp_f
 
Mat & ksp_A
 
Mat & ksp_B
 
- Public Attributes inherited from MoFEM::PetscData
Switches data_ctx
 
Vec f
 
Mat A
 
Mat B
 
Vec x
 
Vec x_t
 
Vec x_tt
 
- Public Attributes inherited from MoFEM::SnesMethod
SNESContext snes_ctx
 
SNES snes
 snes solver More...
 
Vec & snes_x
 state vector More...
 
Vec & snes_f
 residual More...
 
Mat & snes_A
 jacobian matrix More...
 
Mat & snes_B
 preconditioner of jacobian matrix More...
 
- Public Attributes inherited from MoFEM::TSMethod
TS ts
 time solver More...
 
TSContext ts_ctx
 
PetscInt ts_step
 time step number More...
 
PetscReal ts_a
 shift for U_t (see PETSc Time Solver) More...
 
PetscReal ts_aa
 shift for U_tt shift for U_tt More...
 
PetscReal ts_t
 time More...
 
PetscReal ts_dt
 time step size More...
 
Vec & ts_u
 state vector More...
 
Vec & ts_u_t
 time derivative of state vector More...
 
Vec & ts_u_tt
 second time derivative of state vector More...
 
Vec & ts_F
 residual vector More...
 
Mat & ts_A
 
Mat & ts_B
 Preconditioner for ts_A. More...
 

Private Attributes

MatrixDouble gaussPtsTri
 Gauss points coordinates on reference triangle. More...
 
MatrixDouble gaussPtsQuad
 Gauss points coordinates on reference quad. More...
 
EntityHandletriConn
 Connectivity for created tri elements. More...
 
EntityHandlequadConn
 Connectivity for created quad elements. More...
 
EntityHandle startingVertTriHandle
 Starting handle for vertices on triangles. More...
 
EntityHandle startingVertQuadHandle
 Starting handle for vertices on quads. More...
 
std::vector< double * > verticesOnTriArrays
 
std::vector< double * > verticesOnQuadArrays
 
EntityHandle startingEleTriHandle
 Starting handle for triangles post proc. More...
 
EntityHandle startingEleQuadHandle
 Starting handle for quads post proc. More...
 
int numberOfTriangles
 Number of triangles to create. More...
 
int numberOfQuads
 NUmber of quads to create. More...
 
int counterTris
 
int counterQuads
 

Additional Inherited Members

- Static Public Member Functions inherited from MoFEM::UnknownInterface
static MoFEMErrorCode getLibVersion (Version &version)
 Get library version. More...
 
static MoFEMErrorCode getFileVersion (moab::Interface &moab, Version &version)
 Get database major version. More...
 
static MoFEMErrorCode setFileVersion (moab::Interface &moab, Version version=Version(MoFEM_VERSION_MAJOR, MoFEM_VERSION_MINOR, MoFEM_VERSION_BUILD))
 Get database major version. More...
 
static MoFEMErrorCode getInterfaceVersion (Version &version)
 Get database major version. More...
 
- Static Public Attributes inherited from MoFEM::PetscData
static constexpr Switches CtxSetNone = PetscData::Switches(CTX_SET_NONE)
 
static constexpr Switches CtxSetF = PetscData::Switches(CTX_SET_F)
 
static constexpr Switches CtxSetA = PetscData::Switches(CTX_SET_A)
 
static constexpr Switches CtxSetB = PetscData::Switches(CTX_SET_B)
 
static constexpr Switches CtxSetX = PetscData::Switches(CTX_SET_X)
 
static constexpr Switches CtxSetX_T = PetscData::Switches(CTX_SET_X_T)
 
static constexpr Switches CtxSetX_TT = PetscData::Switches(CTX_SET_X_TT)
 
static constexpr Switches CtxSetTime = PetscData::Switches(CTX_SET_TIME)
 
- Protected Member Functions inherited from MoFEM::FaceElementForcesAndSourcesCore
virtual MoFEMErrorCode calculateAreaAndNormalAtIntegrationPts ()
 Calculate element area and normal of the face at integration points. More...
 
virtual MoFEMErrorCode calculateAreaAndNormal ()
 Calculate element area and normal of the face. More...
 
virtual MoFEMErrorCode setIntegrationPts ()
 Set integration points. More...
 
virtual MoFEMErrorCode getSpaceBaseAndOrderOnElement ()
 Determine approximation space and order of base functions. More...
 
virtual MoFEMErrorCode calculateCoordinatesAtGaussPts ()
 Calculate coordinate at integration points. More...
 
- Protected Member Functions inherited from MoFEM::ForcesAndSourcesCore
MoFEMErrorCode getEntitySense (const EntityType type, boost::ptr_vector< EntitiesFieldData::EntData > &data) const
 get sense (orientation) of entity More...
 
MoFEMErrorCode getEntityDataOrder (const EntityType type, const FieldSpace space, boost::ptr_vector< EntitiesFieldData::EntData > &data) const
 Get the entity data order. More...
 
template<EntityType type>
MoFEMErrorCode getEntitySense (EntitiesFieldData &data) const
 Get the entity sense (orientation) More...
 
template<EntityType type>
MoFEMErrorCode getEntityDataOrder (EntitiesFieldData &data, const FieldSpace space) const
 Get the entity data order for given space. More...
 
MoFEMErrorCode getFaceNodes (EntitiesFieldData &data) const
 Get nodes on faces. More...
 
MoFEMErrorCode getSpacesAndBaseOnEntities (EntitiesFieldData &data) const
 Get field approximation space and base on entities. More...
 
virtual int getRule (int order_row, int order_col, int order_data)
 another variant of getRule More...
 
virtual MoFEMErrorCode setGaussPts (int order_row, int order_col, int order_data)
 set user specific integration rule More...
 
MoFEMErrorCode calHierarchicalBaseFunctionsOnElement (const FieldApproximationBase b)
 Calculate base functions. More...
 
MoFEMErrorCode calHierarchicalBaseFunctionsOnElement ()
 Calculate base functions. More...
 
MoFEMErrorCode calBernsteinBezierBaseFunctionsOnElement ()
 Calculate Bernstein-Bezier base. More...
 
MoFEMErrorCode createDataOnElement (EntityType type)
 Create a entity data on element object. More...
 
MoFEMErrorCode loopOverOperators ()
 Iterate user data operators. More...
 
template<typename EXTRACTOR >
MoFEMErrorCode getNodesIndices (const int bit_number, FieldEntity_vector_view &ents_field, VectorInt &nodes_indices, VectorInt &local_nodes_indices, EXTRACTOR &&extractor) const
 get node indices More...
 
MoFEMErrorCode getRowNodesIndices (EntitiesFieldData &data, const int bit_number) const
 get row node indices from FENumeredDofEntity_multiIndex More...
 
MoFEMErrorCode getColNodesIndices (EntitiesFieldData &data, const int bit_number) const
 get col node indices from FENumeredDofEntity_multiIndex More...
 
template<typename EXTRACTOR >
MoFEMErrorCode getEntityIndices (EntitiesFieldData &data, const int bit_number, FieldEntity_vector_view &ents_field, const EntityType type_lo, const EntityType type_hi, EXTRACTOR &&extractor) const
 
MoFEMErrorCode getEntityRowIndices (EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const
 
MoFEMErrorCode getEntityColIndices (EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const
 
MoFEMErrorCode getNoFieldIndices (const int bit_number, boost::shared_ptr< FENumeredDofEntity_multiIndex > dofs, VectorInt &nodes_indices) const
 get NoField indices More...
 
MoFEMErrorCode getNoFieldRowIndices (EntitiesFieldData &data, const int bit_number) const
 get col NoField indices More...
 
MoFEMErrorCode getNoFieldColIndices (EntitiesFieldData &data, const int bit_number) const
 get col NoField indices More...
 
MoFEMErrorCode getBitRefLevelOnData ()
 
MoFEMErrorCode getNoFieldFieldData (const int bit_number, VectorDouble &ent_field_data, VectorDofs &ent_field_dofs, VectorFieldEntities &ent_field) const
 Get field data on nodes. More...
 
MoFEMErrorCode getNoFieldFieldData (EntitiesFieldData &data, const int bit_number) const
 
MoFEMErrorCode getNodesFieldData (EntitiesFieldData &data, const int bit_number) const
 Get data on nodes. More...
 
MoFEMErrorCode getEntityFieldData (EntitiesFieldData &data, const int bit_number, const EntityType type_lo=MBVERTEX, const EntityType type_hi=MBPOLYHEDRON) const
 
MoFEMErrorCode getProblemNodesIndices (const std::string &field_name, const NumeredDofEntity_multiIndex &dofs, VectorInt &nodes_indices) const
 get indices of nodal indices which are declared for problem but not this particular element More...
 
MoFEMErrorCode getProblemTypeIndices (const std::string &field_name, const NumeredDofEntity_multiIndex &dofs, EntityType type, int side_number, VectorInt &indices) const
 get indices by type (generic function) which are declared for problem but not this particular element More...
 
MoFEMErrorCode getProblemNodesRowIndices (const std::string &field_name, VectorInt &nodes_indices) const
 
MoFEMErrorCode getProblemTypeRowIndices (const std::string &field_name, EntityType type, int side_number, VectorInt &indices) const
 
MoFEMErrorCode getProblemNodesColIndices (const std::string &field_name, VectorInt &nodes_indices) const
 
MoFEMErrorCode getProblemTypeColIndices (const std::string &field_name, EntityType type, int side_number, VectorInt &indices) const
 
- Protected Attributes inherited from MoFEM::FaceElementForcesAndSourcesCore
doubleaRea
 
int num_nodes
 
const EntityHandleconn
 
VectorDouble nOrmal
 
VectorDouble tangentOne
 
VectorDouble tangentTwo
 
VectorDouble coords
 
MatrixDouble normalsAtGaussPts
 
MatrixDouble tangentOneAtGaussPts
 
MatrixDouble tangentTwoAtGaussPts
 
- Protected Attributes inherited from MoFEM::ForcesAndSourcesCore
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACEdataOnElement
 Entity data on element entity rows fields. More...
 
const std::array< boost::shared_ptr< EntitiesFieldData >, LASTSPACEderivedDataOnElement
 Entity data on element entity columns fields. More...
 
EntitiesFieldDatadataNoField
 
EntitiesFieldDatadataH1
 
EntitiesFieldDatadataHcurl
 
EntitiesFieldDatadataHdiv
 
EntitiesFieldDatadataL2
 
boost::ptr_deque< UserDataOperatoropPtrVector
 Vector of finite element users data operators. More...
 
EntityType lastEvaluatedElementEntityType
 Last evaluated type of element entity. More...
 
MatrixDouble coordsAtGaussPts
 coordinated at gauss points More...
 
double elementMeasure
 

Detailed Description

Postprocess on face.

Examples
cell_forces.cpp, elasticity.cpp, minimal_surface_area.cpp, mortar_contact_thermal.cpp, simple_contact.cpp, and simple_contact_thermal.cpp.

Definition at line 1032 of file PostProcOnRefMesh.hpp.

Member Typedef Documentation

◆ OpGetFieldGradientValuesOnSkin

Definition at line 1092 of file PostProcOnRefMesh.hpp.

◆ OpGetFieldValuesOnSkin

Definition at line 1093 of file PostProcOnRefMesh.hpp.

Constructor & Destructor Documentation

◆ PostProcFaceOnRefinedMesh()

PostProcFaceOnRefinedMesh::PostProcFaceOnRefinedMesh ( MoFEM::Interface m_field,
bool  six_node_post_proc_tris = true 
)
inline

Definition at line 1037 of file PostProcOnRefMesh.hpp.

1040  m_field),
1041  sixNodePostProcTris(six_node_post_proc_tris), counterTris(0),
1042  counterQuads(0) {}

Member Function Documentation

◆ addFieldValuesGradientPostProcOnSkin()

MoFEMErrorCode PostProcFaceOnRefinedMesh::addFieldValuesGradientPostProcOnSkin ( const std::string  field_name,
const std::string  vol_fe_name = "dFE",
boost::shared_ptr< MatrixDouble >  grad_mat_ptr = nullptr,
bool  save_on_tag = true 
)

Definition at line 999 of file PostProcOnRefMesh.cpp.

1001  {
1003 
1004  if (!grad_mat_ptr)
1005  grad_mat_ptr = boost::make_shared<MatrixDouble>();
1006 
1007  boost::shared_ptr<VolumeElementForcesAndSourcesCoreOnSide> my_side_fe =
1008  boost::make_shared<VolumeElementForcesAndSourcesCoreOnSide>(mField);
1009 
1010  if (mField.check_field("MESH_NODE_POSITIONS"))
1011  CHKERR addHOOpsVol("MESH_NODE_POSITIONS", *my_side_fe, true, false, false,
1012  false);
1013 
1014  // check number of coefficients
1015  auto field_ptr = mField.get_field_structure(field_name);
1016  const int nb_coefficients = field_ptr->getNbOfCoeffs();
1017 
1018  switch (nb_coefficients) {
1019  case 1:
1020  my_side_fe->getOpPtrVector().push_back(
1021  new OpCalculateScalarFieldGradient<3>(field_name, grad_mat_ptr));
1022  break;
1023  case 3:
1024  my_side_fe->getOpPtrVector().push_back(
1026  break;
1027  case 6:
1028  my_side_fe->getOpPtrVector().push_back(
1030  grad_mat_ptr));
1031  break;
1032  default:
1033  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
1034  "field with that number of coefficients is not implemented");
1035  }
1036 
1037  FaceElementForcesAndSourcesCore::getOpPtrVector().push_back(
1038  new OpGetFieldValuesOnSkinImpl<3>(
1040  my_side_fe, vol_fe_name, grad_mat_ptr, save_on_tag));
1041 
1043 }

◆ addFieldValuesPostProcOnSkin()

MoFEMErrorCode PostProcFaceOnRefinedMesh::addFieldValuesPostProcOnSkin ( const std::string  field_name,
const std::string  vol_fe_name = "dFE",
boost::shared_ptr< MatrixDouble >  mat_ptr = nullptr,
bool  save_on_tag = true 
)

Definition at line 1045 of file PostProcOnRefMesh.cpp.

1047  {
1049 
1050  if (!mat_ptr)
1051  mat_ptr = boost::make_shared<MatrixDouble>();
1052 
1053  auto my_side_fe =
1054  boost::make_shared<VolumeElementForcesAndSourcesCoreOnSide>(mField);
1055 
1056  // check number of coefficients
1057  auto field_ptr = mField.get_field_structure(field_name);
1058  const int nb_coefficients = field_ptr->getNbOfCoeffs();
1059  FieldSpace space = field_ptr->getSpace();
1060 
1061  switch (space) {
1062  case L2:
1063  case H1:
1064  switch (nb_coefficients) {
1065  case 1:
1066  my_side_fe->getOpPtrVector().push_back(
1068  break;
1069  case 3:
1070  my_side_fe->getOpPtrVector().push_back(
1072  break;
1073  case 6:
1074  my_side_fe->getOpPtrVector().push_back(
1076  break;
1077  case 9:
1078  my_side_fe->getOpPtrVector().push_back(
1080  break;
1081  default:
1082  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
1083  "field with that number of coefficients is not implemented");
1084  }
1085  break;
1086  case HDIV:
1087  switch (nb_coefficients) {
1088  case 1:
1089  my_side_fe->getOpPtrVector().push_back(
1091  break;
1092  case 3:
1093  my_side_fe->getOpPtrVector().push_back(
1095  break;
1096  default:
1097  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
1098  "field with that number of coefficients is not implemented");
1099  }
1100  break;
1101  default:
1102  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
1103  "field with that space is not implemented.");
1104  }
1105 
1106  FaceElementForcesAndSourcesCore::getOpPtrVector().push_back(
1107  new OpGetFieldValuesOnSkinImpl<1>(postProcMesh, mapGaussPts, field_name,
1108  field_name, my_side_fe, vol_fe_name,
1109  mat_ptr, save_on_tag));
1110 
1112 }

◆ generateReferenceElementMesh()

MoFEMErrorCode PostProcFaceOnRefinedMesh::generateReferenceElementMesh ( )
Examples
minimal_surface_area.cpp.

Definition at line 539 of file PostProcOnRefMesh.cpp.

539  {
541 
542  auto generate_tri = [&](auto &gauss_pts) {
544  gauss_pts.resize(3, 3, false);
545  gauss_pts.clear();
546  gauss_pts(0, 0) = 0;
547  gauss_pts(1, 0) = 0;
548  gauss_pts(0, 1) = 1;
549  gauss_pts(1, 1) = 0;
550  gauss_pts(0, 2) = 0;
551  gauss_pts(1, 2) = 1;
552 
553  moab::Core core_ref;
554  moab::Interface &moab_ref = core_ref;
555  const EntityHandle *conn;
556  int num_nodes;
557  EntityHandle tri_conn[3];
558  MatrixDouble coords(6, 3);
559  for (int gg = 0; gg != 3; gg++) {
560  coords(gg, 0) = gauss_pts(0, gg);
561  coords(gg, 1) = gauss_pts(1, gg);
562  coords(gg, 2) = 0;
563  CHKERR moab_ref.create_vertex(&coords(gg, 0), tri_conn[gg]);
564  }
565 
566  EntityHandle tri;
567  CHKERR moab_ref.create_element(MBTRI, tri_conn, 3, tri);
568 
569  if (sixNodePostProcTris) {
570  Range edges;
571  CHKERR moab_ref.get_adjacencies(&tri, 1, 1, true, edges);
572  EntityHandle meshset;
573  CHKERR moab_ref.create_meshset(MESHSET_SET, meshset);
574  CHKERR moab_ref.add_entities(meshset, &tri, 1);
575  CHKERR moab_ref.add_entities(meshset, edges);
576  CHKERR moab_ref.convert_entities(meshset, true, false, false);
577  CHKERR moab_ref.get_connectivity(tri, conn, num_nodes, false);
578  CHKERR moab_ref.get_coords(conn, num_nodes, &coords(0, 0));
579  gauss_pts.resize(3, num_nodes, false);
580  gauss_pts.clear();
581  for (int nn = 0; nn < num_nodes; nn++) {
582  gauss_pts(0, nn) = coords(nn, 0);
583  gauss_pts(1, nn) = coords(nn, 1);
584  }
585  } else {
586  CHKERR moab_ref.get_connectivity(tri, conn, num_nodes, false);
587  CHKERR moab_ref.get_coords(conn, num_nodes, &coords(0, 0));
588  gauss_pts.resize(3, num_nodes, false);
589  gauss_pts.clear();
590  for (int nn = 0; nn < 3; nn++) {
591  gauss_pts(0, nn) = coords(nn, 0);
592  gauss_pts(1, nn) = coords(nn, 1);
593  }
594  }
596  };
597 
598  auto generate_quad = [&](auto &gauss_pts) {
600 
601  gauss_pts.resize(3, 4, false);
602  gauss_pts.clear();
603 
604  gauss_pts(0, 0) = 0;
605  gauss_pts(1, 0) = 0;
606  gauss_pts(0, 1) = 1;
607  gauss_pts(1, 1) = 0;
608  gauss_pts(0, 2) = 1;
609  gauss_pts(1, 2) = 1;
610  gauss_pts(0, 3) = 0;
611  gauss_pts(1, 3) = 1;
612 
613  moab::Core core_ref;
614  moab::Interface &moab_ref = core_ref;
615 
616  const EntityHandle *conn;
617  int num_nodes;
618  std::array<EntityHandle, 4> quad_conn;
619  MatrixDouble coords(8, 3);
620  for (int gg = 0; gg != 4; gg++) {
621  coords(gg, 0) = gauss_pts(0, gg);
622  coords(gg, 1) = gauss_pts(1, gg);
623  coords(gg, 2) = 0;
624  CHKERR moab_ref.create_vertex(&coords(gg, 0), quad_conn[gg]);
625  }
626 
627  EntityHandle quad;
628  CHKERR moab_ref.create_element(MBQUAD, quad_conn.data(), 4, quad);
629 
630  if (sixNodePostProcTris) {
631  Range edges;
632  CHKERR moab_ref.get_adjacencies(&quad, 1, 1, true, edges);
633  EntityHandle meshset;
634  CHKERR moab_ref.create_meshset(MESHSET_SET, meshset);
635  CHKERR moab_ref.add_entities(meshset, &quad, 1);
636  CHKERR moab_ref.add_entities(meshset, edges);
637  CHKERR moab_ref.convert_entities(meshset, true, false, false);
638  CHKERR moab_ref.get_connectivity(quad, conn, num_nodes, false);
639  CHKERR moab_ref.get_coords(conn, num_nodes, &coords(0, 0));
640  gauss_pts.resize(3, num_nodes, false);
641  gauss_pts.clear();
642  for (int nn = 0; nn != num_nodes; nn++) {
643  gauss_pts(0, nn) = coords(nn, 0);
644  gauss_pts(1, nn) = coords(nn, 1);
645  }
646  } else {
647  CHKERR moab_ref.get_connectivity(quad, conn, num_nodes, false);
648  CHKERR moab_ref.get_coords(conn, num_nodes, &coords(0, 0));
649  gauss_pts.resize(3, num_nodes, false);
650  gauss_pts.clear();
651  for (int nn = 0; nn != 4; nn++) {
652  gauss_pts(0, nn) = coords(nn, 0);
653  gauss_pts(1, nn) = coords(nn, 1);
654  }
655  }
656 
658  };
659 
660  CHKERR generate_tri(gaussPtsTri);
661  CHKERR generate_quad(gaussPtsQuad);
662 
664 }

◆ getCommonData()

virtual PostProcCommonOnRefMesh::CommonData& PostProcFaceOnRefinedMesh::getCommonData ( )
inlinevirtual

Reimplemented from PostProcTemplateOnRefineMesh< MoFEM::FaceElementForcesAndSourcesCore >.

Definition at line 1058 of file PostProcOnRefMesh.hpp.

1058  {
1059  return commonData;
1060  }

◆ getRule()

int PostProcFaceOnRefinedMesh::getRule ( int  order)
inlinevirtual
Deprecated:
Use getRule(int row_order, int col_order, int data order)

Reimplemented from MoFEM::ForcesAndSourcesCore.

Definition at line 1045 of file PostProcOnRefMesh.hpp.

1045 { return -1; };

◆ postProcess()

MoFEMErrorCode PostProcFaceOnRefinedMesh::postProcess ( )
virtual

function is run at the end of loop

It is used to assembly matrices and vectors, calculating global variables, f.e. total internal energy, ect.

Iterating over dofs: Example1 iterating over dofs in row by name of the field for(IT_GET_FEROW_BY_NAME_DOFS_FOR_LOOP(this,"DISPLACEMENT",it)) { ... }

Reimplemented from MoFEM::ForcesAndSourcesCore.

Definition at line 885 of file PostProcOnRefMesh.cpp.

885  {
887 
888  auto update_elements = [&]() {
890  ReadUtilIface *iface;
891  CHKERR postProcMesh.query_interface(iface);
892 
893  if (counterTris)
894  CHKERR iface->update_adjacencies(startingEleTriHandle, counterTris,
895  gaussPtsTri.size2(), triConn);
896  if (counterQuads)
897  CHKERR iface->update_adjacencies(startingEleQuadHandle, counterQuads,
898  gaussPtsQuad.size2(), quadConn);
900  };
901 
902  auto resolve_shared = [&]() {
904  ParallelComm *pcomm_post_proc_mesh =
905  ParallelComm::get_pcomm(&postProcMesh, MYPCOMM_INDEX);
906  if (pcomm_post_proc_mesh == NULL) {
907  // wrapRefMeshComm =
908  // boost::make_shared<WrapMPIComm>(mField.get_comm(), false);
909  pcomm_post_proc_mesh = new ParallelComm(
910  &postProcMesh, PETSC_COMM_WORLD /* wrapRefMeshComm->get_comm()*/);
911  }
912 
913  Range faces;
914  CHKERR postProcMesh.get_entities_by_dimension(0, 2, faces, false);
915  int rank = mField.get_comm_rank();
916  CHKERR postProcMesh.tag_clear_data(pcomm_post_proc_mesh->part_tag(), faces,
917  &rank);
918  CHKERR pcomm_post_proc_mesh->resolve_shared_ents(0);
920  };
921 
922  CHKERR update_elements();
923  CHKERR resolve_shared();
924 
926 }

◆ preProcess()

MoFEMErrorCode PostProcFaceOnRefinedMesh::preProcess ( )
virtual

function is run at the beginning of loop

It is used to zeroing matrices and vectors, calculation of shape functions on reference element, preprocessing boundary conditions, etc.

Reimplemented from MoFEM::ForcesAndSourcesCore.

Definition at line 800 of file PostProcOnRefMesh.cpp.

800  {
802 
803  ReadUtilIface *iface;
804  CHKERR postProcMesh.query_interface(iface);
805 
806  const int number_of_ents_in_the_loop = getLoopSize();
807  if (elementsMap.size() != number_of_ents_in_the_loop) {
808 
809  elementsMap.clear();
810  postProcMesh.delete_mesh();
811 
812  auto get_number_of_computational_elements = [&]() {
813  auto fe_ptr = this->problemPtr->numeredFiniteElementsPtr;
814 
815  auto miit =
816  fe_ptr->template get<Composite_Name_And_Part_mi_tag>().lower_bound(
817  boost::make_tuple(this->getFEName(), this->getLoFERank()));
818  auto hi_miit =
819  fe_ptr->template get<Composite_Name_And_Part_mi_tag>().upper_bound(
820  boost::make_tuple(this->getFEName(), this->getHiFERank()));
821 
822  const int number_of_ents_in_the_loop = this->getLoopSize();
823  if (std::distance(miit, hi_miit) != number_of_ents_in_the_loop) {
825  "Wrong size of indicices. Inconsistent size number of iterated "
826  "elements iterated by problem and from range.");
827  }
828 
829  std::array<int, MBMAXTYPE> nb_elemms_by_type;
830  std::fill(nb_elemms_by_type.begin(), nb_elemms_by_type.end(), 0);
831 
832  for (; miit != hi_miit; ++miit) {
833 
834  bool add = true;
835  if (exeTestHook) {
837  add = exeTestHook(this);
838  }
839 
840  if (add) {
841  auto type = (*miit)->getEntType();
842  ++nb_elemms_by_type[type];
843  }
844  }
845 
846  return nb_elemms_by_type;
847  };
848 
849  auto nb_computational_elements_by_type =
850  get_number_of_computational_elements();
851 
852  const int numberOfTriangles = nb_computational_elements_by_type[MBTRI];
853  const int numberOfQuads = nb_computational_elements_by_type[MBQUAD];
854 
855  // Here we create vertices using ReadUtilface
856  const int total_number_of_nodes_on_tri =
857  numberOfTriangles * gaussPtsTri.size2();
858  const int total_number_of_nodes_on_quad =
859  numberOfQuads * gaussPtsQuad.size2();
860 
861  if (total_number_of_nodes_on_tri) {
862  CHKERR iface->get_node_coords(3, total_number_of_nodes_on_tri, 0,
864  CHKERR iface->get_element_connect(numberOfTriangles, gaussPtsTri.size2(),
865  MBTRI, 0, startingEleTriHandle,
866  triConn);
867  }
868 
869  if (total_number_of_nodes_on_quad) {
870  CHKERR iface->get_node_coords(3, total_number_of_nodes_on_quad, 0,
873  CHKERR iface->get_element_connect(numberOfQuads, gaussPtsQuad.size2(),
874  MBQUAD, 0, startingEleQuadHandle,
875  quadConn);
876  }
877  }
878 
879  counterTris = 0;
880  counterQuads = 0;
881 
883 }

◆ setGaussPts()

MoFEMErrorCode PostProcFaceOnRefinedMesh::setGaussPts ( int  order)
virtual
Deprecated:
setGaussPts(int row_order, int col_order, int data order);
Deprecated:
setGaussPts(int row_order, int col_order, int data order);

Reimplemented from MoFEM::ForcesAndSourcesCore.

Definition at line 666 of file PostProcOnRefMesh.cpp.

666  {
668  if (gaussPtsTri.size1() == 0 && gaussPtsQuad.size1() == 0)
669  SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
670  "post-process mesh not generated");
671 
672  auto create_tri = [&](auto &gauss_pts) {
673  std::array<EntityHandle, 3> tri_conn;
674  MatrixDouble3by3 coords_tri(3, 3);
675  CHKERR mField.get_moab().get_connectivity(
676  numeredEntFiniteElementPtr->getEnt(), conn, num_nodes, true);
677  CHKERR mField.get_moab().get_coords(conn, num_nodes, &coords_tri(0, 0));
678  const int num_nodes_on_ele = gauss_pts.size2();
679 
680  for (int gg = 0; gg != num_nodes_on_ele; gg++) {
681 
682  const double ksi = gauss_pts(0, gg);
683  const double eta = gauss_pts(1, gg);
684  const double n0 = N_MBTRI0(ksi, eta);
685  const double n1 = N_MBTRI1(ksi, eta);
686  const double n2 = N_MBTRI2(ksi, eta);
687  const double x =
688  n0 * coords_tri(0, 0) + n1 * coords_tri(1, 0) + n2 * coords_tri(2, 0);
689  const double y =
690  n0 * coords_tri(0, 1) + n1 * coords_tri(1, 1) + n2 * coords_tri(2, 1);
691  const double z =
692  n0 * coords_tri(0, 2) + n1 * coords_tri(1, 2) + n2 * coords_tri(2, 2);
693 
694  verticesOnTriArrays[0][counterTris * num_nodes_on_ele + gg] = x;
695  verticesOnTriArrays[1][counterTris * num_nodes_on_ele + gg] = y;
696  verticesOnTriArrays[2][counterTris * num_nodes_on_ele + gg] = z;
697  }
698 
699  mapGaussPts.resize(num_nodes_on_ele);
700  for (int nn = 0; nn != num_nodes_on_ele; ++nn) {
701  triConn[num_nodes_on_ele * counterTris + nn] =
702  num_nodes_on_ele * counterTris + nn + startingVertTriHandle;
703  mapGaussPts[nn] = triConn[num_nodes_on_ele * counterTris + nn];
704  }
705 
706  const auto tri = startingEleTriHandle + counterTris;
707 
708  return tri;
709  };
710 
711  auto create_quad = [&](auto &gauss_pts) {
712  std::array<EntityHandle, 4> quad_conn;
713  MatrixDouble coords_quad(4, 3);
714  CHKERR mField.get_moab().get_connectivity(
715  numeredEntFiniteElementPtr->getEnt(), conn, num_nodes, true);
716  CHKERR mField.get_moab().get_coords(conn, num_nodes, &coords_quad(0, 0));
717  const int num_nodes_on_ele = gauss_pts.size2();
718  for (int gg = 0; gg != num_nodes_on_ele; ++gg) {
719  double ksi = gauss_pts(0, gg);
720  double eta = gauss_pts(1, gg);
721  double n0 = N_MBQUAD0(ksi, eta);
722  double n1 = N_MBQUAD1(ksi, eta);
723  double n2 = N_MBQUAD2(ksi, eta);
724  double n3 = N_MBQUAD3(ksi, eta);
725  double x = n0 * coords_quad(0, 0) + n1 * coords_quad(1, 0) +
726  n2 * coords_quad(2, 0) + n3 * coords_quad(3, 0);
727  double y = n0 * coords_quad(0, 1) + n1 * coords_quad(1, 1) +
728  n2 * coords_quad(2, 1) + n3 * coords_quad(3, 1);
729  double z = n0 * coords_quad(0, 2) + n1 * coords_quad(1, 2) +
730  n2 * coords_quad(2, 2) + n3 * coords_quad(3, 2);
731  verticesOnQuadArrays[0][counterQuads * num_nodes_on_ele + gg] = x;
732  verticesOnQuadArrays[1][counterQuads * num_nodes_on_ele + gg] = y;
733  verticesOnQuadArrays[2][counterQuads * num_nodes_on_ele + gg] = z;
734  }
735 
736  mapGaussPts.resize(num_nodes_on_ele);
737 
738  for (int nn = 0; nn != num_nodes_on_ele; ++nn) {
739  quadConn[num_nodes_on_ele * counterQuads + nn] =
740  num_nodes_on_ele * counterQuads + nn + startingVertQuadHandle;
741  mapGaussPts[nn] = quadConn[num_nodes_on_ele * counterQuads + nn];
742  }
743 
744  const auto quad = startingEleQuadHandle + counterQuads;
745  return quad;
746  };
747 
748  EntityHandle tri;
749 
750  if (elementsMap.size() == getLoopSize()) {
751  // Note "at" that will trigger error if element is not there.
752  tri = elementsMap.at(numeredEntFiniteElementPtr->getEnt());
753  switch (numeredEntFiniteElementPtr->getEntType()) {
754  case MBTRI:
755  gaussPts.resize(gaussPtsTri.size1(), gaussPtsTri.size2(), false);
756  noalias(gaussPts) = gaussPtsTri;
757  break;
758  case MBQUAD:
759  gaussPts.resize(gaussPtsQuad.size1(), gaussPtsQuad.size2(), false);
760  noalias(gaussPts) = gaussPtsQuad;
761  break;
762  default:
763  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
764  "Not implemented element type");
765  }
766 
767  // Set values which map nodes with integration points on the prism
768  const EntityHandle *conn;
769  int num_nodes;
770  CHKERR postProcMesh.get_connectivity(tri, conn, num_nodes, false);
771  mapGaussPts.resize(num_nodes);
772  for (int nn = 0; nn != num_nodes; nn++)
773  mapGaussPts[nn] = conn[nn];
774 
775  } else {
776  switch (numeredEntFiniteElementPtr->getEntType()) {
777  case MBTRI:
778  gaussPts.resize(gaussPtsTri.size1(), gaussPtsTri.size2(), false);
779  noalias(gaussPts) = gaussPtsTri;
780  tri = create_tri(gaussPtsTri);
781  ++counterTris;
782  break;
783  case MBQUAD:
784  gaussPts.resize(gaussPtsQuad.size1(), gaussPtsQuad.size2(), false);
785  noalias(gaussPts) = gaussPtsQuad;
786  tri = create_quad(gaussPtsQuad);
787  ++counterQuads;
788  break;
789  default:
790  SETERRQ(PETSC_COMM_SELF, MOFEM_NOT_IMPLEMENTED,
791  "Not implemented element type");
792  }
793 
794  elementsMap[numeredEntFiniteElementPtr->getEnt()] = tri;
795  }
796 
798 }

Member Data Documentation

◆ commonData

CommonData PostProcFaceOnRefinedMesh::commonData

Definition at line 1056 of file PostProcOnRefMesh.hpp.

◆ counterQuads

int PostProcFaceOnRefinedMesh::counterQuads
private

Definition at line 1129 of file PostProcOnRefMesh.hpp.

◆ counterTris

int PostProcFaceOnRefinedMesh::counterTris
private

Definition at line 1128 of file PostProcOnRefMesh.hpp.

◆ elementsMap

std::map<EntityHandle, EntityHandle> PostProcFaceOnRefinedMesh::elementsMap

Definition at line 1050 of file PostProcOnRefMesh.hpp.

◆ gaussPtsQuad

MatrixDouble PostProcFaceOnRefinedMesh::gaussPtsQuad
private

Gauss points coordinates on reference quad.

Definition at line 1107 of file PostProcOnRefMesh.hpp.

◆ gaussPtsTri

MatrixDouble PostProcFaceOnRefinedMesh::gaussPtsTri
private

Gauss points coordinates on reference triangle.

Definition at line 1106 of file PostProcOnRefMesh.hpp.

◆ numberOfQuads

int PostProcFaceOnRefinedMesh::numberOfQuads
private

NUmber of quads to create.

Definition at line 1127 of file PostProcOnRefMesh.hpp.

◆ numberOfTriangles

int PostProcFaceOnRefinedMesh::numberOfTriangles
private

Number of triangles to create.

Definition at line 1126 of file PostProcOnRefMesh.hpp.

◆ quadConn

EntityHandle* PostProcFaceOnRefinedMesh::quadConn
private

Connectivity for created quad elements.

Definition at line 1110 of file PostProcOnRefMesh.hpp.

◆ sixNodePostProcTris

bool PostProcFaceOnRefinedMesh::sixNodePostProcTris

Definition at line 1035 of file PostProcOnRefMesh.hpp.

◆ startingEleQuadHandle

EntityHandle PostProcFaceOnRefinedMesh::startingEleQuadHandle
private

Starting handle for quads post proc.

Definition at line 1124 of file PostProcOnRefMesh.hpp.

◆ startingEleTriHandle

EntityHandle PostProcFaceOnRefinedMesh::startingEleTriHandle
private

Starting handle for triangles post proc.

pointers to memory allocated by MoAB for storing X, Y, and Z coordinates

Definition at line 1123 of file PostProcOnRefMesh.hpp.

◆ startingVertQuadHandle

EntityHandle PostProcFaceOnRefinedMesh::startingVertQuadHandle
private

Starting handle for vertices on quads.

Definition at line 1114 of file PostProcOnRefMesh.hpp.

◆ startingVertTriHandle

EntityHandle PostProcFaceOnRefinedMesh::startingVertTriHandle
private

Starting handle for vertices on triangles.

Definition at line 1112 of file PostProcOnRefMesh.hpp.

◆ triConn

EntityHandle* PostProcFaceOnRefinedMesh::triConn
private

Connectivity for created tri elements.

Definition at line 1109 of file PostProcOnRefMesh.hpp.

◆ verticesOnQuadArrays

std::vector<double *> PostProcFaceOnRefinedMesh::verticesOnQuadArrays
private

pointers to memory allocated by MoAB for storing X, Y, and Z coordinates

Definition at line 1119 of file PostProcOnRefMesh.hpp.

◆ verticesOnTriArrays

std::vector<double *> PostProcFaceOnRefinedMesh::verticesOnTriArrays
private

Definition at line 1116 of file PostProcOnRefMesh.hpp.


The documentation for this struct was generated from the following files:
MoFEM::Field::getNbOfCoeffs
FieldCoefficientsNumber getNbOfCoeffs() const
Get number of field coefficients.
Definition: FieldMultiIndices.hpp:188
MYPCOMM_INDEX
#define MYPCOMM_INDEX
default communicator number PCOMM
Definition: definitions.h:215
H1
@ H1
continuous field
Definition: definitions.h:85
MoFEM::PetscData::x
Vec x
Definition: LoopMethods.hpp:51
EntityHandle
MoFEM::OpCalculateTensor2FieldValues
Get values at integration pts for tensor filed rank 2, i.e. matrix field.
Definition: UserDataOperators.hpp:887
PostProcTemplateOnRefineMesh< MoFEM::FaceElementForcesAndSourcesCore >::postProcMesh
moab::Interface & postProcMesh
Definition: PostProcOnRefMesh.hpp:122
MoFEM::addHOOpsVol
MoFEMErrorCode addHOOpsVol(const std::string field, E &e, bool h1, bool hcurl, bool hdiv, bool l2)
Definition: HODataOperators.hpp:764
PostProcFaceOnRefinedMesh::counterQuads
int counterQuads
Definition: PostProcOnRefMesh.hpp:1129
L2
@ L2
field with C-1 continuity
Definition: definitions.h:88
MoFEM::CoreInterface::get_field_structure
virtual const Field * get_field_structure(const std::string &name, enum MoFEMTypes bh=MF_EXIST) const =0
get field structure
MoFEM::OpCalculateVectorFieldValues
Get values at integration pts for tensor filed rank 1, i.e. vector field.
Definition: UserDataOperators.hpp:466
MoFEM::Types::MatrixDouble
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:77
MoFEM::CoreInterface::get_comm_rank
virtual int get_comm_rank() const =0
PostProcFaceOnRefinedMesh::commonData
CommonData commonData
Definition: PostProcOnRefMesh.hpp:1056
PostProcFaceOnRefinedMesh::gaussPtsTri
MatrixDouble gaussPtsTri
Gauss points coordinates on reference triangle.
Definition: PostProcOnRefMesh.hpp:1106
MoFEM::BasicMethod::getHiFERank
auto getHiFERank() const
Get upper rank in loop for iterating elements.
Definition: LoopMethods.hpp:238
N_MBQUAD2
#define N_MBQUAD2(x, y)
quad shape function
Definition: fem_tools.h:59
THROW_MESSAGE
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
Definition: definitions.h:561
MoFEM::OpCalculateScalarFieldGradient
Get field gradients at integration pts for scalar filed rank 0, i.e. vector field.
Definition: UserDataOperators.hpp:1294
MoFEM::Interface
DeprecatedCoreInterface Interface
Definition: Interface.hpp:1975
PostProcFaceOnRefinedMesh::startingEleQuadHandle
EntityHandle startingEleQuadHandle
Starting handle for quads post proc.
Definition: PostProcOnRefMesh.hpp:1124
FieldSpace
FieldSpace
approximation spaces
Definition: definitions.h:82
PostProcFaceOnRefinedMesh::verticesOnQuadArrays
std::vector< double * > verticesOnQuadArrays
Definition: PostProcOnRefMesh.hpp:1119
PostProcFaceOnRefinedMesh::elementsMap
std::map< EntityHandle, EntityHandle > elementsMap
Definition: PostProcOnRefMesh.hpp:1050
CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:535
MoFEM::FaceElementForcesAndSourcesCore::conn
const EntityHandle * conn
Definition: FaceElementForcesAndSourcesCore.hpp:78
MoFEM::OpCalculateTensor2SymmetricFieldGradient
Get field gradients at integration pts for symmetric tensorial field rank 2.
Definition: UserDataOperators.hpp:1734
MoFEM::CoreInterface::get_moab
virtual moab::Interface & get_moab()=0
MoFEM::BasicMethod::getLoopSize
int getLoopSize() const
get loop size
Definition: LoopMethods.hpp:211
PostProcFaceOnRefinedMesh::triConn
EntityHandle * triConn
Connectivity for created tri elements.
Definition: PostProcOnRefMesh.hpp:1109
MoFEM::BasicMethod::getLoFERank
auto getLoFERank() const
Get upper rank in loop for iterating elements.
Definition: LoopMethods.hpp:231
MoFEM::FaceElementForcesAndSourcesCore::num_nodes
int num_nodes
Definition: FaceElementForcesAndSourcesCore.hpp:77
MoFEM::OpCalculateHVecVectorField
Get vector field for H-div approximation.
Definition: UserDataOperators.hpp:2116
PostProcFaceOnRefinedMesh::numberOfTriangles
int numberOfTriangles
Number of triangles to create.
Definition: PostProcOnRefMesh.hpp:1126
convert.type
type
Definition: convert.py:64
PostProcFaceOnRefinedMesh::quadConn
EntityHandle * quadConn
Connectivity for created quad elements.
Definition: PostProcOnRefMesh.hpp:1110
eta
double eta
Definition: free_surface.cpp:170
MoFEM::OpCalculateHVecTensorField
Calculate tenor field using vectorial base, i.e. Hdiv/Hcurl.
Definition: UserDataOperators.hpp:2576
PostProcTemplateOnRefineMesh< MoFEM::FaceElementForcesAndSourcesCore >
N_MBQUAD1
#define N_MBQUAD1(x, y)
quad shape function
Definition: fem_tools.h:58
MoFEM::FEMethod::getFEName
auto getFEName() const
get finite element name
Definition: LoopMethods.hpp:391
MoFEM::CoreInterface::check_field
virtual bool check_field(const std::string &name) const =0
check if field is in database
PostProcFaceOnRefinedMesh::startingVertTriHandle
EntityHandle startingVertTriHandle
Starting handle for vertices on triangles.
Definition: PostProcOnRefMesh.hpp:1112
MoFEM::Problem::numeredFiniteElementsPtr
boost::shared_ptr< NumeredEntFiniteElement_multiIndex > numeredFiniteElementsPtr
store finite elements
Definition: ProblemsMultiIndices.hpp:77
PostProcFaceOnRefinedMesh::gaussPtsQuad
MatrixDouble gaussPtsQuad
Gauss points coordinates on reference quad.
Definition: PostProcOnRefMesh.hpp:1107
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
MoFEM::OpCalculateVectorFieldGradient
Get field gradients at integration pts for scalar filed rank 0, i.e. vector field.
Definition: UserDataOperators.hpp:1536
N_MBTRI0
#define N_MBTRI0(x, y)
triangle shape function
Definition: fem_tools.h:46
Range
PostProcFaceOnRefinedMesh::startingVertQuadHandle
EntityHandle startingVertQuadHandle
Starting handle for vertices on quads.
Definition: PostProcOnRefMesh.hpp:1114
PostProcFaceOnRefinedMesh::counterTris
int counterTris
Definition: PostProcOnRefMesh.hpp:1128
MoFEM::Core
CoreTmp< 0 > Core
Definition: Core.hpp:1094
PostProcTemplateOnRefineMesh< MoFEM::FaceElementForcesAndSourcesCore >::mapGaussPts
std::vector< EntityHandle > mapGaussPts
Definition: PostProcOnRefMesh.hpp:125
MoFEM::FaceElementForcesAndSourcesCore::coords
VectorDouble coords
Definition: FaceElementForcesAndSourcesCore.hpp:80
N_MBTRI1
#define N_MBTRI1(x, y)
triangle shape function
Definition: fem_tools.h:47
MoFEM::OpCalculateTensor2SymmetricFieldValues
Calculate symmetric tensor field values at integration pts.
Definition: UserDataOperators.hpp:978
N_MBQUAD0
#define N_MBQUAD0(x, y)
quad shape function
Definition: fem_tools.h:57
MOFEM_DATA_INCONSISTENCY
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:31
MoFEM::BasicMethod::problemPtr
const Problem * problemPtr
raw pointer to problem
Definition: LoopMethods.hpp:250
MoFEM::ForcesAndSourcesCore::gaussPts
MatrixDouble gaussPts
Matrix of integration points.
Definition: ForcesAndSourcesCore.hpp:109
MoFEM::FEMethod::exeTestHook
boost::function< bool(FEMethod *fe_method_ptr)> exeTestHook
Tet if element to skip element.
Definition: LoopMethods.hpp:402
PostProcFaceOnRefinedMesh::startingEleTriHandle
EntityHandle startingEleTriHandle
Starting handle for triangles post proc.
Definition: PostProcOnRefMesh.hpp:1123
MoFEM::Types::MatrixDouble3by3
MatrixBoundedArray< double, 9 > MatrixDouble3by3
Definition: Types.hpp:105
PostProcFaceOnRefinedMesh::verticesOnTriArrays
std::vector< double * > verticesOnTriArrays
Definition: PostProcOnRefMesh.hpp:1116
N_MBQUAD3
#define N_MBQUAD3(x, y)
quad shape function
Definition: fem_tools.h:60
MoFEM::FEMethod::numeredEntFiniteElementPtr
boost::shared_ptr< const NumeredEntFiniteElement > numeredEntFiniteElementPtr
Definition: LoopMethods.hpp:383
PostProcFaceOnRefinedMesh::numberOfQuads
int numberOfQuads
NUmber of quads to create.
Definition: PostProcOnRefMesh.hpp:1127
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
HDIV
@ HDIV
field with continuous normal traction
Definition: definitions.h:87
MOFEM_NOT_IMPLEMENTED
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
PostProcFaceOnRefinedMesh::sixNodePostProcTris
bool sixNodePostProcTris
Definition: PostProcOnRefMesh.hpp:1035
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
MoFEM::ForcesAndSourcesCore::mField
Interface & mField
Definition: ForcesAndSourcesCore.hpp:24
N_MBTRI2
#define N_MBTRI2(x, y)
triangle shape function
Definition: fem_tools.h:48