Sierra Toolkit  Version of the Day
GeneratedMesh.hpp
1 /*------------------------------------------------------------------------*/
2 /* Copyright 2010 Sandia Corporation. */
3 /* Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive */
4 /* license for use of this work by or on behalf of the U.S. Government. */
5 /* Export of this program may require a license from the */
6 /* United States Government. */
7 /*------------------------------------------------------------------------*/
8 
9 #ifndef STK_IO_UTIL_GENERATEDMESH_HPP
10 #define STK_IO_UTIL_GENERATEDMESH_HPP
11 #include <string>
12 #include <vector>
13 
14 namespace stk_classic {
15  namespace io {
16  namespace util {
17  class GeneratedMesh
18  {
19  public:
20  enum ShellLocation {MX = 0, PX = 1,
21  MY = 2, PY = 3,
22  MZ = 4, PZ = 5};
23 
158  explicit GeneratedMesh(const std::string &parameters, int proc_count = 1, int my_proc = 0);
159  GeneratedMesh(int num_x, int num_y, int num_z, int proc_count = 1, int my_proc = 0);
160  ~GeneratedMesh();
161 
175  size_t add_shell_block(ShellLocation loc);
176 
190  size_t add_nodeset(ShellLocation loc);
191 
208  size_t add_sideset(ShellLocation loc);
209 
224  void set_scale(double scl_x, double scl_y, double scl_z);
225  void set_offset(double off_x, double off_y, double off_z);
226  void set_bbox(double xmin, double ymin, double zmin,
227  double xmax, double ymax, double zmax);
228 
235  void set_rotation(const std::string &axis, double angle_degrees);
236 
240  size_t node_count() const;
241 
245  size_t node_count_proc() const;
246 
250  size_t block_count() const;
251 
255  size_t nodeset_count() const;
256 
260  size_t nodeset_node_count(size_t id) const;
261 
265  size_t nodeset_node_count_proc(size_t id) const;
266 
270  size_t sideset_count() const;
271 
275  size_t sideset_side_count(size_t id) const;
276 
281  size_t sideset_side_count_proc(size_t id) const;
282 
286  size_t element_count() const;
287 
291  size_t shell_element_count(ShellLocation) const;
292 
296  size_t element_count_proc() const;
297 
301  size_t shell_element_count_proc(ShellLocation) const;
302 
308  size_t element_count(size_t block_number) const;
309 
315  size_t element_count_proc(size_t block_number) const;
316 
322  std::pair<std::string, int> topology_type(size_t block_number) const;
323 
324  size_t communication_node_count_proc() const;
325  void node_communication_map(std::vector<int> &map, std::vector<int> &proc);
326 
332  void node_map(std::vector<int> &map);
333 
339  void element_map(size_t block_number, std::vector<int> &map) const;
340 
346  void element_map(std::vector<int> &map) const;
347 
355  void element_surface_map(ShellLocation loc, std::vector<int> &map) const;
356 
367  void connectivity(size_t block_number, std::vector<int> &connect) const;
368 
376  void coordinates(std::vector<double> &coord) const;
377 
384  void coordinates(std::vector<double> &x,
385  std::vector<double> &y,
386  std::vector<double> &z) const;
387 
393  void nodeset_nodes(size_t nset_id, std::vector<int> &nodes) const;
394 
404  void sideset_elem_sides(size_t nset_id, std::vector<int> &elem_sides) const;
405 
406  private:
407 
408  GeneratedMesh( const GeneratedMesh & );
409  GeneratedMesh & operator = ( const GeneratedMesh & );
410 
411  void parse_options(const std::vector<std::string> &groups);
412  void show_parameters() const;
413  void initialize();
414 
415  std::vector<ShellLocation> shellBlocks;
416  std::vector<ShellLocation> nodesets;
417  std::vector<ShellLocation> sidesets;
418  double rotmat[3][3];
419  size_t numX, numY, numZ;
420  size_t myNumZ, myStartZ;
421 
422  size_t processorCount;
423  size_t myProcessor;
424 
425  double offX, offY, offZ;
426  double sclX, sclY, sclZ;
430  bool doRotation;
431  };
432  }
433  }
434 }
435 #endif
Sierra Toolkit.