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