IOSS 2.0

Iogn_GeneratedMesh.h
Go to the documentation of this file.
1 // Copyright(C) 1999-2017 National Technology & Engineering Solutions
2 // of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
3 // NTESS, the U.S. Government retains certain rights in this software.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 //
12 // * Redistributions in binary form must reproduce the above
13 // copyright notice, this list of conditions and the following
14 // disclaimer in the documentation and/or other materials provided
15 // with the distribution.
16 //
17 // * Neither the name of NTESS nor the names of its
18 // contributors may be used to endorse or promote products derived
19 // from this software without specific prior written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
33 #ifndef IOSS_Iogn_GeneratedMesh_h
34 #define IOSS_Iogn_GeneratedMesh_h
35
36 #include <Ioss_CodeTypes.h>
37 #include <Ioss_EntityType.h> // for EntityType
38 #include <cstddef> // for size_t
39 #include <cstdint> // for int64_t
40 #include <map> // for map, etc
41 #include <string> // for string
42 #include <utility> // for pair
43 #include <vector> // for vector
44
45 namespace Iogn {
46 using MapVector = std::vector<int64_t>;
47
48 class GeneratedMesh
49 {
50 public:
51 enum ShellLocation { MX = 0, PX = 1, MY = 2, PY = 3, MZ = 4, PZ = 5 };
52
53 /**
54 Generate a cube mesh of size 'num_x' by 'num_y' by 'num_z' elements.
55 By default, the mesh is generated on a single processor. If 'proc_count' is
56 greater than 1, then the mesh will be distributed over 'proc_count' processors
57 and this process will get the portion of the mesh for 'my_proc'.
58 The mesh will be decomposed along the 'Z' axis so 'num_z' must be greater than
59 or equal to 'proc_count' and for even distribution of the hexes 'num_z' mod 'proc_count'
60 should be zero.
61
62 The mesh can optionally include shell elements along each face of the cube mesh.
63 These are specified via the 'add_shell_block' function.
64
65 The mesh can optionally include nodesets/sidesets along each
66 face of the cube mesh. These are specified via the
67 'add_nodesets' and 'add_sidesets' functions.
68
69 If the 'parameters' string constructor is used, the string
70 is parsed to determine the intervals in each direction and,
71 optionally, additional information. The form of the string
72 is "IxJxK" where I, J, and K are the number of intervals
73 in the X, Y, and Z directions respectively and the "x" are
74 literal 'x' characters. For example, the constructor
75 GeneratedMesh("10x12x14") will create the same mesh as
76 GeneratedMesh(10,12,14)
77
78 Additional valid options are:
79 - help -- no argument, shows valid options
80 - show -- no argument, prints out a summary of the
81 GeneratedMesh() parameters. The output will look similar
82 to:
83 \code
84 "10x12x8|shell:xX|bbox:-10,-10,-10,10,10,10|nodeset:xyz|sideset:XYZ|show"
85
86 Mesh Parameters:
87 Intervals: 10 by 12 by 8
88 X = 2 * (0..10) + -10 Range: -10 <= X <= 10
89 Y = 1.66667 * (0..12) + -10 Range: -10 <= Y <= 10
90 Z = 2.5 * (0..8) + -10 Range: -10 <= Z <= 10
91 Node Count (total) = 1287
92 Element Count (total) = 1152
93 Block Count = 3
94 Nodeset Count = 3
95 Sideset Count = 3
96 \endcode
97
98 - tets -- no argument - specifies that each hex should be
99 split into 6 tetrahedral elements. Cannot currently be used with
100 shells or sidesets.
101
102 - shell -- argument = xXyYzZ which specifies whether there is a shell
103 block at that location. 'x' is minimum x face, 'X' is maximum x face,
104 similarly for y and z. Note that the argument string is a single
105 multicharacter string. You can add multiple shell blocks to a face,
106 for example, shell:xxx would add three layered shell blocks on the
107 minimum x face. An error is output if a non xXyYzZ character is
108 found, but execution continues.
109
110 - nodeset -- argument = xXyYzZ which specifies whether there is
111 a nodeset at that location. 'x' is minimum x face, 'X' is
112 maximum x face, similarly for y and z. Note that the argument
113 string is a single multicharacter string. You can add multiple
114 nodesets to a face, for example, nodeset:xxx would add three
115 nodesets on the minimum x face. An error is output if a non
116 xXyYzZ character is found, but execution continues.
117
118 - sideset -- argument = xXyYzZ which specifies whether there is
119 a sideset at that location. 'x' is minimum x face, 'X' is
120 maximum x face, similarly for y and z. Note that the argument
121 string is a single multicharacter string. You can add multiple
122 sidesets to a face, for example, sideset:xxx would add three
123 sidesets on the minimum x face. An error is output if a non
124 xXyYzZ character is found, but execution continues. If there
125 is a shell block specified on that face, then the sideset will
126 be on the shell elements; else the sideset will be on the hex
127 elements.
128
129 - zdecomp -- argument = n0, n1, n2, ..., n#proc-1 which are the number
130 of intervals in the z direction for each processor in a pallel run.
131 If this option is specified, then the total number of intervals in the
132 z direction is the sum of the n0, n1, ... An interval count must be
133 specified for each processor. If this option is not specified, then
134 the number of intervals on each processor in the z direction is
135 numZ/numProc with the extras added to the lower numbered processors.
136
137 - scale -- argument = xs, ys, zs which are the scale factors in the x,
138 y, and z directions. All three must be specified if this option is
139 present.
140
141 - offset -- argument = xoff, yoff, zoff which are the offsets in the
142 x, y, and z directions. All three must be specified if this option
143 is present.
144
145 - bbox -- argument = xmin, ymin, zmin, xmax, ymax, zmax
146 which specify the lower left and upper right corners of
147 the bounding box for the generated mesh. This will
148 calculate the scale and offset which will fit the mesh in
149 the specified box. All calculations are based on the currently
150 active interval settings. If scale or offset or zdecomp
151 specified later in the option list, you may not get the
152 desired bounding box.
153
154 - rotate -- argument = axis,angle,axis,angle,...
155 where axis is 'x', 'y', or 'z' and angle is the rotation angle in
156 degrees. Multiple rotations are cumulative. The composite rotation
157 matrix is applied at the time the coordinates are retrieved after
158 scaling and offset are applied.
159
160 The unrotated coordinate of a node at grid location i,j,k is:
161 \code
162 x = x_scale * i + x_off,
163 y = z_scale * j + y_off,
164 z = z_scale * k + z_off,
165 \endcode
166
167 The extent of the unrotated mesh will be:
168 \code
169 x_off <= x <= x_scale * numX + x_off
170 y_off <= y <= y_scale * numY + y_off
171 z_off <= z <= z_scale * numZ + z_off
172 \endcode
173
174 If an unrecognized option is specified, an error message will be
175 output and execution will continue.
176
177 An example of valid input is:
178 \code
179 "10x20x40|scale:1,0.5,0.25|offset:-5,-5,-5|shell:xX"
180 \endcode
181
182 This would create a mesh with 10 intervals in x, 20 in y, 40 in z
183 The mesh would be centered on 0,0,0 with a range of 10 in each
184 direction. There would be a shell layer on the min and max
185 x faces.
186
187 NOTE: All options are processed in the order they appear in
188 the parameters string (except rotate which is applied at the
189 time the coordinates are generated/retrieved)
190 */
191 explicit GeneratedMesh(const std::string &parameters, int proc_count = 1, int my_proc = 0);
192 GeneratedMesh(int64_t num_x, int64_t num_y, int64_t num_z, int proc_count = 1, int my_proc = 0);
193 GeneratedMesh();
194 virtual ~GeneratedMesh();
195
196 /**
197 * Split each hexahedral element into 6 tetrahedral elements.
198 * Cannot currently be used with sidesets or shells.
199 */
200 void create_tets(bool yesno);
201
202 /**
203 * Add a shell block along the specified face of the hex mesh.
204 * The shell blocks will maintain the order of definition. The
205 * first shell block defined will be block 2; the hex block has id
206 * 1. The loc options are:
207 * - MX = add shell layer on the face with minimum X
208 * - PX = add shell layer on the face with maximum X
209 * - MY = add shell layer on the face with minimum Y
210 * - PY = add shell layer on the face with maximum Y
211 * - MZ = add shell layer on the face with minimum Z
212 * - PZ = add shell layer on the face with maximum Z
213 *
214 */
215 int64_t add_shell_block(ShellLocation loc);
216
217 /**
218 * Add a nodeset along the specified face of the hex mesh.
219 * The nodesets will maintain the order of definition. The
220 * first nodeset defined will be nodeset 1.
221 * The loc options are:
222 * - MX = add nodeset on the face with minimum X
223 * - PX = add nodeset on the face with maximum X
224 * - MY = add nodeset on the face with minimum Y
225 * - PY = add nodeset on the face with maximum Y
226 * - MZ = add nodeset on the face with minimum Z
227 * - PZ = add nodeset on the face with maximum Z
228 *
229 */
230 int64_t add_nodeset(ShellLocation loc);
231
232 /**
233 * Add a sideset along the specified face of the hex mesh.
234 * The sidesets will maintain the order of definition. The
235 * first sideset defined will be sideset 1. If there is a shell
236 * block specified on that face, then the sideset will be on the
237 * shell elements; otherwise the sideset will be on the hex
238 * elements.
239 * The loc options are:
240 * - MX = add sideset on the face with minimum X
241 * - PX = add sideset on the face with maximum X
242 * - MY = add sideset on the face with minimum Y
243 * - PY = add sideset on the face with maximum Y
244 * - MZ = add sideset on the face with minimum Z
245 * - PZ = add sideset on the face with maximum Z
246 *
247 */
248 int64_t add_sideset(ShellLocation loc);
249
250 /**
251 * Specify the coordinate scaling and offset in all three
252 * spatial dimensions.
253 *
254 * node location of node at (i,j,k) is
255 * \code
256 * X = scale X * i + offset X
257 * Y = scale Y * i + offset Y
258 * Z = scale Z * i + offset Z
259 * \endcode
260 *
261 * WARNING: Should be called before retrieving node
262 * coordinates.
263 */
264 void set_scale(double scl_x, double scl_y, double scl_z);
265 void set_offset(double off_x, double off_y, double off_z);
266 void set_bbox(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax);
267
268 /**
269 * Set rotation. Multiple calls are cumulative.
270 * Rotate 'angle_degrees' degrees about the axis 'axis'
271 * Center of rotation is about the origin and operates
272 * on the scaled/offset coordinates of the mesh.
273 */
274 void set_rotation(const std::string &axis, double angle_degrees);
275
276 /**
277 * Return number of nodes in the entire model.
278 */
279 virtual int64_t node_count() const;
280
281 /**
282 * Return number of nodes on this processor.
283 */
284 virtual int64_t node_count_proc() const;
285
286 /**
287 * Return number of element blocks in the entire model.
288 */
289 virtual int64_t block_count() const;
290
291 /**
292 * Return number of nodesets in the entire model.
293 */
294 virtual int64_t nodeset_count() const;
295
296 /**
297 * Return number of nodeset nodes on nodeset 'id'
298 */
299 int64_t nodeset_node_count(int64_t id) const;
300
301 /**
302 * Return number of nodeset nodes on nodeset 'id' on the current processor
303 */
304 virtual int64_t nodeset_node_count_proc(int64_t id) const;
305
306 /**
307 * Return number of sidesets in the entire model.
308 */
309 virtual int64_t sideset_count() const;
310
311 /**
312 * Return number of sideset 'sides' on sideset 'id'
313 */
314 int64_t sideset_side_count(int64_t id) const;
315
316 /**
317 * Return number of sideset 'sides' on sideset 'id' on the current
318 * processor.
319 */
320 virtual int64_t sideset_side_count_proc(int64_t id) const;
321
322 /**
323 * Return number of elements in all element blocks in the model.
324 */
325 virtual int64_t element_count() const;
326
327 /**
328 * Return number of shell elements in all element blocks in the model.
329 */
330 int64_t shell_element_count(ShellLocation /*loc*/) const;
331
332 /**
333 * Return number of elements in all element blocks on this processor.
334 */
335 virtual int64_t element_count_proc() const;
336
337 /**
338 * Return number of shell elements in all element blocks on this processor.
339 */
340 int64_t shell_element_count_proc(ShellLocation /*loc*/) const;
341
342 int64_t timestep_count() const { return timestepCount; }
343 /**
344 * Return number of elements in the element block with id
345 * 'block_number'. The 'block_number' ranges from '1' to
346 * 'block_count()'.
347 */
348 virtual int64_t element_count(int64_t block_number) const;
349
350 /**
351 * Return number of elements on this processor in the element
352 * block with id 'block_number'. The 'block_number' ranges from
353 * '1' to 'block_count()'.
354 */
355 virtual int64_t element_count_proc(int64_t block_number) const;
356
357 /**
358 * Returns pair containing "topology type string" and "number of
359 * nodes / element". The topology type string will be "hex8" for
360 * the hex element block and "shell4" for the shell element blocks.
361 */
362 virtual std::pair<std::string, int> topology_type(int64_t block_number) const;
363
364 void build_node_map(Ioss::Int64Vector &map, std::vector<int> &proc, int64_t slab,
365 size_t slabOffset, size_t adjacentProc, size_t index);
366 virtual int64_t communication_node_count_proc() const;
367 virtual void node_communication_map(MapVector &map, std::vector<int> &proc);
368 virtual void owning_processor(int *owner, int64_t num_node);
369
370 /**
371 * Fill the passed in 'map' argument with the node map
372 * "map[local_position] = global_id" for the nodes on this
373 * processor.
374 */
375 virtual void node_map(MapVector &map) const;
376 virtual void node_map(Ioss::IntVector &map) const;
377
378 /**
379 * Fill the passed in 'map' argument with the element map
380 * "map[local_position] = global_id" for the elements on this
381 * processor in block "block_number".
382 */
383 virtual void element_map(int64_t block_number, MapVector &map) const;
384 virtual void element_map(int64_t block_number, Ioss::IntVector &map) const;
385
386 /**
387 * Fill the passed in 'map' argument with the element map
388 * "map[local_position] = global_id" for all elements on this
389 * processor
390 */
391 virtual void element_map(MapVector &map) const;
392 virtual void element_map(Ioss::IntVector &map) const;
393
394 /**
395 * Fill the passed in 'map' argument with the element map pair
396 * "map[local_position] = element global_id" and
397 * "map[local_position+1] = element local face id (0-based)" for
398 * all elements on the current processor having a face on the
399 * surface defined by ShellLocation.
400 */
401 void element_surface_map(ShellLocation loc, MapVector &map) const;
402
403 /**
404 * Return the connectivity for the elements on this processor in
405 * the block with id 'block_number'. If the elements in this block
406 * have 'npe' nodes per element, then the first 'npe' entries in
407 * the 'conn' vector will be the nodal connectivity for the first
408 * element; the next 'npe' entries are the nodal connectivity for
409 * the second element. The 'connect' vector will be resized to the
410 * size required to contain the nodal connectivity for the
411 * specified block; all information in 'connect' will be overwritten.
412 */
413 void connectivity(int64_t block_number, Ioss::Int64Vector &connect) const;
414 void connectivity(int64_t block_number, Ioss::IntVector &connect) const;
415 void connectivity(int64_t block_number, int64_t *connect) const;
416 virtual void connectivity(int64_t block_number, int *connect) const;
417
418 /**
419 * Return the coordinates for all nodes on this processor. The
420 * first 3 entries in the 'coord' vector are the x, y, and z
421 * coordinates of the first node, etc. The 'coord' vector will be
422 * resized to the size required to contain the nodal coordinates;
423 * all information in 'coord' will be overwritten.
424 */
425 virtual void coordinates(std::vector<double> &coord) const;
426 virtual void coordinates(double *coord) const;
427
428 /**
429 * Return the coordinates for all nodes on this processor in
430 * separate vectors. The vectors will be resized to the size
431 * required to contain the nodal coordinates; all information in
432 * the vectors will be overwritten.
433 */
434 virtual void coordinates(std::vector<double> &x, std::vector<double> &y,
435 std::vector<double> &z) const;
436
437 /**
438 * Return the coordinates for componenet 'comp' (1=x, 2=y, 3=z)
439 * for all nodes on this processor. The
440 * vector will be resized to the size required to contain the
441 * nodal coordinates; all information in the vector will be
442 * overwritten.
443 * It is an error to request the coordinates via this function
444 * if a rotation is defined.
445 */
446 virtual void coordinates(int component, std::vector<double> &xyz) const;
447
448 /**
449 * Return the list of nodes in nodeset 'id' on this processor.
450 * The 'nodes' vector will be resized to the size required to
451 * contain the node list. The ids are global ids.
452 */
453 virtual void nodeset_nodes(int64_t id, Ioss::Int64Vector &nodes) const;
454
455 /**
456 * Return the list of the face/ordinal pairs
457 * "elem_sides[local_position] = element global_id" and
458 * "elem_sides[local_position+1] = element local face id (0-based)"
459 * for the faces in sideset 'id' on this
460 * processor. The 'elem_sides' vector will be resized to the size
461 * required to contain the list. The element ids are global ids,
462 * the side ordinal is 0-based.
463 */
464 virtual void sideset_elem_sides(int64_t id, Ioss::Int64Vector &elem_sides) const;
465
466 virtual std::vector<std::string> sideset_touching_blocks(int64_t set_id) const;
467
468 int64_t get_num_x() const { return numX; }
469 int64_t get_num_y() const { return numY; }
470 int64_t get_num_z() const { return numZ; }
471
472 size_t get_variable_count(Ioss::EntityType type) const
473 {
474 return variableCount.find(type) != variableCount.end() ? variableCount.find(type)->second : 0;
475 }
476
477 private:
478 template <typename INT> void raw_element_map(int64_t block_number, std::vector<INT> &map) const;
479 template <typename INT> void raw_element_map(std::vector<INT> &map) const;
480 template <typename INT> void raw_connectivity(int64_t block_number, INT *connect) const;
481
482 GeneratedMesh(const GeneratedMesh &);
483 GeneratedMesh &operator=(const GeneratedMesh &);
484
485 void set_variable_count(const std::string &type, size_t count);
486 void parse_options(const std::vector<std::string> &groups);
487 void show_parameters() const;
488 void initialize();
489
490 std::vector<ShellLocation> shellBlocks;
491 std::vector<ShellLocation> nodesets;
492 std::vector<ShellLocation> sidesets;
493 double rotmat[3][3];
494 size_t numX, numY, numZ;
495 size_t myNumZ, myStartZ;
496
497 size_t processorCount;
498 size_t myProcessor;
499
500 size_t timestepCount;
501 std::map<Ioss::EntityType, size_t> variableCount;
502
503 double offX, offY, offZ; /** Offsets in X, Y, and Z directions */
504 double sclX, sclY, sclZ; /** Scale in X, Y, and Z directions
505 * location of node at (i,j,k)
506 * position is (sclX*i+offX,
507 * sclY*i+offY, sclZ*i+offZ) */
508 bool doRotation;
509 bool createTets;
510 };
511 } // namespace Iogn
512 #endif
Iogn::GeneratedMesh::sideset_side_count
int64_t sideset_side_count(int64_t id) const
Definition: Iogn_GeneratedMesh.C:555
Ioss_CodeTypes.h
Iogn::GeneratedMesh::get_num_y
int64_t get_num_y() const
Definition: Iogn_GeneratedMesh.h:469
Iogn::GeneratedMesh::sclY
double sclY
Definition: Iogn_GeneratedMesh.h:504
Iogn::GeneratedMesh::PX
Definition: Iogn_GeneratedMesh.h:51
Iogn::GeneratedMesh::sidesets
std::vector< ShellLocation > sidesets
Definition: Iogn_GeneratedMesh.h:492
Iogn::GeneratedMesh::parse_options
void parse_options(const std::vector< std::string > &groups)
Definition: Iogn_GeneratedMesh.C:220
Iogn::GeneratedMesh::raw_element_map
void raw_element_map(int64_t block_number, std::vector< INT > &map) const
Definition: Iogn_GeneratedMesh.C:700
Iogn::GeneratedMesh::coordinates
virtual void coordinates(std::vector< double > &coord) const
Definition: Iogn_GeneratedMesh.C:956
Iogn::GeneratedMesh::node_count_proc
virtual int64_t node_count_proc() const
Definition: Iogn_GeneratedMesh.C:421
Iogn::GeneratedMesh::variableCount
std::map< Ioss::EntityType, size_t > variableCount
Definition: Iogn_GeneratedMesh.h:501
Iogn::GeneratedMesh::add_nodeset
int64_t add_nodeset(ShellLocation loc)
Definition: Iogn_GeneratedMesh.C:165
Iogn::GeneratedMesh::block_count
virtual int64_t block_count() const
Definition: Iogn_GeneratedMesh.C:423
Iogn::GeneratedMesh::operator=
GeneratedMesh & operator=(const GeneratedMesh &)
Iogn::GeneratedMesh::node_communication_map
virtual void node_communication_map(MapVector &map, std::vector< int > &proc)
Definition: Iogn_GeneratedMesh.C:666
Iogn::GeneratedMesh::sclX
double sclX
Definition: Iogn_GeneratedMesh.h:504
Iogn::GeneratedMesh::numY
size_t numY
Definition: Iogn_GeneratedMesh.h:494
Iogn::GeneratedMesh::myNumZ
size_t myNumZ
Definition: Iogn_GeneratedMesh.h:495
Iogn::GeneratedMesh::communication_node_count_proc
virtual int64_t communication_node_count_proc() const
Definition: Iogn_GeneratedMesh.C:632
Iogn::GeneratedMesh::MY
Definition: Iogn_GeneratedMesh.h:51
Ioss::IntVector
std::vector< int > IntVector
Definition: Ioss_CodeTypes.h:42
Iogn::GeneratedMesh::element_surface_map
void element_surface_map(ShellLocation loc, MapVector &map) const
Definition: Iogn_GeneratedMesh.C:791
Iogn::GeneratedMesh::add_shell_block
int64_t add_shell_block(ShellLocation loc)
Definition: Iogn_GeneratedMesh.C:159
Iogn::GeneratedMesh::timestep_count
int64_t timestep_count() const
Definition: Iogn_GeneratedMesh.h:342
Iogn::GeneratedMesh::add_sideset
int64_t add_sideset(ShellLocation loc)
Definition: Iogn_GeneratedMesh.C:171
Iogn::GeneratedMesh::MX
Definition: Iogn_GeneratedMesh.h:51
Iogn::GeneratedMesh::shellBlocks
std::vector< ShellLocation > shellBlocks
Definition: Iogn_GeneratedMesh.h:490
Iogn::GeneratedMesh::numZ
size_t numZ
Definition: Iogn_GeneratedMesh.h:494
Iogn::GeneratedMesh::build_node_map
void build_node_map(Ioss::Int64Vector &map, std::vector< int > &proc, int64_t slab, size_t slabOffset, size_t adjacentProc, size_t index)
Definition: Iogn_GeneratedMesh.C:656
Iogn::GeneratedMesh::myProcessor
size_t myProcessor
Definition: Iogn_GeneratedMesh.h:498
Iogn::GeneratedMesh::nodeset_count
virtual int64_t nodeset_count() const
Definition: Iogn_GeneratedMesh.C:425
Iogn::GeneratedMesh::myStartZ
size_t myStartZ
Definition: Iogn_GeneratedMesh.h:495
Iogn::GeneratedMesh
Definition: Iogn_GeneratedMesh.h:48
Ioex::set_id
bool set_id(const Ioss::GroupingEntity *entity, ex_entity_type type, Ioex::EntityIdSet *idset)
Definition: Ioex_Utils.C:271
Iogn::GeneratedMesh::node_count
virtual int64_t node_count() const
Definition: Iogn_GeneratedMesh.C:419
Iogn::GeneratedMesh::set_rotation
void set_rotation(const std::string &axis, double angle_degrees)
Definition: Iogn_GeneratedMesh.C:1497
Iogn::GeneratedMesh::set_offset
void set_offset(double off_x, double off_y, double off_z)
Definition: Iogn_GeneratedMesh.C:213
Iogn::GeneratedMesh::offZ
double offZ
Definition: Iogn_GeneratedMesh.h:503
Iogn::GeneratedMesh::element_map
virtual void element_map(int64_t block_number, MapVector &map) const
Definition: Iogn_GeneratedMesh.C:689
Iogn::GeneratedMesh::show_parameters
void show_parameters() const
Definition: Iogn_GeneratedMesh.C:389
Iogn::GeneratedMesh::connectivity
void connectivity(int64_t block_number, Ioss::Int64Vector &connect) const
Definition: Iogn_GeneratedMesh.C:1060
Iogn::GeneratedMesh::get_num_x
int64_t get_num_x() const
Definition: Iogn_GeneratedMesh.h:468
Iogn::GeneratedMesh::shell_element_count_proc
int64_t shell_element_count_proc(ShellLocation) const
Definition: Iogn_GeneratedMesh.C:485
Iogn::GeneratedMesh::GeneratedMesh
GeneratedMesh()
Definition: Iogn_GeneratedMesh.C:92
Iogn
A namespace for the generated database format.
Definition: Iogn_DashSurfaceMesh.C:38
Iogn::GeneratedMesh::createTets
bool createTets
Definition: Iogn_GeneratedMesh.h:509
Iogn::GeneratedMesh::element_count_proc
virtual int64_t element_count_proc() const
Definition: Iogn_GeneratedMesh.C:438
Iogn::GeneratedMesh::nodeset_node_count_proc
virtual int64_t nodeset_node_count_proc(int64_t id) const
Definition: Iogn_GeneratedMesh.C:527
Iogn::GeneratedMesh::node_map
virtual void node_map(MapVector &map) const
Definition: Iogn_GeneratedMesh.C:618
Ioss::Int64Vector
std::vector< int64_t > Int64Vector
Definition: Ioss_CodeTypes.h:43
Iogn::GeneratedMesh::processorCount
size_t processorCount
Definition: Iogn_GeneratedMesh.h:497
Iogn::GeneratedMesh::nodesets
std::vector< ShellLocation > nodesets
Definition: Iogn_GeneratedMesh.h:491
Iogn::GeneratedMesh::offY
double offY
Definition: Iogn_GeneratedMesh.h:503
Iogn::GeneratedMesh::set_bbox
void set_bbox(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
Definition: Iogn_GeneratedMesh.C:177
Iogn::GeneratedMesh::PY
Definition: Iogn_GeneratedMesh.h:51
Iogn::GeneratedMesh::get_num_z
int64_t get_num_z() const
Definition: Iogn_GeneratedMesh.h:470
INT
int INT
Definition: Ioss_StructuredBlock.h:53
Iogn::GeneratedMesh::MZ
Definition: Iogn_GeneratedMesh.h:51
Iogn::GeneratedMesh::topology_type
virtual std::pair< std::string, int > topology_type(int64_t block_number) const
Definition: Iogn_GeneratedMesh.C:601
Iogn::GeneratedMesh::doRotation
bool doRotation
Definition: Iogn_GeneratedMesh.h:508
Iogn::GeneratedMesh::initialize
void initialize()
Definition: Iogn_GeneratedMesh.C:102
Iogn::GeneratedMesh::get_variable_count
size_t get_variable_count(Ioss::EntityType type) const
Definition: Iogn_GeneratedMesh.h:472
Iogn::GeneratedMesh::nodeset_node_count
int64_t nodeset_node_count(int64_t id) const
Definition: Iogn_GeneratedMesh.C:511
Iogn::GeneratedMesh::sideset_elem_sides
virtual void sideset_elem_sides(int64_t id, Ioss::Int64Vector &elem_sides) const
Definition: Iogn_GeneratedMesh.C:1428
Iogn::GeneratedMesh::set_variable_count
void set_variable_count(const std::string &type, size_t count)
Definition: Iogn_GeneratedMesh.C:1473
Iogn::GeneratedMesh::sideset_count
virtual int64_t sideset_count() const
Definition: Iogn_GeneratedMesh.C:427
Iogn::GeneratedMesh::shell_element_count
int64_t shell_element_count(ShellLocation) const
Definition: Iogn_GeneratedMesh.C:459
Iogn::GeneratedMesh::timestepCount
size_t timestepCount
Definition: Iogn_GeneratedMesh.h:500
Iogn::GeneratedMesh::set_scale
void set_scale(double scl_x, double scl_y, double scl_z)
Definition: Iogn_GeneratedMesh.C:206
Iogn::GeneratedMesh::owning_processor
virtual void owning_processor(int *owner, int64_t num_node)
Definition: Iogn_GeneratedMesh.C:642
Iogn::GeneratedMesh::ShellLocation
ShellLocation
Definition: Iogn_GeneratedMesh.h:51
Iogn::GeneratedMesh::raw_connectivity
void raw_connectivity(int64_t block_number, INT *connect) const
Definition: Iogn_GeneratedMesh.C:1097
Iogn::GeneratedMesh::numX
size_t numX
Definition: Iogn_GeneratedMesh.h:494
Iogn::GeneratedMesh::nodeset_nodes
virtual void nodeset_nodes(int64_t id, Ioss::Int64Vector &nodes) const
Definition: Iogn_GeneratedMesh.C:1367
Iogn::GeneratedMesh::sideset_side_count_proc
virtual int64_t sideset_side_count_proc(int64_t id) const
Definition: Iogn_GeneratedMesh.C:572
Iogn::GeneratedMesh::element_count
virtual int64_t element_count() const
Definition: Iogn_GeneratedMesh.C:429
Ioss::EntityType
EntityType
The particular type of GroupingEntity.
Definition: Ioss_EntityType.h:39
Iogn::GeneratedMesh::offX
double offX
Definition: Iogn_GeneratedMesh.h:503
Iogn::GeneratedMesh::PZ
Definition: Iogn_GeneratedMesh.h:51
Iogn::GeneratedMesh::sideset_touching_blocks
virtual std::vector< std::string > sideset_touching_blocks(int64_t set_id) const
Definition: Iogn_GeneratedMesh.C:1467
Iogn::GeneratedMesh::rotmat
double rotmat[3][3]
Definition: Iogn_GeneratedMesh.h:493
Iogn::GeneratedMesh::sclZ
double sclZ
Definition: Iogn_GeneratedMesh.h:504
Ioss_EntityType.h
Iogn::MapVector
std::vector< int64_t > MapVector
Definition: Iogn_GeneratedMesh.h:46
Iogn::GeneratedMesh::create_tets
void create_tets(bool yesno)
Definition: Iogn_GeneratedMesh.C:157
Iogn::GeneratedMesh::~GeneratedMesh
virtual ~GeneratedMesh()