MIDAS  0.75
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
compgeom.h
Go to the documentation of this file.
1 #ifndef MIDAS_COMPGEOM_H
2 #define MIDAS_COMPGEOM_H
3 
4 #include "alias.h"
5 
6 #include "geometry.h"
7 #include "gelib.h"
8 #include "gpa.h"
9 
10 
17 namespace midaspace {
18 
23 {
24  protected:
26  double zero;
27 
28  bool initialized; // flag, geom. char. set up
29  private:
30  PoinT centrcoord; // coordinates of centroid
31  protected:
32  LCS_pure *lcs; // local coordinate system
33  double circum; // radius of circumscribed circle/sphere [polomer opsane kruznice/kulove plochy]
34  double lav; // length / area / volume ; is always > 0.0
35 
36  public:
38  ComponentGeometry (Cell *o, double Z) { initialized = false; owner = o; zero = Z; lcs = NULL; }
40  ComponentGeometry (const ComponentGeometry *src) { owner = src->owner; zero = src->zero; initialized = false; }
42  virtual ~ComponentGeometry() { delete lcs; }
43 
45  virtual classID give_classid() const { return classComponentGeometry; }
46 
48  virtual void initialize (void);
50  virtual void checkConsistency (void) const { }
51 
53  virtual int give_dimension (void) const = 0;
54  virtual int give_number_of_vertices(void) const = 0;
55  virtual CellGeometry give_elemGeom (void) const = 0;
56 
58  void initcheck (void) const { if (!initialized) ((ComponentGeometry*)this)->initialize(); }
60  void set_owner (Cell *val) { owner = val; }
62  const PoinT* give_centercoords (void) const { initcheck(); return &centrcoord; }
63  double give_circum (void) const { initcheck(); return circum; }
64  double give_lav (void) const { initcheck(); return lav; }
65  double give_GeomWeight1deg(void) const { initcheck(); return lav / this->give_number_of_vertices(); }
66  virtual const LCS_pure* give_lcs (void) { _errorr("not implemented"); return NULL; }
67 
68  virtual double give_characteristic_size(void) const { errol; return 0.0; }
69 
70  bool is_point_in_sphere (const PoinT *point) const { initcheck(); return (centrcoord.dist2_to(point) < circum*circum) ? true : false ; }
71 };
72 
77 {
78  public:
80  ComponentGeometry1D (Cell *o, double Z) : ComponentGeometry(o, Z) { }
84  virtual ~ComponentGeometry1D() { }
85 
87  virtual classID give_classid() const { return classComponentGeometry1D; }
88 
90  virtual void initialize (void);
91 
93  virtual int give_dimension (void) const { return 1; }
94  virtual int give_number_of_vertices(void) const { return 2; };
95  virtual CellGeometry give_elemGeom (void) const { return CG_Line; }
96 
98  virtual double give_characteristic_size (void) const { initcheck(); return this->lav; }
100 };
101 
103 {
104  int nv; // number of vertices
105 
106  public:
108  ComponentGeometry1Dpoly (Cell *o, double Z);
113 
116 
118  virtual void initialize (void);
120  virtual void checkConsistency (void) const;
121 
123  virtual int give_number_of_vertices(void) const { return nv; };
124  virtual CellGeometry give_elemGeom (void) const { return CG_PolyLine; }
125 
127  void reset_nv (void);
128 
130 
132  virtual double give_characteristic_size (void) const { errol; return 0.0; }
133 };
134 
139 {
140  protected:
141  int nv; // number of vertices
142  VectoR normal; // normal vector == vector product of first 3 nodes; it is not normalized (it's length != 1.0)
143 
144  public:
146  ComponentGeometry2D (Cell *o, double Z);
150  virtual ~ComponentGeometry2D() { }
151 
153  virtual classID give_classid() const { return classComponentGeometry2D; }
154 
156  virtual void initialize (void);
158  virtual void checkConsistency (void) const;
159 
161  virtual int give_dimension (void) const { return 2; }
162  virtual int give_number_of_vertices(void) const { return nv; }
163 
164  const VectoR* give_normal (void) const { initcheck(); return &normal; }
165 
166  virtual const LCS_pure* give_lcs (void);
167 };
168 
170 {
171  public:
178 
181 
183  virtual CellGeometry give_elemGeom (void) const { return CG_Triangle; }
184 
186  virtual double give_characteristic_size (void) const { initcheck(); return sqrt(2.0 * this->lav); } // sqrt(2.0 * this->lav / sin(60))
187 };
189 {
190  public:
197 
200 
202  virtual CellGeometry give_elemGeom (void) const { return CG_Quadrangle; }
203 
205  virtual double give_characteristic_size (void) const { initcheck(); return sqrt(this->lav); }
206 };
208 {
209  public:
216 
219 
221  void set_nv (int n) { nv = n; }
223  virtual CellGeometry give_elemGeom (void) const { return CG_Polygon; }
224 };
225 
230 {
231  public:
233  ComponentGeometry3D (Cell *o, double Z) : ComponentGeometry(o, Z) { }
237  virtual ~ComponentGeometry3D() { }
238 
240  virtual classID give_classid() const { return classComponentGeometry3D; }
241 
243  virtual int give_dimension() const { return 3; }
244 };
247 {
248  public:
255 
258 
260  virtual void initialize (void);
261 
262  virtual int give_number_of_vertices(void) const { return 8; }
263  virtual CellGeometry give_elemGeom (void) const { return CG_Hexahedron; }
264 };
267 {
268  public:
275 
278 
280  virtual void initialize (void);
281 
282  virtual int give_number_of_vertices(void) const { return 4; }
283  virtual CellGeometry give_elemGeom (void) const { return CG_Tetrahedron; }
284 };
285 
286 
287 } // namespace midaspace
288 
289 #endif // MIDAS_COMPGEOM_H
virtual void initialize(void)
initiate/sets data
Definition: compgeom.cpp:13
virtual int give_number_of_vertices(void) const
Dimension of element.
Definition: compgeom.h:123
virtual ~ComponentGeometry1D()
DESTRUCTOR.
Definition: compgeom.h:84
const PoinT * give_centercoords(void) const
*** GET ***
Definition: compgeom.h:62
double dist2_to(const PoinT *p) const
Definition: arrays.h:102
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:283
ComponentGeometry3Dhexahedron(const ComponentGeometry3Dhexahedron *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:252
virtual int give_number_of_vertices(void) const =0
ComponentGeometry1Dpoly(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.cpp:64
virtual void initialize(void)
initiate/sets data
Definition: compgeom.cpp:41
General functions.
virtual void initialize(void)
initiate/sets data
Definition: compgeom.cpp:92
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:153
Class GPA.
ComponentGeometry(const ComponentGeometry *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:40
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:95
virtual ~ComponentGeometry3Dtetrahedron()
DESTRUCTOR.
Definition: compgeom.h:274
virtual void checkConsistency(void) const
Checks data consistency.
Definition: compgeom.h:50
double give_GeomWeight1deg(void) const
Definition: compgeom.h:65
ComponentGeometry2Dquadrangle(const ComponentGeometry2Dquadrangle *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:194
virtual double give_characteristic_size(void) const
Definition: compgeom.h:98
Alias.
void set_owner(Cell *val)
*** SET ***
Definition: compgeom.h:60
#define errol
Definition: gelib.h:142
virtual int give_number_of_vertices(void) const
Definition: compgeom.h:162
virtual int give_number_of_vertices(void) const
Definition: compgeom.h:282
virtual void checkConsistency(void) const
Checks data consistency.
Definition: compgeom.cpp:85
CellGeometry
Definition: alias.h:840
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:87
*** *** *** *** CLASS ComponentGeometry 3D *** *** *** ***
Definition: compgeom.h:229
ComponentGeometry3Dhexahedron(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:250
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:199
virtual void checkConsistency(void) const
Checks data consistency.
Definition: compgeom.cpp:68
ComponentGeometry1D(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:80
ComponentGeometry3D(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:233
virtual double give_characteristic_size(void) const
Definition: compgeom.h:205
virtual double give_characteristic_size(void) const
Definition: compgeom.h:186
ComponentGeometry3Dtetrahedron(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:270
*** *** *** *** CLASS ComponentGeometry 1D *** *** *** ***
Definition: compgeom.h:76
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:240
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:45
ComponentGeometry1Dpoly(const ComponentGeometry1Dpoly *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:110
virtual int give_dimension(void) const
STATIC.
Definition: compgeom.h:161
virtual void initialize(void)
initiate/sets data
Definition: compgeom.cpp:213
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:124
virtual ~ComponentGeometry3Dhexahedron()
DESTRUCTOR.
Definition: compgeom.h:254
virtual CellGeometry give_elemGeom(void) const =0
virtual int give_dimension(void) const =0
STATIC.
virtual ~ComponentGeometry2Dtriangle()
DESTRUCTOR.
Definition: compgeom.h:177
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:263
virtual double give_characteristic_size(void) const
Definition: compgeom.h:68
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:115
bool is_point_in_sphere(const PoinT *point) const
Definition: compgeom.h:70
ComponentGeometry3D(const ComponentGeometry3D *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:235
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:218
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:257
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:277
double give_lav(void) const
Definition: compgeom.h:64
#define _errorr(_1)
Definition: gelib.h:151
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:183
const VectoR * give_normal(void) const
Definition: compgeom.h:164
void initcheck(void) const
DYNAMIC.
Definition: compgeom.h:58
ComponentGeometry2Dpolygon(const ComponentGeometry2Dpolygon *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:213
virtual ~ComponentGeometry2Dpolygon()
DESTRUCTOR.
Definition: compgeom.h:215
ComponentGeometry3Dtetrahedron(const ComponentGeometry3Dtetrahedron *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:272
ComponentGeometry(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:38
virtual void initialize(void)
initiate/sets data
Definition: compgeom.cpp:51
ComponentGeometry2Dpolygon(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:211
ComponentGeometry1D(const ComponentGeometry1D *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:82
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:223
virtual const LCS_pure * give_lcs(void)
Definition: compgeom.cpp:157
virtual void initialize(void)
initiate/sets data
Definition: compgeom.cpp:191
quadrilateral convex hexahedron
Definition: compgeom.h:246
Local coordinate system defined by 2 vectors.
Definition: taux.h:179
virtual CellGeometry give_elemGeom(void) const
Definition: compgeom.h:202
virtual double give_characteristic_size(void) const
*** GET ***
Definition: compgeom.h:132
virtual ~ComponentGeometry1Dpoly()
DESTRUCTOR.
Definition: compgeom.h:112
ComponentGeometry2Dtriangle(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:173
void reset_nv(void)
DYNAMIC.
Definition: compgeom.cpp:74
virtual classID give_classid() const
Returns classID - class identification.
Definition: compgeom.h:180
virtual const LCS_pure * give_lcs(void)
Definition: compgeom.h:66
double give_circum(void) const
Definition: compgeom.h:63
*** *** *** *** CLASS ComponentGeometry *** *** *** ***
Definition: compgeom.h:22
ComponentGeometry2Dquadrangle(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.h:192
Class Geometry, Model and Mesh.
ComponentGeometry2D(Cell *o, double Z)
CONSTRUCTOR.
Definition: compgeom.cpp:81
virtual int give_number_of_vertices(void) const
Definition: compgeom.h:94
virtual int give_dimension(void) const
Dimension of element.
Definition: compgeom.h:93
virtual ~ComponentGeometry()
DESTRUCTOR.
Definition: compgeom.h:42
virtual int give_dimension() const
Dimension of element.
Definition: compgeom.h:243
virtual ~ComponentGeometry2D()
DESTRUCTOR.
Definition: compgeom.h:150
classID
Type introduced to distinguish between classes.
Definition: alias.h:142
virtual ~ComponentGeometry2Dquadrangle()
DESTRUCTOR.
Definition: compgeom.h:196
ComponentGeometry2Dtriangle(const ComponentGeometry2Dtriangle *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:175
virtual ~ComponentGeometry3D()
DESTRUCTOR.
Definition: compgeom.h:237
VectoR * copy(const VectoR *p)
Definition: arrays.h:150
*** *** *** *** CLASS ComponentGeometry 2D *** *** *** ***
Definition: compgeom.h:138
virtual int give_number_of_vertices(void) const
Definition: compgeom.h:262
ComponentGeometry2D(const ComponentGeometry2D *src)
CONSTRUCTOR COPY.
Definition: compgeom.h:148