Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/netgen/libsrc/csg/singularref.hpp
3206 views
1
#ifndef FILE_SINGULARREF
2
#define FILE_SINGULARREF
3
4
/**************************************************************************/
5
/* File: singularref.hh */
6
/* Author: Joachim Schoeberl */
7
/* Date: 25. Sep. 99 */
8
/**************************************************************************/
9
10
/**
11
Control for local refinement
12
*/
13
14
15
16
/**
17
Singular Face.
18
Causes a bounday layer mesh refinement.
19
All elements in subdomain domnr will get a boundary layer
20
on faces sharing the solid sol
21
*/
22
class SingularFace
23
{
24
public:
25
int domnr;
26
const Solid *sol;
27
double factor;
28
// ARRAY<Point<3> > points;
29
// ARRAY<INDEX_2> segms;
30
public:
31
SingularFace (int adomnr, const Solid * asol, double sf)
32
: domnr(adomnr), sol(asol), factor(sf) { ; }
33
const Solid * GetSolid() const { return sol; }
34
int GetDomainNr () const { return domnr; }
35
};
36
37
38
///
39
class SingularEdge
40
{
41
public:
42
double beta;
43
int domnr;
44
const CSGeometry& geom;
45
const Solid *sol1, *sol2;
46
ARRAY<Point<3> > points;
47
ARRAY<INDEX_2> segms;
48
double factor;
49
50
double maxhinit;
51
public:
52
SingularEdge (double abeta, int adomnr,
53
const CSGeometry & ageom,
54
const Solid * asol1, const Solid * asol2, double sf,
55
const double maxh_at_initialization = -1);
56
void FindPointsOnEdge (class Mesh & mesh);
57
void SetMeshSize (class Mesh & mesh, double globalh);
58
};
59
60
61
///
62
class SingularPoint
63
{
64
public:
65
double beta;
66
const Solid *sol1, *sol2, *sol3;
67
ARRAY<Point<3> > points;
68
double factor;
69
70
public:
71
SingularPoint (double abeta, const Solid * asol1, const Solid * asol2,
72
const Solid * asol3, double sf);
73
void FindPoints (class Mesh & mesh);
74
void SetMeshSize (class Mesh & mesh, double globalh);
75
};
76
77
78
#endif
79
80