curveUtil.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 #ifndef MESHADAPT_CURVEUTIL_H_
11 #define MESHADAPT_CURVEUTIL_H_
12 
13 #include "AdaptTypes.h"
14 #include "MeshTools.h"
15 
16 #include <pumi.h>
17 #include <pumi_mesh.h>
18 
19 #include <iostream>
20 #include <vector>
21 #include <string>
22 
25  public:
26  int index;
27  int index1[3];
28  int isCorner;
29  int processed;
30  double shape;
31  double qs;
32  double qc; //same as above
33  //double minDetJ; // minimum of the Jacobian Determinant evaluated over a curved tet
34  //double maxDetJ; // maximum of the above
35 };
36 typedef class CurvedRegionShapeInfo crShpInfo;
37 
40 public:
41  pMeshEdge edge;
42  double shape;
43  double ptxyz[3];
44  int newR;
45 };
46 typedef class ReShapeEdgeInfo rEdShpInfo;
47 
48 int XYZ_RadiusRatio(double (*)[3], double&);
49 
50 void FIXME_LATER();
51 void CRV_ERROR();
52 
53 namespace curveUtil {
54 
55  void gauss_legendre_quadrature(int num_pts, double * pts, double * weights);
56 
57  int R_numEdgesOnGeomRegn(pMeshRgn pTheRgn);
58 
59  int R_numEdgesOnGeomFace(pMeshRgn pTheRgn);
60 
61  int R_numEdgesOnGeomEdge(pMeshRgn pTheRgn);
62 
63  int R_numFacesOnGeomRegn(pMeshRgn pTheRgn);
64 
65  int R_numFacesOnGeomFace(pMeshRgn pTheRgn);
66 
67  void M_checkSurfaceMeshByAngle(pPart pmesh, double angle, std::vector<pMeshFace> &vec_facesLargeAngle);
68 
69 #ifdef MA_PARALLEL
70  int CR_isOnPartBdry(pMeshRgn region);
71 #endif
72 
73  void F_bezierSplit(pMeshFace face, pMeshEdge edge, double *ptxyz);
74  pMeshVtx F_opEdgeVert(pMeshFace face, pMeshEdge edge);
75  void computePtForOppEdge(pMeshEdge oppEdge, pMeshFace *faces, double *xyz);
76  void writeRgnDataForMaple(pMeshRgn, char*);
78  int HO_XYZ_isValid(double (*)[3], crShpInfo*, pMeshRgn region=NULL);
79  int CR_isValid(pMeshRgn, crShpInfo*);
80 
83  int XYZ_JacRatio(double (*)[3], double &shape);
84 
85  pumi::pNode extractPt(pPart msh, pMeshFace mf, pMeshEdge edge, double u, double v);// for face
86  void F_bezierXYZ(pMeshFace face, double (*fxyz)[3]);
88  void F_bezierEval(double (*fxyz)[3], double u, double v, double *ptxyz);
89 
90  void writeOutCorner(pMeshRgn region, pMeshVtx vertex, char* name);
91 
93  void M_checkCurvedRegionShape(pPart, char*);
94  void writeOutCurvedRegion(pMeshEnt, int, char *);
95  void writeOutCurvedRList(pumi::pPList *, int, char*);
96  int R_worstShape(pumi::pPList *, double &, double &, pumi::pPList *);
97 
98  /* --- tagged data communication --- */
99 
101  void unifyTaggedEntitiesWithValuesDbl(pMeshMdl FmdbMesh, pTag FmdbTag, std::list<mEntity*> *LIST);
102 }
103 
104 #endif //MESHADAPT_CURVEUTIL_H_
This class contains data members indicating the shape information of a curved tet region...
Definition: curveUtil.h:24
This class contains data members for the purpose of assisting edge re-shaping operations.
Definition: curveUtil.h:39
Definition: curveUtil.cc:77