Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/netgen/libsrc/meshing/bisect.hpp
3206 views
1
#ifndef BISECT
2
#define BISECT
3
4
class BisectionOptions
5
{
6
public:
7
const char * outfilename;
8
const char * mlfilename;
9
const char * refinementfilename;
10
const char * femcode;
11
int maxlevel;
12
int usemarkedelements;
13
bool refine_hp;
14
bool refine_p;
15
BisectionOptions ();
16
};
17
18
class ZRefinementOptions
19
{
20
public:
21
int minref;
22
ZRefinementOptions();
23
};
24
25
26
/*
27
extern void BisectTets (Mesh &, const CSGeometry *,
28
BisectionOptions & opt);
29
*/
30
31
extern void BisectTetsCopyMesh (Mesh &, const class CSGeometry *,
32
BisectionOptions & opt);
33
34
extern void ZRefinement (Mesh &, const CSGeometry *,
35
ZRefinementOptions & opt);
36
37
38
39
40
41
class Refinement
42
{
43
MeshOptimize2d * optimizer2d;
44
45
public:
46
Refinement ();
47
virtual ~Refinement ();
48
49
void Refine (Mesh & mesh);
50
void Bisect (Mesh & mesh, class BisectionOptions & opt, ARRAY<double> * quality_loss = NULL);
51
void MakeSecondOrder (Mesh & mesh);
52
53
virtual void PointBetween (const Point<3> & p1, const Point<3> & p2, double secpoint,
54
int surfi,
55
const PointGeomInfo & gi1,
56
const PointGeomInfo & gi2,
57
Point<3> & newp, PointGeomInfo & newgi);
58
59
virtual void PointBetween (const Point<3> & p1, const Point<3> & p2, double secpoint,
60
int surfi1, int surfi2,
61
const EdgePointGeomInfo & ap1,
62
const EdgePointGeomInfo & ap2,
63
Point<3> & newp, EdgePointGeomInfo & newgi);
64
65
virtual Vec<3> GetTangent (const Point<3> & p, int surfi1, int surfi2,
66
const EdgePointGeomInfo & egi) const;
67
68
virtual Vec<3> GetNormal (const Point<3> & p, int surfi1,
69
const PointGeomInfo & gi) const;
70
71
72
virtual void ProjectToSurface (Point<3> & p, int surfi);
73
74
virtual void ProjectToSurface (Point<3> & p, int surfi, const PointGeomInfo & /* gi */)
75
{
76
ProjectToSurface (p, surfi);
77
}
78
79
virtual void ProjectToEdge (Point<3> & p, int surfi1, int surfi2, const EdgePointGeomInfo & egi) const;
80
81
82
void ValidateSecondOrder (Mesh & mesh);
83
void ValidateRefinedMesh (Mesh & mesh,
84
ARRAY<INDEX_2> & parents);
85
86
MeshOptimize2d * Get2dOptimizer(void)
87
{
88
return optimizer2d;
89
}
90
void Set2dOptimizer(MeshOptimize2d * opti)
91
{
92
optimizer2d = opti;
93
}
94
95
96
virtual void LocalizeEdgePoints(Mesh & mesh) const {;}
97
};
98
99
#endif
100
101