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>
Public Member Functions | |
CrvTetBlending (VtxPtrVec in_vert_vec) | |
the only supported ctor | |
![]() | |
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 | |
![]() | |
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) |
![]()
| |
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 | |
![]() | |
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 ![]()
| |
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 | |
![]() | |
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 | |
![]() | |
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 | |
![]() | |
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 | |
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.