CrvTet.h
1 /******************************************************************************
2 
3  (c) 2004-2014 Scientific Computation Research Center,
4  Rensselaer Polytechnic Institute. All rights reserved.
5 
6  The LICENSE-SCOREC file included with this distribution describes the terms
7  of the SCOREC Non-Commercial License this program is distributed under.
8 
9 *******************************************************************************/
10 
11 #ifndef MESHADAPT_CRVTET_H
12 #define MESHADAPT_CRVTET_H
13 
14 #include "CrvEnt.h"
15 
23 class CrvTet : public CrvEnt {
24  public:
27  CrvTet(VtxPtrVec in_vert_vec);
28 
31  CrvTet(pMeshEnt in_tet);
32 
35  virtual ~CrvTet();
36 
39  void deriv1_fd(const Point3d in_xi, Mat3x3 & dxyz_dxi, double step = 1.0e-3);
40 
43  void deriv1_by_eta_fd(const Point3d in_eta, Mat3x3 & dxyz_deta, double step = 1.0e-3);
44 
47  void dxi_deta(const Point3d in_eta, Mat3x3 & out_dxi_deta);
48 
49  virtual int v_ent_type() const;
50 
51  virtual int v_data_size() const;
52 
53  virtual std::string v_tag_name() const;
54 
55 // **** the two shape measure for the ST-frame **** //
56 
58  double RadiusRatio();
59 
61  double AspectRatio();
62 
63 // **** curved mesh shape measure **** //
64 
66  double JacRatio();
67 
68  protected:
71  void setup_vertices();
72 
75  virtual void v_eval_by_xi (Point3d in, Point3d & out);
76 
77  virtual void v_eval_by_eta(Point3d in, Point3d & out);
78 
81  virtual void v_eval_by_coll_eta(Point3d in, Point3d & out);
82 
90  virtual void v_diff_by_xi(Point3d in, Mat3x3 & out);
91 
92  virtual void v_diff_by_xi(Point3d in, int j, Point3d & out);
93 
94  virtual void v_diff_by_eta(Point3d in, Mat3x3 & out);
95 
96  virtual void v_diff_by_eta(Point3d in, int j, Point3d & out);
97 
99  virtual int v_get_exp_dim() {
100  return 3;
101  }
102 
104  EdgePtrVec m_edges;
105 
107  FacePtrVec m_faces;
108 
109  private:
112  virtual int v_eval(Point3d in_xi, Point3d & out_pos) = 0;
113 
116  virtual int v_eval_deriv1(Point3d in_xi, Mat3x3 & out_dxyz_dxi) = 0;
117 };
118 #endif//MESHADAPT_CRVTET_H
This class is design to represent the 3D high-order curved tetrahedron element. The data member shoul...
Definition: CrvTet.h:23
virtual int v_eval_deriv1(Point3d in_xi, Mat3x3 &out_dxyz_dxi)=0
detailed implementation of derivative evaluation
void dxi_deta(const Point3d in_eta, Mat3x3 &out_dxi_deta)
evaluate first derivative of coord transformation
Definition: CrvTet.cc:81
double JacRatio()
get the Jacobian Ratio
Definition: CrvTet.cc:290
virtual void v_diff_by_xi(Point3d in, Mat3x3 &out)
evaluate Jacobian of the mapping w.r.t. volume coordinate system
Definition: CrvTet.cc:142
void deriv1_fd(const Point3d in_xi, Mat3x3 &dxyz_dxi, double step=1.0e-3)
Evaluate first derivative numerically by finite difference.
Definition: CrvTet.cc:187
CrvTet(VtxPtrVec in_vert_vec)
ctor with ordered vertices as input
Definition: CrvTet.cc:21
virtual void v_diff_by_eta(Point3d in, Mat3x3 &out)
Definition: CrvTet.cc:162
FacePtrVec m_faces
a vector of faces bounding the tet, ordered by its vertices
Definition: CrvTet.h:107
virtual void v_eval_by_coll_eta(Point3d in, Point3d &out)
evaluate mapping w.r.t. the collapsed cartesian coordinates
Definition: CrvTet.cc:125
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...
Definition: CrvTet.cc:214
virtual int v_get_exp_dim()
expansion dimension for curved tet is set to be 3
Definition: CrvTet.h:99
void setup_vertices()
set up internal vertex storage
Definition: CrvTet.cc:100
virtual int v_eval(Point3d in_xi, Point3d &out_pos)=0
detailed implementation of evaluation
double AspectRatio()
get the Aspect Ratio
Definition: CrvTet.cc:265
double RadiusRatio()
get the Radius Ratio
Definition: CrvTet.cc:242
base class for curved mesh entity
Definition: CrvEnt.h:21
virtual void v_eval_by_xi(Point3d in, Point3d &out)
evaluate mapping with respect to volume/barycentric coordinate system
Definition: CrvTet.cc:111
EdgePtrVec m_edges
a vector of edges bounding the tet, ordered by its vertices
Definition: CrvTet.h:104
virtual ~CrvTet()
dtor
Definition: CrvTet.cc:63