Public Member Functions | Private Member Functions | Private Attributes | List of all members
CrvTetBlending Class Reference

This class implements the blending based volume mapping The blending mapping formulation is coded according to the Dey1997 paper Geometric Representation Issues of p-Version FE Computations [2]. The order of the linear blending functions and symbol for face/edges are named according Equation (30) of that paper. More...

#include <CrvTetBlending.h>

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

Public Member Functions

 CrvTetBlending (VtxPtrVec in_vert_vec)
 the only supported ctor
 
- Public Member Functions inherited from CrvTet
 CrvTet (VtxPtrVec in_vert_vec)
 ctor with ordered vertices as input
 
 CrvTet (pMeshEnt in_tet)
 ctor with a topo mesh entity as input
 
virtual ~CrvTet ()
 dtor
 
void deriv1_fd (const Point3d in_xi, Mat3x3 &dxyz_dxi, double step=1.0e-3)
 Evaluate first derivative numerically by finite difference.
 
void deriv1_by_eta_fd (const Point3d in_eta, Mat3x3 &dxyz_deta, double step=1.0e-3)
 Evaluate first derivative w.r.t. standard cartesian coordinates numerically by finite difference.
 
void dxi_deta (const Point3d in_eta, Mat3x3 &out_dxi_deta)
 evaluate first derivative of coord transformation More...
 
virtual int v_ent_type () const
 
virtual int v_data_size () const
 
virtual std::string v_tag_name () const
 
double RadiusRatio ()
 get the Radius Ratio
 
double AspectRatio ()
 get the Aspect Ratio
 
double JacRatio ()
 get the Jacobian Ratio
 
- Public Member Functions inherited from CrvEnt
 CrvEnt (pMeshEnt in_mesh_ent)
 ctor More...
 
 CrvEnt (VtxPtrVec in_vert_vec)
 ctor More...
 
virtual ~CrvEnt ()
 dtor
 
void get_xi_by_eta (Point3d in_eta, Point3d &out_xi)
 evaluate barycentric coordinates given the standard coordinates More...
 
void get_eta_by_ceta (Point3d in_ceta, Point3d &out_eta)
 evaluate standard coordinates given the collapsed/tensor coordinates More...
 
void get_xi_by_ceta (Point3d in_ceta, Point3d &out_xi)
 evaluate barycentric coordinates given the collapsed/tensor coordinates More...
 
void eval_by_xi (Point3d in, Point3d &out)
 evaluate xyz by barycentric coordinates More...
 
void eval_by_eta (Point3d in, Point3d &out)
 evaluate xyz by standard cartesian coordinates More...
 
void eval_by_coll_eta (Point3d in, Point3d &out)
 evaluate xyz by collapsed/tensor coordinates More...
 
void diff_by_xi (Point3d in, Mat3x3 &out)
 evaluate dxyz/dxi, return all derivs in a matrix form More...
 
void diff_by_xi (Point3d in, int j, Point3d &out)
 evaluate dxyz/dxi_j, return derivs in one direction More...
 
void diff_by_eta (Point3d in, Mat3x3 &out)
 evaluate derivatives w.r.t. standard cartesian coordinates More...
 
void diff_by_eta (Point3d in, int j, Point3d &out)
 evaluate derivatives w.r.t. standard cartesian coordinates in one direction More...
 
void set_id (int i)
 sets entity id
 
int get_id ()
 gets entity id
 
int get_exp_dim ()
 return dimension in xi or eta
 
int get_coord_dim ()
 return coordinate dimension in xyz
 
pMeshEnt get_vertex (int i)
 return the ith bounding vertex of the mesh entity More...
 
int ent_type ()
 return the topological entity type. 0 – vertex, 1 – edge, 2 – face, 3 – region
 
int data_size ()
 return the number of doubles associated with the current mesh entity
 
std::string tag_name ()
 return the name string of the data
 
int save_nodal_data_to_mesh (double *in_data)
 save the data to the underlying mesh database
 
int load_nodal_data_from_mesh (double **out_data)
 fetch data from mesh database
 
bool has_data ()
 return whether the entity has high-order shape data
 
bool edge_on_model_bdry (pMeshEnt vtx0, pMeshEnt vtx1)
 return whether the mesh edge is classified on model edge or face
 
bool face_on_model_bdry (pMeshEnt vtx0, pMeshEnt vtx1, pMeshEnt vtx2)
 return whether the mesh face is classified on model face
 

Private Member Functions

virtual int v_eval (Point3d in_xi, Point3d &out_pos)
 shape handle for the 4 faces
 
virtual int v_eval_deriv1 (Point3d in_xi, Mat3x3 &out_jac)
 the most up-do-date impl of derivatives eval based on blending
 
virtual int v_eval_deriv1_old (Point3d in_xi, Mat3x3 &out_jac)
 evaluate first derivative – set to retire
 
void setup_edges ()
 set up internal edge storage and create Parametric Curve objects
 
void setup_faces ()
 set up internal face storage and create Parametric Tri objects
 
void face_blending_eval (int index, double in_xi_1, double in_xi_2, double in_xi_3, double &out_fb)
 blending functions w.r.t. the 4 faces
 
void face_blending_eval_deriv1 (int index, double in_xi_1, double in_xi_2, double in_xi_3, Point3d &dfb_dxi)
 
void projected_face_coords (int face_index, double in_xi1, double in_xi2, double in_xi3, Point2d &out_xip)
 
void projected_face_coords_deriv1 (int face_index, double in_xi1, double in_xi2, double in_xi3, Point3d &dxip1_dxi, Point3d &dxip2_dxi)
 
void edge_blending_eval (int index, double in_xi_1, double in_xi_2, double in_xi_3, double &out_eb)
 blending functions w.r.t. the 6 edges
 
void edge_blending_eval_deriv1 (int index, double in_xi_1, double in_xi_2, double in_xi_3, Point3d &deb_dxi)
 
void projected_edge_coords (int edge_index, double in_xi1, double in_xi2, double in_xi3, Point1d &out_xip)
 
void projected_edge_coords_deriv1 (int edge_index, double in_xi1, double in_xi2, double in_xi3, Point3d &dxip1_dxi)
 $ \frac{\xi'(\xi)}{\xi} $

\begin{eqnarray*} \frac{\xi'_1}{\xi_1}, \frac{\xi'_1}{\xi_2}, \frac{\xi'_1}{\xi_3} \end{eqnarray*}


 

Private Attributes

CrvEdgePtrVec m_crv_edges
 container of a ordered list of mesh edges
 
CrvFacePtrVec m_crv_faces
 container of a ordered list of mesh faces
 

Additional Inherited Members

- Protected Member Functions inherited from CrvTet
void setup_vertices ()
 set up internal vertex storage
 
virtual void v_eval_by_xi (Point3d in, Point3d &out)
 evaluate mapping with respect to volume/barycentric coordinate system
 
virtual void v_eval_by_eta (Point3d in, Point3d &out)
 
virtual void v_eval_by_coll_eta (Point3d in, Point3d &out)
 evaluate mapping w.r.t. the collapsed cartesian coordinates
 
virtual void v_diff_by_xi (Point3d in, Mat3x3 &out)
 evaluate Jacobian of the mapping w.r.t. volume coordinate system $ \frac{x_i}{\xi_j} $

\begin{eqnarray*} \frac{\partial x_1}{\partial \xi_1}, \frac{\partial x_1}{\partial \xi_2}, \frac{\partial x_1}{\partial \xi_3} \\ \frac{\partial x_2}{\partial \xi_1}, \frac{\partial x_2}{\partial \xi_2}, \frac{\partial x_2}{\partial \xi_3} \\ \frac{\partial x_3}{\partial \xi_1}, \frac{\partial x_3}{\partial \xi_2}, \frac{\partial x_3}{\partial \xi_3} \end{eqnarray*}


 
virtual void v_diff_by_xi (Point3d in, int j, Point3d &out)
 
virtual void v_diff_by_eta (Point3d in, Mat3x3 &out)
 
virtual void v_diff_by_eta (Point3d in, int j, Point3d &out)
 
virtual int v_get_exp_dim ()
 expansion dimension for curved tet is set to be 3
 
- Protected Member Functions inherited from CrvEnt
virtual int v_get_coord_dim ()
 all curved entities are assumed to be embeded in 3D space
 
pMeshEnt get_mesh_ent ()
 get the mesh entity
 
void set_mesh_ent (pMeshEnt in_ent)
 set the mesh entity
 
- Protected Attributes inherited from CrvTet
EdgePtrVec m_edges
 a vector of edges bounding the tet, ordered by its vertices
 
FacePtrVec m_faces
 a vector of faces bounding the tet, ordered by its vertices
 
- Protected Attributes inherited from CrvEnt
VtxPtrVec m_vert_vec
 ordered set of mesh vertices
 
pMeshEnt m_mesh_ent
 topological mesh entity
 
std::vector< Point3d > m_ctrl_pt_vec
 container used to store the control point values
 

Detailed Description

This class implements the blending based volume mapping The blending mapping formulation is coded according to the Dey1997 paper Geometric Representation Issues of p-Version FE Computations [2]. The order of the linear blending functions and symbol for face/edges are named according Equation (30) of that paper.

bounding-entity-labeling-curved-tet.png
Labeling for the curved edges and faces bounding the tetrahedron according to [Dey1997]

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