v0.14.0
Loading...
Searching...
No Matches
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 ()
 
virtual PostProcCommonOnRefMesh::CommonDatagetCommonData ()
 
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...
 
virtual MoFEMErrorCode preProcess ()
 function is run at the beginning of loop More...
 
virtual MoFEMErrorCode operator() ()
 function is run for every finite element More...
 
virtual MoFEMErrorCode postProcess ()
 function is run at the end of loop 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
MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 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...
 
virtual MoFEMErrorCode preProcess ()
 function is run at the beginning of loop More...
 
virtual MoFEMErrorCode operator() ()
 function is run for every finite element More...
 
virtual MoFEMErrorCode postProcess ()
 function is run at the end of loop More...
 
boost::weak_ptr< CacheTuplegetCacheWeakPtr () const
 Get the cache weak ptr object. More...
 
- Public Member Functions inherited from MoFEM::KspMethod
MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 KspMethod ()
 
virtual ~KspMethod ()=default
 
MoFEMErrorCode copyKsp (const KspMethod &ksp)
 copy data form another method More...
 
- Public Member Functions inherited from MoFEM::PetscData
MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 PetscData ()
 
virtual ~PetscData ()=default
 
MoFEMErrorCode copyPetscData (const PetscData &petsc_data)
 
- Public Member Functions inherited from MoFEM::UnknownInterface
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 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
MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 SnesMethod ()
 
virtual ~SnesMethod ()=default
 
MoFEMErrorCode copySnes (const SnesMethod &snes)
 Copy snes data. More...
 
- Public Member Functions inherited from MoFEM::TSMethod
MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 
 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

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(
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}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
@ MOFEM_NOT_IMPLEMENTED
Definition: definitions.h:32
#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 const Field * get_field_structure(const std::string &name, enum MoFEMTypes bh=MF_EXIST) const =0
get field structure
virtual bool check_field(const std::string &name) const =0
check if field is in database
MoFEMErrorCode addHOOpsVol(const std::string field, E &e, bool h1, bool hcurl, bool hdiv, bool l2)
constexpr auto field_name
FieldCoefficientsNumber getNbOfCoeffs() const
Get number of field coefficients.
Get field gradients at integration pts for scalar filed rank 0, i.e. vector field.
Get field gradients at integration pts for symmetric tensorial field rank 2.
Get field gradients at integration pts for scalar filed rank 0, i.e. vector field.
std::vector< EntityHandle > mapGaussPts
moab::Interface & postProcMesh

◆ 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}
FieldSpace
approximation spaces
Definition: definitions.h:82
@ L2
field with C-1 continuity
Definition: definitions.h:88
@ H1
continuous field
Definition: definitions.h:85
@ HDIV
field with continuous normal traction
Definition: definitions.h:87
Calculate tenor field using vectorial base, i.e. Hdiv/Hcurl.
Get vector field for H-div approximation.
Get values at integration pts for tensor filed rank 2, i.e. matrix field.
Calculate symmetric tensor field values at integration pts.
Get values at integration pts for tensor filed rank 1, i.e. vector field.

◆ 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
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
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}
MatrixDouble gaussPtsQuad
Gauss points coordinates on reference quad.
MatrixDouble gaussPtsTri
Gauss points coordinates on reference triangle.

◆ 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 }
CommonData commonData

◆ 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}
#define MYPCOMM_INDEX
default communicator number PCOMM
Definition: definitions.h:215
virtual int get_comm_rank() const =0
EntityHandle * quadConn
Connectivity for created quad elements.
EntityHandle startingEleQuadHandle
Starting handle for quads post proc.
EntityHandle startingEleTriHandle
Starting handle for triangles post proc.
EntityHandle * triConn
Connectivity for created tri elements.

◆ 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 =
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}
#define THROW_MESSAGE(msg)
Throw MoFEM exception.
Definition: definitions.h:561
auto getHiFERank() const
Get upper rank in loop for iterating elements.
int getLoopSize() const
get loop size
const Problem * problemPtr
raw pointer to problem
auto getLoFERank() const
Get upper rank in loop for iterating elements.
auto getFEName() const
get finite element name
boost::shared_ptr< const NumeredEntFiniteElement > numeredEntFiniteElementPtr
boost::function< bool(FEMethod *fe_method_ptr)> exeTestHook
Tet if element to skip element.
boost::shared_ptr< NumeredEntFiniteElement_multiIndex > numeredFiniteElementsPtr
store finite elements
int numberOfTriangles
Number of triangles to create.
std::vector< double * > verticesOnTriArrays
int numberOfQuads
NUmber of quads to create.
std::map< EntityHandle, EntityHandle > elementsMap
std::vector< double * > verticesOnQuadArrays
EntityHandle startingVertQuadHandle
Starting handle for vertices on quads.
EntityHandle startingVertTriHandle
Starting handle for vertices on triangles.

◆ 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
795 }
796
798}
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:31
#define N_MBTRI1(x, y)
triangle shape function
Definition: fem_tools.h:47
#define N_MBQUAD3(x, y)
quad shape function
Definition: fem_tools.h:60
#define N_MBQUAD0(x, y)
quad shape function
Definition: fem_tools.h:57
#define N_MBTRI0(x, y)
triangle shape function
Definition: fem_tools.h:46
#define N_MBQUAD2(x, y)
quad shape function
Definition: fem_tools.h:59
#define N_MBTRI2(x, y)
triangle shape function
Definition: fem_tools.h:48
#define N_MBQUAD1(x, y)
quad shape function
Definition: fem_tools.h:58
double eta
virtual moab::Interface & get_moab()=0
MatrixDouble gaussPts
Matrix of integration points.

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: