17
18
typedef std::map<MVertex*, std::vector<MElement*> > v2t_cont;
18
typedef std::map<MEdge, std::pair<MElement*,MElement*>, Less_Edge> e2t_cont;
19
typedef std::map<MEdge, std::pair<MElement*, MElement*>, Less_Edge> e2t_cont;
19
21
void buildVertexToTriangle(std::vector<MTriangle*> &, v2t_cont &adj);
20
22
void buildEdgeToTriangle(std::vector<MTriangle*> &, e2t_cont &adj);
21
23
void laplaceSmoothing(GFace *gf);
22
24
void edgeSwappingLawson(GFace *gf);
23
enum gmshSwapCriterion {SWCR_DEL, SWCR_QUAL,SWCR_NORM, SWCR_CLOSE};
26
enum gmshSwapCriterion {SWCR_DEL, SWCR_QUAL, SWCR_NORM, SWCR_CLOSE};
24
27
enum gmshSplitCriterion {SPCR_CLOSE, SPCR_QUAL, SPCR_ALLWAYS};
25
int edgeSwapPass(GFace *gf, std::set<MTri3*, compareTri3Ptr> &allTris,
29
int edgeSwapPass(GFace *gf,
30
std::set<MTri3*, compareTri3Ptr> &allTris,
26
31
const gmshSwapCriterion &cr,
27
const std::vector<double> &Us,
32
const std::vector<double> &Us,
28
33
const std::vector<double> &Vs,
29
const std::vector<double> &vSizes,
34
const std::vector<double> &vSizes,
30
35
const std::vector<double> &vSizesBGM);
31
int edgeSplitPass(double maxLC,
32
GFace *gf, std::set<MTri3*, compareTri3Ptr> &allTris,
36
int edgeSplitPass(double maxLC, GFace *gf,
37
std::set<MTri3*, compareTri3Ptr> &allTris,
33
38
const gmshSplitCriterion &cr,
34
std::vector<double> &Us ,
39
std::vector<double> &Us,
35
40
std::vector<double> &Vs,
36
41
std::vector<double> &vSizes ,
37
42
std::vector<double> &vSizesBGM);
38
int edgeCollapsePass(double minLC,
39
GFace *gf, std::set<MTri3*, compareTri3Ptr> &allTris,
43
int edgeCollapsePass(double minLC, GFace *gf,
44
std::set<MTri3*, compareTri3Ptr> &allTris,
40
45
std::vector<double> &Us,
41
46
std::vector<double> &Vs,
42
47
std::vector<double> &vSizes ,
43
48
std::vector<double> &vSizesBGM);
44
void buidMeshGenerationDataStructures(GFace *gf, std::set<MTri3*, compareTri3Ptr> &AllTris,
45
std::vector<double> &vSizes,
46
std::vector<double> &vSizesBGM,
47
std::vector<double> &Us,
48
std::vector<double> &Vs);
49
void transferDataStructure (GFace *gf, std::set<MTri3*, compareTri3Ptr> &AllTris);
49
void buildMeshGenerationDataStructures(GFace *gf,
50
std::set<MTri3*, compareTri3Ptr> &AllTris,
51
std::vector<double> &vSizes,
52
std::vector<double> &vSizesBGM,
53
std::vector<double> &Us,
54
std::vector<double> &Vs);
55
void transferDataStructure(GFace *gf, std::set<MTri3*, compareTri3Ptr> &AllTris,
56
std::vector<double> &Us, std::vector<double> &Vs);
50
57
void gmshRecombineIntoQuads(GFace *gf);