CrvTetPolyMap.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_CRVTETPOLYMAP_H_
12 #define MESHADAPT_CRVTETPOLYMAP_H_
13 
14 #include "CrvTet.h"
15 
16 typedef class mMesh * pMeshMdl;
17 class curveMesh;
18 
21 class CrvTetPolyMap : public CrvTet {
22  public:
23  // the only constructor
24  CrvTetPolyMap(pMeshEnt in_rgn, curveMesh * in_crv_mesh);
25  // the destructor
26  ~CrvTetPolyMap();
27  // evaluate the mapping (by blending)
28  virtual int v_eval(Point3d in_xi, Point3d & pos);
29  // evaluate first derivative
30  virtual int v_eval_deriv1(Point3d in_xi,
31  Mat3x3 & dxyz_dxi);
32  protected:
33  // first derivative w.r.t. u
34  int dxyz_du(double u, double v, double w, double * out);
35  // first derivative w.r.t. v
36  int dxyz_dv(double u, double v, double w, double * out);
37  // first derivative w.r.t. w
38  int dxyz_dw(double u, double v, double w, double * out);
39 
40  private:
41  // vertex coordinates
42  Point3d m_xyz_3000_; // V1, xi_1, u: V0 -> V1
43  Point3d m_xyz_0300_; // V2, xi_2, v: V0 -> V2
44  Point3d m_xyz_0030_; // V3, xi_3, w: V0 -> V3
45  Point3d m_xyz_0003_; // V0, xi_4, 1.0 - u -v - w
46 
47  // edge control pts
48  Point3d m_ctrl_2100_;
49  Point3d m_ctrl_1200_;
50 
51  Point3d m_ctrl_0210_;
52  Point3d m_ctrl_0120_;
53 
54  Point3d m_ctrl_0021_;
55  Point3d m_ctrl_0012_;
56 
57  Point3d m_ctrl_2010_;
58  Point3d m_ctrl_1020_;
59 
60  Point3d m_ctrl_2001_;
61  Point3d m_ctrl_1002_;
62 
63  Point3d m_ctrl_0201_;
64  Point3d m_ctrl_0102_;
65 
66  // face control pts
67  Point3d m_ctrl_1110_;
68  Point3d m_ctrl_1101_;
69  Point3d m_ctrl_1011_;
70  Point3d m_ctrl_0111_;
71 };
72 
73 #endif // MESHADAPT_CRVTETPOLYMAP_H_
This class is design to represent the 3D high-order curved tetrahedron element. The data member shoul...
Definition: CrvTet.h:23
Curved tetrahedron with geometry shape of order 3.
Definition: CrvTetPolyMap.h:21
virtual int v_eval(Point3d in_xi, Point3d &pos)
detailed implementation of evaluation
Definition: CrvTetPolyMap.cc:352
virtual int v_eval_deriv1(Point3d in_xi, Mat3x3 &dxyz_dxi)
detailed implementation of derivative evaluation
Definition: CrvTetPolyMap.cc:501
The main driver class for curved mesh adaptation procedures.
Definition: curveMesh.h:41