SphericalTetMeshFacetedSurface Class Reference

TetMeshFacetedSurface that defines inner boundary. More...

+ Inheritance diagram for SphericalTetMeshFacetedSurface:

Public Member Functions

 SphericalTetMeshFacetedSurface ()
 Constructor. More...
 
- Public Member Functions inherited from oomph::TetMeshFacetedClosedSurface
 TetMeshFacetedClosedSurface ()
 Constructor: More...
 
virtual ~TetMeshFacetedClosedSurface ()
 Empty destructor. More...
 
void enable_faceted_volume_represents_hole_for_gmsh ()
 Declare closed surface to represent hole for gmsh. More...
 
void disable_faceted_volume_represents_hole_for_gmsh ()
 Declare closed surface NOT to represent hole for gmsh. More...
 
bool faceted_volume_represents_hole_for_gmsh () const
 Does closed surface represent hole for gmsh? More...
 
const doubleinternal_point_for_tetgen (const unsigned &j, const unsigned &i) const
 i=th coordinate of the j-th internal point for tetgen More...
 
void set_hole_for_tetgen (const Vector< double > &hole_point)
 Specify coordinate of hole for tetgen. More...
 
void set_region_for_tetgen (const unsigned &region_id, const Vector< double > &region_point)
 
unsigned ninternal_point_for_tetgen ()
 
const intregion_id_for_tetgen (const unsigned &j) const
 
bool internal_point_identifies_hole_for_tetgen (const unsigned &j)
 Is j-th internal point for tetgen associated with a hole? More...
 
bool internal_point_identifies_region_for_tetgen (const unsigned &j)
 Is j-th internal point for tetgen associated with a region? More...
 
- Public Member Functions inherited from oomph::TetMeshFacetedSurface
 TetMeshFacetedSurface ()
 Constructor: More...
 
virtual ~TetMeshFacetedSurface ()
 Empty destructor. More...
 
unsigned nvertex () const
 Number of vertices. More...
 
unsigned nfacet () const
 Number of facets. More...
 
unsigned one_based_facet_boundary_id (const unsigned &j) const
 One-based boundary id of j-th facet. More...
 
unsigned one_based_vertex_boundary_id (const unsigned &j) const
 First (of possibly multiple) one-based boundary id of j-th vertex. More...
 
double vertex_coordinate (const unsigned &j, const unsigned &i) const
 i-th coordinate of j-th vertex More...
 
unsigned nvertex_on_facet (const unsigned &j) const
 Number of vertices defining the j-th facet. More...
 
bool boundaries_can_be_split_in_tetgen ()
 Test whether boundary can be split in tetgen. More...
 
void enable_boundaries_can_be_split_in_tetgen ()
 Test whether boundaries can be split in tetgen. More...
 
void disable_boundaries_can_be_split_in_tetgen ()
 Test whether boundaries can be split in tetgen. More...
 
TetMeshFacetfacet_pt (const unsigned &j) const
 Pointer to j-th facet. More...
 
TetMeshVertexvertex_pt (const unsigned &j) const
 Pointer to j-th vertex. More...
 
DiskLikeGeomObjectWithBoundariesgeom_object_with_boundaries_pt ()
 
void output (std::ostream &outfile) const
 Output. More...
 
void output (const std::string &filename) const
 Output. More...
 
virtual void boundary_zeta01 (const unsigned &facet_id, const double &zeta_boundary, Vector< double > &zeta)
 
virtual void boundary_zeta12 (const unsigned &facet_id, const double &zeta_boundary, Vector< double > &zeta)
 
virtual void boundary_zeta20 (const unsigned &facet_id, const double &zeta_boundary, Vector< double > &zeta)
 
Vector< unsignedvertex_index_in_tetgen (const unsigned &f)
 

Additional Inherited Members

- Protected Attributes inherited from oomph::TetMeshFacetedSurface
Vector< TetMeshVertex * > Vertex_pt
 Vector pointers to vertices. More...
 
Vector< TetMeshFacet * > Facet_pt
 Vector of pointers to facets. More...
 
bool Boundaries_can_be_split_in_tetgen
 
Vector< Vector< unsigned > > Facet_vertex_index_in_tetgen
 
DiskLikeGeomObjectWithBoundariesGeom_object_with_boundaries_pt
 GeomObject with boundaries associated with this surface. More...
 

Detailed Description

TetMeshFacetedSurface that defines inner boundary.

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

Constructor & Destructor Documentation

◆ SphericalTetMeshFacetedSurface()

SphericalTetMeshFacetedSurface::SphericalTetMeshFacetedSurface ( )
inline

Constructor.

68  {
69 
70  //Golden ratio
71  const double phi = 0.5*(1.0 + sqrt(5.0));
72 
73  // Make vertices
74  unsigned n_vertex=12;
75  Vertex_pt.resize(n_vertex);
76 
77  //Set basic icosahedron points
78  Vector<double> icosa_point(3);
79 
80  icosa_point[0] = 0.0;
81  icosa_point[1] = 1.0;
82  icosa_point[2] = phi;
83  Vertex_pt[0]=new TetMeshVertex(icosa_point);
84 
85  icosa_point[0] = 0.0;
86  icosa_point[1] = -1.0;
87  icosa_point[2] = phi;
88  Vertex_pt[1]=new TetMeshVertex(icosa_point);
89 
90  icosa_point[0] = 0.0;
91  icosa_point[1] = 1.0;
92  icosa_point[2] = -phi;
93  Vertex_pt[2]=new TetMeshVertex(icosa_point);
94 
95  icosa_point[0] = 0.0;
96  icosa_point[1] = -1.0;
97  icosa_point[2] = -phi;
98  Vertex_pt[3]=new TetMeshVertex(icosa_point);
99 
100  icosa_point[0] = 1.0;
101  icosa_point[1] = phi;
102  icosa_point[2] = 0.0;
103  Vertex_pt[4]=new TetMeshVertex(icosa_point);
104 
105  icosa_point[0] = -1.0;
106  icosa_point[1] = phi;
107  icosa_point[2] = 0.0;
108  Vertex_pt[5]=new TetMeshVertex(icosa_point);
109 
110  icosa_point[0] = 1.0;
111  icosa_point[1] = -phi;
112  icosa_point[2] = 0.0;
113  Vertex_pt[6]=new TetMeshVertex(icosa_point);
114 
115  icosa_point[0] = -1.0;
116  icosa_point[1] = -phi;
117  icosa_point[2] = 0.0;
118  Vertex_pt[7]=new TetMeshVertex(icosa_point);
119 
120  icosa_point[0] = phi;
121  icosa_point[1] = 0.0;
122  icosa_point[2] = 1.0;
123  Vertex_pt[8]=new TetMeshVertex(icosa_point);
124 
125  icosa_point[0] = phi;
126  icosa_point[1] = 0.0;
127  icosa_point[2] = -1.0;
128  Vertex_pt[9]=new TetMeshVertex(icosa_point);
129 
130  icosa_point[0] = -phi;
131  icosa_point[1] = 0.0;
132  icosa_point[2] = 1.0;
133  Vertex_pt[10]=new TetMeshVertex(icosa_point);
134 
135  icosa_point[0] = -phi;
136  icosa_point[1] = 0.0;
137  icosa_point[2] = -1.0;
138  Vertex_pt[11]=new TetMeshVertex(icosa_point);
139 
140  // Make facets
141  unsigned n_facet=20;
142  Facet_pt.resize(n_facet);
143 
144  unsigned n_vertex_on_facet=3;
145  Facet_pt[0]=new TetMeshFacet(n_vertex_on_facet);
146  Facet_pt[0]->set_vertex_pt(0,Vertex_pt[0]);
147  Facet_pt[0]->set_vertex_pt(1,Vertex_pt[1]);
148  Facet_pt[0]->set_vertex_pt(2,Vertex_pt[8]);
149 
150  // icosa_facet[0][0] = 0;
151  // icosa_facet[0][1] = 1;
152  // icosa_facet[0][2] = 8;
153 
154  Facet_pt[1]=new TetMeshFacet(n_vertex_on_facet);
155  Facet_pt[1]->set_vertex_pt(0,Vertex_pt[0]);
156  Facet_pt[1]->set_vertex_pt(1,Vertex_pt[10]);
157  Facet_pt[1]->set_vertex_pt(2,Vertex_pt[1]);
158 
159  // icosa_facet[1].resize(3);
160  // icosa_facet[1][0] = 0;
161  // icosa_facet[1][1] = 10;
162  // icosa_facet[1][2] = 1;
163 
164  Facet_pt[2]=new TetMeshFacet(n_vertex_on_facet);
165  Facet_pt[2]->set_vertex_pt(0,Vertex_pt[0]);
166  Facet_pt[2]->set_vertex_pt(1,Vertex_pt[5]);
167  Facet_pt[2]->set_vertex_pt(2,Vertex_pt[10]);
168 
169  // icosa_facet[2].resize(3);
170  // icosa_facet[2][0] = 0;
171  // icosa_facet[2][1] = 5;
172  // icosa_facet[2][2] = 10;
173 
174  Facet_pt[3]=new TetMeshFacet(n_vertex_on_facet);
175  Facet_pt[3]->set_vertex_pt(0,Vertex_pt[0]);
176  Facet_pt[3]->set_vertex_pt(1,Vertex_pt[4]);
177  Facet_pt[3]->set_vertex_pt(2,Vertex_pt[5]);
178 
179  // icosa_facet[3].resize(3);
180  // icosa_facet[3][0] = 0;
181  // icosa_facet[3][1] = 4;
182  // icosa_facet[3][2] = 5;
183 
184  Facet_pt[4]=new TetMeshFacet(n_vertex_on_facet);
185  Facet_pt[4]->set_vertex_pt(0,Vertex_pt[0]);
186  Facet_pt[4]->set_vertex_pt(1,Vertex_pt[8]);
187  Facet_pt[4]->set_vertex_pt(2,Vertex_pt[4]);
188 
189  // icosa_facet[4].resize(3);
190  // icosa_facet[4][0] = 0;
191  // icosa_facet[4][1] = 8;
192  // icosa_facet[4][2] = 4;
193 
194  Facet_pt[5]=new TetMeshFacet(n_vertex_on_facet);
195  Facet_pt[5]->set_vertex_pt(0,Vertex_pt[5]);
196  Facet_pt[5]->set_vertex_pt(1,Vertex_pt[11]);
197  Facet_pt[5]->set_vertex_pt(2,Vertex_pt[10]);
198 
199  // icosa_facet[5].resize(3);
200  // icosa_facet[5][0] = 5;
201  // icosa_facet[5][1] = 11;
202  // icosa_facet[5][2] = 10;
203 
204  Facet_pt[6]=new TetMeshFacet(n_vertex_on_facet);
205  Facet_pt[6]->set_vertex_pt(0,Vertex_pt[5]);
206  Facet_pt[6]->set_vertex_pt(1,Vertex_pt[2]);
207  Facet_pt[6]->set_vertex_pt(2,Vertex_pt[11]);
208 
209  // icosa_facet[6].resize(3);
210  // icosa_facet[6][0] = 5;
211  // icosa_facet[6][1] = 2;
212  // icosa_facet[6][2] = 11;
213 
214  Facet_pt[7]=new TetMeshFacet(n_vertex_on_facet);
215  Facet_pt[7]->set_vertex_pt(0,Vertex_pt[4]);
216  Facet_pt[7]->set_vertex_pt(1,Vertex_pt[2]);
217  Facet_pt[7]->set_vertex_pt(2,Vertex_pt[5]);
218 
219  // icosa_facet[7].resize(3);
220  // icosa_facet[7][0] = 4;
221  // icosa_facet[7][1] = 2;
222  // icosa_facet[7][2] = 5;
223 
224  Facet_pt[8]=new TetMeshFacet(n_vertex_on_facet);
225  Facet_pt[8]->set_vertex_pt(0,Vertex_pt[4]);
226  Facet_pt[8]->set_vertex_pt(1,Vertex_pt[9]);
227  Facet_pt[8]->set_vertex_pt(2,Vertex_pt[2]);
228 
229  // icosa_facet[8].resize(3);
230  // icosa_facet[8][0] = 4;
231  // icosa_facet[8][1] = 9;
232  // icosa_facet[8][2] = 2;
233 
234  Facet_pt[9]=new TetMeshFacet(n_vertex_on_facet);
235  Facet_pt[9]->set_vertex_pt(0,Vertex_pt[8]);
236  Facet_pt[9]->set_vertex_pt(1,Vertex_pt[9]);
237  Facet_pt[9]->set_vertex_pt(2,Vertex_pt[4]);
238 
239  // icosa_facet[9].resize(3);
240  // icosa_facet[9][0] = 8;
241  // icosa_facet[9][1] = 9;
242  // icosa_facet[9][2] = 4;
243 
244  Facet_pt[10]=new TetMeshFacet(n_vertex_on_facet);
245  Facet_pt[10]->set_vertex_pt(0,Vertex_pt[6]);
246  Facet_pt[10]->set_vertex_pt(1,Vertex_pt[9]);
247  Facet_pt[10]->set_vertex_pt(2,Vertex_pt[8]);
248 
249  // icosa_facet[10].resize(3);
250  // icosa_facet[10][0] = 6;
251  // icosa_facet[10][1] = 9;
252  // icosa_facet[10][2] = 8;
253 
254  Facet_pt[11]=new TetMeshFacet(n_vertex_on_facet);
255  Facet_pt[11]->set_vertex_pt(0,Vertex_pt[1]);
256  Facet_pt[11]->set_vertex_pt(1,Vertex_pt[6]);
257  Facet_pt[11]->set_vertex_pt(2,Vertex_pt[8]);
258 
259  // icosa_facet[11].resize(3);
260  // icosa_facet[11][0] = 1;
261  // icosa_facet[11][1] = 6;
262  // icosa_facet[11][2] = 8;
263 
264  Facet_pt[12]=new TetMeshFacet(n_vertex_on_facet);
265  Facet_pt[12]->set_vertex_pt(0,Vertex_pt[1]);
266  Facet_pt[12]->set_vertex_pt(1,Vertex_pt[7]);
267  Facet_pt[12]->set_vertex_pt(2,Vertex_pt[6]);
268 
269  // icosa_facet[12].resize(3);
270  // icosa_facet[12][0] = 1;
271  // icosa_facet[12][1] = 7;
272  // icosa_facet[12][2] = 6;
273 
274  Facet_pt[13]=new TetMeshFacet(n_vertex_on_facet);
275  Facet_pt[13]->set_vertex_pt(0,Vertex_pt[10]);
276  Facet_pt[13]->set_vertex_pt(1,Vertex_pt[7]);
277  Facet_pt[13]->set_vertex_pt(2,Vertex_pt[1]);
278 
279  // icosa_facet[13].resize(3);
280  // icosa_facet[13][0] = 10;
281  // icosa_facet[13][1] = 7;
282  // icosa_facet[13][2] = 1;
283 
284  Facet_pt[14]=new TetMeshFacet(n_vertex_on_facet);
285  Facet_pt[14]->set_vertex_pt(0,Vertex_pt[10]);
286  Facet_pt[14]->set_vertex_pt(1,Vertex_pt[11]);
287  Facet_pt[14]->set_vertex_pt(2,Vertex_pt[7]);
288 
289  // icosa_facet[14].resize(3);
290  // icosa_facet[14][0] = 10;
291  // icosa_facet[14][1] = 11;
292  // icosa_facet[14][2] = 7;
293 
294  Facet_pt[15]=new TetMeshFacet(n_vertex_on_facet);
295  Facet_pt[15]->set_vertex_pt(0,Vertex_pt[11]);
296  Facet_pt[15]->set_vertex_pt(1,Vertex_pt[3]);
297  Facet_pt[15]->set_vertex_pt(2,Vertex_pt[7]);
298 
299  // icosa_facet[15].resize(3);
300  // icosa_facet[15][0] = 11;
301  // icosa_facet[15][1] = 3;
302  // icosa_facet[15][2] = 7;
303 
304  Facet_pt[16]=new TetMeshFacet(n_vertex_on_facet);
305  Facet_pt[16]->set_vertex_pt(0,Vertex_pt[7]);
306  Facet_pt[16]->set_vertex_pt(1,Vertex_pt[3]);
307  Facet_pt[16]->set_vertex_pt(2,Vertex_pt[6]);
308 
309  // icosa_facet[16].resize(3);
310  // icosa_facet[16][0] = 7;
311  // icosa_facet[16][1] = 3;
312  // icosa_facet[16][2] = 6;
313 
314  Facet_pt[17]=new TetMeshFacet(n_vertex_on_facet);
315  Facet_pt[17]->set_vertex_pt(0,Vertex_pt[6]);
316  Facet_pt[17]->set_vertex_pt(1,Vertex_pt[3]);
317  Facet_pt[17]->set_vertex_pt(2,Vertex_pt[9]);
318 
319  // icosa_facet[17].resize(3);
320  // icosa_facet[17][0] = 6;
321  // icosa_facet[17][1] = 3;
322  // icosa_facet[17][2] = 9;
323 
324  Facet_pt[18]=new TetMeshFacet(n_vertex_on_facet);
325  Facet_pt[18]->set_vertex_pt(0,Vertex_pt[9]);
326  Facet_pt[18]->set_vertex_pt(1,Vertex_pt[3]);
327  Facet_pt[18]->set_vertex_pt(2,Vertex_pt[2]);
328 
329  // icosa_facet[18].resize(3);
330  // icosa_facet[18][0] = 9;
331  // icosa_facet[18][1] = 3;
332  // icosa_facet[18][2] = 2;
333 
334  Facet_pt[19]=new TetMeshFacet(n_vertex_on_facet);
335  Facet_pt[19]->set_vertex_pt(0,Vertex_pt[2]);
336  Facet_pt[19]->set_vertex_pt(1,Vertex_pt[3]);
337  Facet_pt[19]->set_vertex_pt(2,Vertex_pt[11]);
338 
339  // icosa_facet[19].resize(3);
340  // icosa_facet[19][0] = 2;
341  // icosa_facet[19][1] = 3;
342  // icosa_facet[19][2] = 11;
343 
344  // Set one-based boundary IDs
345  unsigned one_based_boundary_id=1;
346  for (unsigned f=0;f<n_facet;f++)
347  {
348  Facet_pt[f]->set_one_based_boundary_id(one_based_boundary_id);
349  }
350 
351  // Identify point in hole
352  Vector<double> inner_point(3,0.0);
353  set_hole_for_tetgen(inner_point);
354 
355  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
Definition: tet_mesh.h:168
void set_hole_for_tetgen(const Vector< double > &hole_point)
Specify coordinate of hole for tetgen.
Definition: tet_mesh.h:575
Vector< TetMeshVertex * > Vertex_pt
Vector pointers to vertices.
Definition: tet_mesh.h:483
Vector< TetMeshFacet * > Facet_pt
Vector of pointers to facets.
Definition: tet_mesh.h:486
Definition: tet_mesh.h:50
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237

References f(), and sqrt().


The documentation for this class was generated from the following file: