CrvTetBlending.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_CRVTETBLENDING_H
12 #define MESHADAPT_CRVTETBLENDING_H
13 
14 #include "CrvTet.h"
15 #include <stdlib.h>
16 #include <vector>
17 
18 typedef class mEntity * pMeshEnt;
19 class ParametricCurve;
20 
28 class CrvTetBlending : public CrvTet {
29  public:
32  CrvTetBlending(VtxPtrVec in_vert_vec);
33 
34  // the destructor
35  ~CrvTetBlending();
36 
37  private:
38 
40  CrvEdgePtrVec m_crv_edges;
41 
43  CrvFacePtrVec m_crv_faces;
44 
46 // std::vector<pTriGeom> m_face_shape_vector;
47 
48  // evaluate the mapping (by blending)
49  virtual int v_eval(Point3d in_xi, Point3d & out_pos);
50  // evaluate first derivative
51  virtual int v_eval_deriv1(Point3d in_xi,
52  Mat3x3 & out_jac);
53  // evaluate first derivative
54  virtual int v_eval_deriv1_old(Point3d in_xi,
55  Mat3x3 & out_jac);
56 
58  void setup_edges();
59 
61  void setup_faces();
62 
64  void face_blending_eval(int index,
65  double in_xi_1,
66  double in_xi_2,
67  double in_xi_3,
68  double & out_fb);
69 
70  void face_blending_eval_deriv1(int index,
71  double in_xi_1,
72  double in_xi_2,
73  double in_xi_3,
74  Point3d & dfb_dxi);
75 
76  void projected_face_coords(int face_index,
77  double in_xi1,
78  double in_xi2,
79  double in_xi3,
80  Point2d & out_xip);
81 
82  void projected_face_coords_deriv1(int face_index,
83  double in_xi1,
84  double in_xi2,
85  double in_xi3,
86  Point3d & dxip1_dxi,
87  Point3d & dxip2_dxi);
88 
90  void edge_blending_eval(int index,
91  double in_xi_1,
92  double in_xi_2,
93  double in_xi_3,
94  double & out_eb);
95 
96  void edge_blending_eval_deriv1(int index,
97  double in_xi_1,
98  double in_xi_2,
99  double in_xi_3,
100  Point3d & deb_dxi);
101 
102  void projected_edge_coords(int edge_index,
103  double in_xi1,
104  double in_xi2,
105  double in_xi3,
106  Point1d & out_xip);
107 
113  void projected_edge_coords_deriv1(int edge_index,
114  double in_xi1,
115  double in_xi2,
116  double in_xi3,
117  Point3d & dxip1_dxi);
118 };
119 #endif//MESHADAPT_CRVTETBLENDING_H
This class is design to represent the 3D high-order curved tetrahedron element. The data member shoul...
Definition: CrvTet.h:23
void setup_faces()
set up internal face storage and create Parametric Tri objects
Definition: CrvTetBlending.cc:86
CrvFacePtrVec m_crv_faces
container of a ordered list of mesh faces
Definition: CrvTetBlending.h:43
void setup_edges()
set up internal edge storage and create Parametric Curve objects
Definition: CrvTetBlending.cc:42
interface class for all parametric curves The parametric curves use the same coordinate system as the...
Definition: ParametricCurve.h:18
virtual int v_eval_deriv1(Point3d in_xi, Mat3x3 &out_jac)
the most up-do-date impl of derivatives eval based on blending
Definition: CrvTetBlending.cc:221
CrvTetBlending(VtxPtrVec in_vert_vec)
the only supported ctor
Definition: CrvTetBlending.cc:30
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
Definition: CrvTetBlending.cc:541
CrvEdgePtrVec m_crv_edges
container of a ordered list of mesh edges
Definition: CrvTetBlending.h:40
void projected_edge_coords_deriv1(int edge_index, double in_xi1, double in_xi2, double in_xi3, Point3d &dxip1_dxi)
Definition: CrvTetBlending.cc:779
virtual int v_eval_deriv1_old(Point3d in_xi, Mat3x3 &out_jac)
evaluate first derivative – set to retire
Definition: CrvTetBlending.cc:434
This class implements the blending based volume mapping The blending mapping formulation is coded acc...
Definition: CrvTetBlending.h:28
virtual int v_eval(Point3d in_xi, Point3d &out_pos)
shape handle for the 4 faces
Definition: CrvTetBlending.cc:166
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
Definition: CrvTetBlending.cc:672