Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Private Attributes | List of all members
curveMesh Class Reference

The main driver class for curved mesh adaptation procedures. More...

#include <curveMesh.h>

Inheritance diagram for curveMesh:
Inheritance graph
[legend]
Collaboration diagram for curveMesh:
Collaboration graph
[legend]

Public Member Functions

 curveMesh (pMeshMdl mesh_instance, int sizefield_type, int model_type)
 ctor More...
 
virtual ~curveMesh ()
 destructor
 
int CMA_SetModelType (int iTheMdlType)
 
int CMA_CheckMesh ()
 
int CMA_CheckMeshQuality ()
 
int CMA_LockSurfaceMesh ()
 
int CMA_CreateHOEdges ()
 
int CMA_UncurveInvalidRgns ()
 
int CMA_SetCrvMeshQualityThreshold (double dThreshold)
 
int CMA_Untangle ()
 untangle a given curved mesh with a number of invalid elements More...
 
int CMA_Optimize ()
 optimize a given valid curved mesh
 
int CMA_TagDrivenUniformRefine ()
 run tag-driven uniform refinement
 
int CMA_Linearize ()
 Make all mesh entities linear by removing edge nodes if there is any.
 
int CMA_GlobPtn ()
 This function calls pumi mesh global partition API. More...
 
int CMA_CreateG1Mesh ()
 Create a curved mesh with G1 surface mesh.
 
int CMA_CreateD4C0Mesh ()
 Create degree 4 C0 interpolating surface mesh.
 
int CMA_CreateC0Mesh (int iEdgeOrder, int iFaceOrder)
 Create arbitrary degree C0 interpolating surface mesh.
 
int CMA_CreateG1MeshFromAnalyticModel ()
 Create a curved mesh with G1 surface mesh of analytic boundary.
 
int CMA_NumVertsOnGBdry ()
 number of vertices on model boundary include model verts, edges and faces
 
int CMA_NumVertsOnGEdge ()
 number of vertices on model verts and edges
 
double CMA_AverageEdgeLengthOnGBdry ()
 
double CMA_AverageEdgeLengthOnGEdge ()
 
double CMA_InterpErrorOnGEdge ()
 
bool hasCad ()
 returns if a CAD model is loaded for the curved mesh
 

Static Public Member Functions

static curveMeshinstance ()
 static member function to get the pointer to the curveMesh object
 

Protected Member Functions

rEdShpInfo * FindBestReShapeEdge (std::vector< rEdShpInfo * > &)
 
int create_mesh_shape_field ()
 
int destroy_mesh_shape_field ()
 
int create_edge_nodes_from_shape_field ()
 
void createInvalidRgns (double)
 
void invalidRgnsInfo ()
 
int findBestMod (pRegion, crShpInfo *, pMeshMod *)
 
int findEdgeReShape (pRegion, crShpInfo *, pMeshMod *)
 
void fixInvalidRgnsByMods ()
 return the region with lowest straight-side shape quality Qs
 
void ImproveRgnsByMods ()
 
void applyGlobalNodalSmoothing ()
 
void outPutOpsInfo ()
 
int isEdgeSplitModValid (edgeSplitMod *, pRegion, int &, double &)
 
int isDsplitClpsModValid (DSplitClpsMod *, pRegion, double &)
 
int isEdgeClpsModValid (edgeCollapsMod *, pRegion, double &)
 
int isFaceSwpModValid (faceSwapMod *, pRegion, double &)
 
int isEdgeSwpModValid (edgeSwapMod *, pRegion, double &)
 
int isEdgeSplitClpsModValid (EsplitClpsMod *, pRegion, double &)
 
int isRegionClpsModValid (regionCollapsMod *, pRegion, double &)
 
int isVertexMotionModValid (vertMotionsMod *, pRegion, double &)
 
int isDsplitClpsLooseModValid (pRegion, pMeshMod *)
 
int isUnCurvedModValid (pRegion, crShpInfo *, pPList *)
 
void updateNewReg (pPList *)
 
void applyBestMod (pMeshMod *)
 
int isExplicitHONSmoothingValid (vertMotionsMod *, pRegion, crShpInfo *, double &)
 
int isExplicitNodalSmoothingValid (pRegion region, crShpInfo *, pEdge *targetEdge)
 
int minDetJAmgVertices (crShpInfo *, int *edgeID, int *)
 
int computeMiddlePtTarget (pRegion, int, pEdge)
 
void outPutEdgeVtxClassify (pRegion region)
 output the classification info of the six edges More...
 
void unCurveInvalidRgns ()
 
void createInvalidRgnList (pPList &)
 
void fix_entity (pEntity)
 
template<class OPERATION >
int traverse_mesh_edges_to_run ()
 whether the input mesh entity has been fixed
 
template<class OPERATION >
int traverse_mesh_faces_to_run ()
 
template<class OPERATION >
int traverse_mesh_rgns_to_run ()
 
bool is_g1 ()
 determine if the mesh has already been curved to G1 More...
 
void set_g1 ()
 flag the mesh as having been curved to G1 More...
 

Protected Attributes

apf::Mesh * m_apf_mesh
 pointer to apf mesh object
 
apf::MeshTag * m_geom_order
 pointer to apf mesh tag for geometric order
 
pField m_mesh_shape_field_
 pointer to mesh shape field data
 
pField m_vertex_normal_field_
 pointer to vertex normal field
 
double m_max_angle_
 the maximum allowed angle in the surface mesh
 
NullSField * pNullSF_
 
evalResults * pResults_
 
MeanRatio * pShpMeasure_
 
double dShapeThresh_
 
double _GWORSTSHAPE
 
std::map< pRegion, crShpInfo * > invalidCurvedRgns
 
pPList _invalidRgnPList
 
pMeshDataId fixedEnt_
 
pMeshDataId _onPartBdry
 
int iOpCounts_ [9]
 

Static Protected Attributes

static curveMeshm_crv_mesh_inst = 0
 static member viariable for the curve mesh object itself
 

Private Member Functions

void call_smoothing_procedure ()
 
virtual bool v_use_crv_adapt ()
 

Private Attributes

std::vector< CrvTet * > m_crv_tets
 container for curved tets
 
std::vector< CrvFace * > m_crv_faces
 container for curved tris
 
std::vector< CrvEdge * > m_crv_edges
 container for curved edges
 

Detailed Description

The main driver class for curved mesh adaptation procedures.

Bug:
One of the test cases – uniformRefineSzFd produces refined mesh with incorrect mid-edge point calculation.

Constructor & Destructor Documentation

curveMesh::curveMesh ( pMeshMdl  mesh_instance,
int  sizefield_type,
int  model_type 
)

ctor

Parameters
[in]mesh_instanceinput mesh instance
[in]sizefield_typeinput flag for the type of size field; 0 – no size field
[in]model_typeinput flag for the type of geometric model kernel; 0 – no geom model; 1 – mesh model; 2 – CAD model

create MeshPUMI object

find or create geom order tag

Member Function Documentation

int curveMesh::CMA_GlobPtn ( )

This function calls pumi mesh global partition API.

int curveMesh::CMA_Untangle ( )

untangle a given curved mesh with a number of invalid elements

added to avoid assertion failure when checking for BL entities

Here is the call graph for this function:

bool curveMesh::is_g1 ( )
protected

determine if the mesh has already been curved to G1

Returns
true if mesh is G1, false if not

Here is the caller graph for this function:

void curveMesh::outPutEdgeVtxClassify ( pRegion  region)
protected

output the classification info of the six edges

Parameters
region(In) region to be examined.
void curveMesh::set_g1 ( )
protected

flag the mesh as having been curved to G1

Returns
void

Here is the caller graph for this function:


The documentation for this class was generated from the following files: