Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GEM.H
Go to the documentation of this file.
1 /* *******************************************************************
2  * Rocstar Simulation Suite *
3  * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4  * *
5  * Illinois Rocstar LLC *
6  * Champaign, IL *
7  * www.illinoisrocstar.com *
8  * sales@illinoisrocstar.com *
9  * *
10  * License: See LICENSE file in top level of distribution package or *
11  * http://opensource.org/licenses/NCSA *
12  *********************************************************************/
13 /* *******************************************************************
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17  * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21  * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22  *********************************************************************/
23 #ifndef _GEM_H_
24 #define _GEM_H_
25 //#ifdef _ROCSTAR_X_
26 //#include "roccom.h"
27 //#endif
28 #include "mpi.h"
29 // ============================================================================
30 // Generic Interface Mesh Header
31 //
32 // The aim is to provide a simple mesh structure which should be easily
33 // populated from a number of working mesh representations. We will write
34 // translators to/from this simple/generic mesh representation to Rocstar
35 // and other solver/code native mesh representations.
36 //=============================================================================
37 //
38 // Not yet used, but will be needed for quadratic elements
39 class GEM_Connectivity : public std::vector<unsigned int>
40 {
41 public:
42  unsigned int _esize;
43  GEM_Connectivity(const std::vector<unsigned int> &v)
44  : std::vector<unsigned int>(v)
45  {
46  _esize = 0;
47  };
48 };
49 
50 template<class T>
51 class GEM_DataItem : public std::vector<T>
52 {
53 protected:
54  std::string _name;
55  int _stride;
56 public:
57  const std::string &Name() const { return(_name); };
58  std::string &Name() {return(_name);};
59  std::string &Name(const std::string &name) { return(_name.assign(name));};
60  int Stride() const { return(_stride); };
61  int Stride(int stride) { return(_stride = stride); };
62  int &Stride() { return(_stride); };
63  GEM_DataItem<T>(const std::string &name="",unsigned int size=0)
64  : std::vector<T>(size)
65  {
66  _name.assign(name);
67  _stride = 1;
68  };
69  GEM_DataItem<T>(const std::string &name,unsigned int size,const T &val)
70  : std::vector<T>(size,val)
71  {
72  _name.assign(name);
73  _stride = 1;
74  };
75  GEM_DataItem<T>(const std::vector<T> &vec,const std::string &name="",
76  int stride = 1)
77  : std::vector<T>(vec)
78  {
79  _name.assign(name);
80  _stride = stride;
81  };
82 };
83 
84 // To store field and integer data
86 {
87 public:
88  // Name of the dataset. This data is used to identify
89  // the window name in the case of Rocstar.
90  std::string _name;
91  // Example _field_data[0] = vector<double> of all elemental data
92  // _field_data[1] = vector<double> of all nodal data
93  // _field_data[2] = vector<double> of all facial data
94  std::vector< GEM_DataItem<double> > _double_items;
95  std::vector< std::vector<double> > _field_data;
96 
97  // Some codes have integer values that need to be associated with
98  // cells and nodes.
99  std::vector< GEM_DataItem<int> > _int_items;
100  std::vector< std::vector<int> > _int_data;
101 
102  // Specifies the strides of the field and integer data
103  std::vector<int> _stride_field;
104  std::vector<int> _stride_int;
105  std::vector<std::string> _string_data;
106  std::vector< GEM_DataItem<std::string> > _string_items;
108  {
109  _double_items.resize(0);
110  _field_data.resize(0);
111  _int_items.resize(0);
112  _int_data.resize(0);
113  _stride_field.resize(0);
114  _stride_int.resize(0);
115  _string_data.resize(0);
116  _string_items.resize(0);
117  };
118 };
119 
120 //
121 // DomainBoundary = the physical boundary of the computational domain
122 // This structure describes the piece of the DomainBoundary that might exist
123 // on a given partition.
124 //
126 public:
127  unsigned int _id; // User data - but usually used to indicate unique BC
128  unsigned int _ngtri; // Number of ghost triangles
129  unsigned int _ngquad; // Number of ghost quads
130  unsigned int _nnodes;
131  std::vector<unsigned int> _triconn; // Triangle connectivity
132  std::vector<unsigned int> _quadconn; // Quad connectivity
133  std::vector<double> surface_coordinates;
134  unsigned int surface_ngnodes;
135  std::vector<unsigned int> surface_tri;
136  std::vector<unsigned int> surface_quad;
139  bool _debug;
140  std::ostream *_out;
141  unsigned int NNodes(void);
142  bool SetSolverDataBlock(const std::string &wname,
143  double *cell_data,
144  int nval_cells,
145  double *node_data,int nval_nodes);
146  // Rocflu Functions
147  // bool InitFluSurfaceSoln(const string &prefix="",bool all = true);
148  // bool RegisterFluSoln(const string &wname,bool all = true);
149  //#ifdef _ROCSTAR_X_
150  int pane_id;
151  //#endif
153  {
154  _id = db._id;
155  _out = db._out;
156  _ngtri = db._ngtri;
157  _ngquad = db._ngquad;
158  _triconn = db._triconn;
159  _quadconn = db._quadconn;
160  _debug = db._debug;
161  _data = db._data;
162  _nnodes = db._nnodes;
163  };
165  {
166  _id = 0;
167  _out = NULL;
168  _ngtri = 0;
169  _ngquad = 0;
170  _triconn.resize(0);
171  _quadconn.resize(0);
172  _nnodes = 0;
173  // _data.resize(0);
174  _debug = false;
175  surface_coordinates.resize(0);
176  };
178  {
179  _id = db._id;
180  _out = db._out;
181  _ngtri = db._ngtri;
182  _ngquad = db._ngquad;
183  _triconn = db._triconn;
184  _quadconn = db._quadconn;
185  _data = db._data;
186  _debug = db._debug;
187  _nnodes = db._nnodes;
191  return(*this);
192  };
193  bool debug(bool s = true)
194  {
195  _debug = s;
196  return(_debug);
197  };
198  void report();
199  // Creates a nodal coordinate array [x y z x y z...] with ghosts
200  // at the end and connectivity arrays that refer to the new nc.
201  // This is just a convenience function to build those surface local arrays
202  // that are required by Roccom.
203  void PopulateSurfaceArrays(const std::vector<double> &,unsigned int);
204  //#ifdef _ROCSTAR_X_
205  bool Register_com_surfmesh(const std::string &wname);
206  void Create_com_surfsoln(const std::string &wname,const std::string &fname,
207  std::vector<double> &fvec, unsigned int ncomp,
208  const std::string &unit);
209  //#endif
210 };
211 
212 //
213 // PartitionBoundary = non physical boundary introduced by domain partitioning.
214 // This structure describes a boundary for which information must be exchanged
215 // with a neighboring partition.
216 //
217 // Notes:
218 // The _sendcells and _recvcells refer to a partition cell mapping following
219 // the convention of GEM_Partition::_cell_ordering[].
220 //
221 // It is up to the user to make sure that the ordering appears here matches
222 // that of the sending and receiving partitions.
223 //
225 public:
226  unsigned int _rpart; // Remote partition id (1 based)
227  std::vector<unsigned int> _sendcells; // Real Cells associated with this PB
228  std::vector<unsigned int> _recvcells; // Ghost Cells associated with this PB
229  std::vector<unsigned int> _sendnodes; // Real nodes associated with this PB
230  std::vector<unsigned int> _recvnodes; // Ghost nodes associated with this PB
231  std::vector<unsigned int> _sharenodes; // Nodes *on* the PB
233  std::ostream *_out;
234  bool _debug;
235  void report();
236  void populate(int rpid, int nnshared,int nnsend,int nnrecv,
237  int ncsend,int ncrecv, int *sharedn, int *sendn,
238  int *recvn, int *sendc,int *recvc);
240  {
241  _rpart = pb._rpart;
242  _out = pb._out;
243  _sendcells = pb._sendcells;
244  _recvcells = pb._recvcells;
245  _sendnodes = pb._sendnodes;
246  _recvnodes = pb._recvnodes;
248  _data = pb._data;
249  };
251  {
252  _rpart = 0;
253  _out = NULL;
254  _sendcells.resize(0);
255  _sendnodes.resize(0);
256  _recvnodes.resize(0);
257  _recvcells.resize(0);
258  _sharenodes.resize(0);
259  // _data.resize(0);
260  };
262  {
263  _rpart = pb._rpart;
264  _out = pb._out;
265  _sendcells = pb._sendcells;
266  _recvcells = pb._recvcells;
267  _sendnodes = pb._sendnodes;
268  _recvnodes = pb._recvnodes;
270  _data = pb._data;
271  return(*this);
272  };
273 };
274 
275 
276 //
277 // Partition = A part of a mesh representation of some computational domain
278 // This structure completely describes a partition and provides the translator
279 // functionality. The design choice was to make the translator functions
280 // member functions of this class (for now).
281 //
283 public:
284  unsigned int _id; // Unique id (should be 1 based)
285  unsigned int _npart; // Total number of partitions
286  unsigned int _ngnodes; // Number of ghost nodes
287  unsigned int _ngtet; // Number of ghost tets
288  unsigned int _nghex; // Number of ghost hex
289  unsigned int _ngpyr; // Number of ghost pyr
290  unsigned int _ngpris; // Number of ghost pris
291  unsigned int _nvface; // Number volume faces (r-r,r-g)
292  // Nodal Coordinates [x y z x y z...]
293  std::vector<double> _nc;
294  // Tet connectivity [1 2 3 4 1 2 ...]
295  std::vector<unsigned int> _tetconn;
296  // Pyr conn [1 2 3 4 5 1 2 3 ...]
297  std::vector<unsigned int> _pyrconn;
298  // Pris conn[1 2 3 4 5 6 1 2 3 ...]
299  std::vector<unsigned int> _prisconn;
300  // Hex conn[1 2 3 4 5 6 7 8 1 2 3 ..]
301  std::vector<unsigned int> _hexconn;
302  // 1234=tet,pyr,pris,hex
303  unsigned int _cell_ordering[4];
304  std::vector<GEM_PartitionBoundary> _pb;
305  std::vector<GEM_DomainBoundary> _db;
306  GEM_UserData _data; // any volume solution data
307  GEM_UserData _solver_data; // solver specific data
308  std::ostream *_out;
309  // vector<std::pair<unsigned int,unsigned int> > _cellmap;
310  bool _debug;
311  //#ifdef _TRAIL_MPI_
312  MPI_Comm _comm;
313  //#endif
314  //#ifdef _ROCSTAR_X_
315  int pane_id;
316  std::vector<int> pconn;
317  unsigned int pconn_nghost;
318  std::string volume_window;
319  std::string surface_window;
320  //#endif
321  // Functions for Rocflu
322  // bool ReadFluControlFile();
323  // bool WriteFluNative();
324  // bool WriteFluCOM(const string &pre = "");
325  // bool WriteFluDIM(const string &pre = "",double t=0,bool unsteady=true);
326  // bool WriteFluCMP(const string &pre = "");
327  // bool ReadFluCOM(const string &pre = "");
328  // bool WriteFluMAP(const string &pre = "",unsigned int nproc = 1,
329  // unsigned int nreg = 1);
330  // bool ReadFluDIM(const string &prefix,double t,bool unsteady);
331  // bool PopRemBordIndFILE(const string &p="",double=0.0,bool=true);
332  // bool InitFluVolumeSoln(const string &prefix = "");
333  // bool InitFluSurfaceSoln(const string &prefix = "");
334  // bool BuildFluPatchMapping(map<unsigned int,unsigned int> &,
335  // const string &p="");
336  // bool RegisterFluVolumeSoln(bool all = true);
337  // bool RegisterFluSurfaceSoln(bool all = true);
338  // bool RegisterFluSurfaceMesh();
339  // bool PopulateFluPatches(const string &pre,vector<GEM_DomainBoundary> &db);
340  bool validate_comm_list(int ncsend,int ncrecv,int *csend,int *crecv);
341  bool ValidateMesh();
342  void AddParitionBoundary(int rpid,int nnshare, int nnsend,
343  int nnrecv,int ncsend,int ncrecv,
344  int *nshared,int *nsend,int *nrecv,
345  int *csend,int *crecv);
346 
347  void AddDomainBoundary(int db_id,int ntri, int ngtri, int *tris,
348  int nquad,int ngquad, int *quads);
349  bool SetSolverDataBlock(const std::string &wname,double *cell_data,
350  int nval_cells,double *node_data,
351  int nval_nodes);
352  bool AddSolverDataBlock(const std::string &wname,double *cell_data,
353  int nval_cells,double *node_data,
354  int nval_nodes);
355  bool debug(bool s = true);
357  void SetNodalCoordinates(double *data,int nn,int ng);
358  void SetVolumeElements(int *data,int ncells,int ng,int npe);
359  bool PopulatePartitionBoundaries(std::vector<GEM_PartitionBoundary> &pb);
360  void MapDomainBoundaries(std::map<unsigned int,unsigned int> &bcmap);
361  // Dumps a description of the partition to stdout
362  void report();
365  // Returns total number of elements
366  unsigned int nelem()
367  {
368  return(_tetconn.size()/4+_pyrconn.size()/5+
369  _prisconn.size()/6+_hexconn.size()/8);
370  };
371  // The following functions deal with codes that map their cells in some
372  // other order besides the default. The default cell mapping goes like:
373  // real tets : cells 1 - N
374  // real pyrs : cells N+1 - N'
375  // real pris : cells N'+1 - N''
376  // real hex : cells N''+1 - nreal_elem
377  // ghost tets : cells nreal_elem + 1 - M
378  // ghost pyrs : cells M+1 - M'
379  // ghost pris : cells M'+1 - M''
380  // ghost hex : cells M''+1 - (nelem_total)
381  // This mapping is realized by using the following two functions:
382  // Elem2Cell - takes a key-value element pair (explained below), and returns
383  // the cell id.
384  // Example: Elem2Cell(<1,2>) = 2 (cell 2 is tet 2)
385  unsigned int Elem2Cell(std::pair<unsigned int,unsigned int>);
386  // Cell2Elem - will return the key-value pair of the element type, and
387  // id. Element type is always defined like:
388  // 1 = tet, 2 = pyr, 3 = pris, 4 = hex
389  // Example: <1,4> = the 4th tet element
390  std::pair<unsigned int,unsigned int> Cell2Elem(unsigned int);
391 
392  //#ifdef _ROCSTAR_X_
393  void Register_com_volconn(const std::string &wname,int paneid,unsigned int nel,
394  unsigned int ngel,std::vector<unsigned int> &conn,
395  unsigned int esize,bool ghost_part = false);
396 
397  bool WindowInitDone();
398  bool DestroyWindows();
399  // Write a Roccom window to whatever format is supported by Rocstar
400  // (CGNS, HDF4, etc) to the specified directory.
401  bool WriteRocstar(const std::string &,double t = 0.0);
402  bool ReadRocstar(const std::string &,double t = 0.0);
403  bool InitRoccomWindows(const std::string &wname);
404  void Create_com_pconn(std::vector<unsigned int> rpids,
405  std::vector< std::vector<
406  std::vector<unsigned int> > > &index_vectors,
407  unsigned int &nreal,unsigned int &ng,
408  std::vector<int> &pc);
409  bool CreatePconn(const std::string &wname);
410  bool PopulateVolumeWindow(const std::string &wname);
411  bool PopulateSurfaceWindow(const std::string &wname);
412  // bool ComRemeshInitData(const std::string &wname,double *cell_data,
413  // int nval_cells, double *node_data,int nval_nodes);
414  // bool ComRemeshInitFluData(const std::string &wname,double *cell_data,
415  // int nval_cells, double *node_data, int nval_nodes);
416  // bool ComRemeshInitFluData();
417  void Create_com_volsoln(const std::string &fname,std::vector<double> &fvec,
418  unsigned int ncomp,const std::string &unit);
419  //#endif
421  {
422  _out = gp._out;
423  _id = gp._id;
424  _ngnodes = gp._ngnodes;
425  _ngtet = gp._ngtet;
426  _nghex = gp._nghex;
427  _ngpyr = gp._ngpyr;
428  _ngpris = gp._ngpris;
429  _nc = gp._nc;
430  _tetconn = gp._tetconn;
431  _pyrconn = gp._pyrconn;
432  _prisconn = gp._prisconn;
433  _hexconn = gp._hexconn;
434  _nvface = gp._nvface;
435  _debug = gp._debug;
436  _cell_ordering[0] = gp._cell_ordering[0];
437  _cell_ordering[1] = gp._cell_ordering[1];
438  _cell_ordering[2] = gp._cell_ordering[2];
439  _cell_ordering[3] = gp._cell_ordering[3];
440  //#ifdef _TRAIL_MPI_
441  _comm = gp._comm;
442  //#endif
443  };
445  {
446  _id = 0;
447  _out = NULL;
448  _ngnodes = 0;
449  _ngtet = 0;
450  _nghex = 0;
451  _ngpyr = 0;
452  _ngpris = 0;
453  _nvface = 0;
454  _nc.resize(0);
455  _debug = false;
456  _tetconn.resize(0);
457  _pyrconn.resize(0);
458  _prisconn.resize(0);
459  _hexconn.resize(0);
460  _cell_ordering[0] = 1;
461  _cell_ordering[1] = 2;
462  _cell_ordering[2] = 3;
463  _cell_ordering[3] = 4;
464  //#ifdef _TRAIL_MPI_
465  _comm = MPI_COMM_NULL;
466  //#endif
467  };
468  //#ifdef _TRAIL_MPI_
469  GEM_Partition(unsigned int id,MPI_Comm comm = MPI_COMM_NULL)
470  : _id(id), _comm(comm)
471  {
472  _out = NULL;
473  _ngnodes = 0;
474  _ngtet = 0;
475  _nghex = 0;
476  _ngpyr = 0;
477  _ngpris = 0;
478  _nvface = 0;
479  _nc.resize(0);
480  _debug = false;
481  _tetconn.resize(0);
482  _pyrconn.resize(0);
483  _prisconn.resize(0);
484  _hexconn.resize(0);
485  _cell_ordering[0] = 1;
486  _cell_ordering[1] = 2;
487  _cell_ordering[2] = 3;
488  _cell_ordering[3] = 4;
489  };
490  //#endif
492  {
493  _id = gp._id;
494  _out = gp._out;
495  _ngnodes = gp._ngnodes;
496  _ngtet = gp._ngtet;
497  _nghex = gp._nghex;
498  _ngpyr = gp._ngpyr;
499  _ngpris = gp._ngpris;
500  _nc = gp._nc;
501  _nvface = gp._nvface;
502  _tetconn = gp._tetconn;
503  _pyrconn = gp._pyrconn;
504  _prisconn = gp._prisconn;
505  _hexconn = gp._hexconn;
506  _debug = gp._debug;
507  //#ifdef _TRAIL_MPI_
508  _comm = gp._comm;
509  //#endif
510  _cell_ordering[0] = gp._cell_ordering[0];
511  _cell_ordering[1] = gp._cell_ordering[1];
512  _cell_ordering[2] = gp._cell_ordering[2];
513  _cell_ordering[3] = gp._cell_ordering[3];
514  return(*this);
515  };
516 };
517 
518 // Utilities
519 bool
520 flip_elements(std::vector<unsigned int> &,unsigned int);
521 
522 #endif
523 
524 
525 
526 
527 
528 
void AddDomainBoundary(int db_id, int ntri, int ngtri, int *tris, int nquad, int ngquad, int *quads)
Definition: GEM.C:1227
unsigned int nelem()
Definition: GEM.H:366
bool InitRoccomWindows(const std::string &wname)
Definition: GEM.C:685
void Create_com_surfsoln(const std::string &wname, const std::string &fname, std::vector< double > &fvec, unsigned int ncomp, const std::string &unit)
Definition: GEM.C:426
bool ValidateMesh()
GEM_UserData _data
Definition: GEM.H:306
void MapDomainBoundaries(std::map< unsigned int, unsigned int > &bcmap)
Definition: GEM.C:1385
unsigned int _nnodes
Definition: GEM.H:130
void Create_com_pconn(std::vector< unsigned int > rpids, std::vector< std::vector< std::vector< unsigned int > > > &index_vectors, unsigned int &nreal, unsigned int &ng, std::vector< int > &pc)
Definition: GEM.C:476
void Create_com_volsoln(const std::string &fname, std::vector< double > &fvec, unsigned int ncomp, const std::string &unit)
Definition: GEM.C:413
std::vector< unsigned int > surface_quad
Definition: GEM.H:136
std::vector< int > pconn
Definition: GEM.H:316
GEM_UserData()
Definition: GEM.H:107
std::vector< unsigned int > _tetconn
Definition: GEM.H:295
double s
Definition: blastest.C:80
int Stride(int stride)
Definition: GEM.H:61
std::vector< unsigned int > _recvnodes
Definition: GEM.H:230
std::vector< std::vector< int > > _int_data
Definition: GEM.H:100
std::vector< unsigned int > _sendcells
Definition: GEM.H:227
GEM_DomainBoundary & operator=(const GEM_DomainBoundary &db)
Definition: GEM.H:177
std::vector< std::string > _string_data
Definition: GEM.H:105
std::vector< double > surface_coordinates
Definition: GEM.H:133
std::string _name
Definition: GEM.H:54
void report()
Definition: GEM.C:49
unsigned int NNodes(void)
Definition: GEM.C:1103
void AddParitionBoundary(int rpid, int nnshare, int nnsend, int nnrecv, int ncsend, int ncrecv, int *nshared, int *nsend, int *nrecv, int *csend, int *crecv)
Definition: GEM.C:1201
bool validate_comm_list(int ncsend, int ncrecv, int *csend, int *crecv)
Definition: GEM.C:1149
std::vector< unsigned int > _quadconn
Definition: GEM.H:132
unsigned int _ngnodes
Definition: GEM.H:286
GEM_UserData _solver_data
Definition: GEM.H:138
unsigned int _npart
Definition: GEM.H:285
int Stride() const
Definition: GEM.H:60
void ResolveCellMapping(GEM_Partition &sp)
Definition: GEM.C:1524
bool WriteRocstar(const std::string &, double t=0.0)
Definition: GEM.C:601
bool flip_elements(std::vector< unsigned int > &, unsigned int)
Definition: GEM.C:844
bool SetSolverDataBlock(const std::string &wname, double *cell_data, int nval_cells, double *node_data, int nval_nodes)
Definition: GEM.C:1121
std::vector< unsigned int > _sharenodes
Definition: GEM.H:231
std::string & Name(const std::string &name)
Definition: GEM.H:59
unsigned int _cell_ordering[4]
Definition: GEM.H:303
std::vector< std::vector< double > > _field_data
Definition: GEM.H:95
GEM_PartitionBoundary(const GEM_PartitionBoundary &pb)
Definition: GEM.H:239
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
std::vector< unsigned int > _recvcells
Definition: GEM.H:228
std::vector< unsigned int > _sendnodes
Definition: GEM.H:229
std::vector< int > _stride_int
Definition: GEM.H:104
const std::string & Name() const
Definition: GEM.H:57
unsigned int _ngpris
Definition: GEM.H:290
bool CreatePconn(const std::string &wname)
Definition: GEM.C:710
unsigned int _nvface
Definition: GEM.H:291
std::vector< GEM_DataItem< int > > _int_items
Definition: GEM.H:99
bool AddSolverDataBlock(const std::string &wname, double *cell_data, int nval_cells, double *node_data, int nval_nodes)
Definition: GEM.C:1072
unsigned int Elem2Cell(std::pair< unsigned int, unsigned int >)
Definition: GEM.C:956
void Register_com_volconn(const std::string &wname, int paneid, unsigned int nel, unsigned int ngel, std::vector< unsigned int > &conn, unsigned int esize, bool ghost_part=false)
Definition: GEM.C:503
unsigned int pconn_nghost
Definition: GEM.H:317
GEM_DomainBoundary(const GEM_DomainBoundary &db)
Definition: GEM.H:152
unsigned int _id
Definition: GEM.H:127
std::vector< unsigned int > _triconn
Definition: GEM.H:131
bool DestroyWindows()
Definition: GEM.C:584
bool PopulateSurfaceWindow(const std::string &wname)
Definition: GEM.C:819
unsigned int _id
Definition: GEM.H:284
std::vector< GEM_DomainBoundary > _db
Definition: GEM.H:305
std::ostream * _out
Definition: GEM.H:308
GEM_Partition & operator=(const GEM_Partition &gp)
Definition: GEM.H:491
std::ostream * _out
Definition: GEM.H:233
unsigned int _ngquad
Definition: GEM.H:129
int & Stride()
Definition: GEM.H:62
unsigned int _esize
Definition: GEM.H:42
int pane_id
Definition: GEM.H:315
GEM_Partition()
Definition: GEM.H:444
std::vector< unsigned int > _pyrconn
Definition: GEM.H:297
GEM_PartitionBoundary & operator=(const GEM_PartitionBoundary &pb)
Definition: GEM.H:261
unsigned int surface_ngnodes
Definition: GEM.H:134
std::vector< unsigned int > _hexconn
Definition: GEM.H:301
void populate(int rpid, int nnshared, int nnsend, int nnrecv, int ncsend, int ncrecv, int *sharedn, int *sendn, int *recvn, int *sendc, int *recvc)
Definition: GEM.C:193
GEM_DomainBoundary()
Definition: GEM.H:164
std::vector< int > _stride_field
Definition: GEM.H:103
bool Register_com_surfmesh(const std::string &wname)
Definition: GEM.C:545
bool debug(bool s=true)
Definition: GEM.C:1266
bool ReadRocstar(const std::string &, double t=0.0)
Definition: GEM.C:595
bool SetSolverDataBlock(const std::string &wname, double *cell_data, int nval_cells, double *node_data, int nval_nodes)
Definition: GEM.C:1045
std::vector< GEM_PartitionBoundary > _pb
Definition: GEM.H:304
std::vector< unsigned int > surface_tri
Definition: GEM.H:135
std::string volume_window
Definition: GEM.H:318
std::string & Name()
Definition: GEM.H:58
GEM_UserData _data
Definition: GEM.H:137
void SetVolumeElements(int *data, int ncells, int ng, int npe)
Definition: GEM.C:1291
std::pair< unsigned int, unsigned int > Cell2Elem(unsigned int)
Definition: GEM.C:875
MPI_Comm _comm
Definition: GEM.H:312
bool WindowInitDone()
Definition: GEM.C:575
bool _debug
Definition: GEM.H:310
unsigned int _ngtet
Definition: GEM.H:287
bool debug(bool s=true)
Definition: GEM.H:193
GEM_UserData _solver_data
Definition: GEM.H:307
GEM_Partition(const GEM_Partition &gp)
Definition: GEM.H:420
GEM_UserData _data
Definition: GEM.H:232
std::vector< GEM_DataItem< double > > _double_items
Definition: GEM.H:94
std::ostream * _out
Definition: GEM.H:140
std::string _name
Definition: GEM.H:90
bool PopulateVolumeWindow(const std::string &wname)
Definition: GEM.C:747
void report_domain_boundaries()
Definition: GEM.C:163
std::vector< double > _nc
Definition: GEM.H:293
void SetNodalCoordinates(double *data, int nn, int ng)
Definition: GEM.C:1276
std::vector< unsigned int > _prisconn
Definition: GEM.H:299
unsigned int _rpart
Definition: GEM.H:226
GEM_Connectivity(const std::vector< unsigned int > &v)
Definition: GEM.H:43
unsigned int _ngpyr
Definition: GEM.H:289
int _stride
Definition: GEM.H:55
std::string surface_window
Definition: GEM.H:319
std::vector< GEM_DataItem< std::string > > _string_items
Definition: GEM.H:106
void PopulateSurfaceArrays(const std::vector< double > &, unsigned int)
Definition: GEM.C:233
unsigned int _nghex
Definition: GEM.H:288
GEM_Partition(unsigned int id, MPI_Comm comm=MPI_COMM_NULL)
Definition: GEM.H:469
void report_partition_boundaries()
Definition: GEM.C:131
bool PopulatePartitionBoundaries(std::vector< GEM_PartitionBoundary > &pb)
Definition: GEM.C:1358
void report()
Definition: GEM.C:181
unsigned int _ngtri
Definition: GEM.H:128