1 /*
2 * MeshGeneration.hpp
3 * class for generating simple meshes online
4 */
5
6 #ifndef MESHGENERATION_HPP_
7 #define MESHGENERATION_HPP_
8 #include "moab/Core.hpp"
9
10 #include "moab/CartVect.hpp"
11
12 namespace moab
13 {
14
15 // Forward Declarations
16 class ParallelComm;
17
18 class MeshGeneration
19 {
20
21 public:
22 struct BrickOpts
23 {
24 // follow the options in examples/advanced/GenLargeMesh.cpp
25 CartVect ui, uj, uk; // such that ui * uj = uk; uj*uk=ui, etc
26 double xsize, ysize, zsize; // extents of the brick
27 int A, B, C; // number of blocks per processor
28 int M, N, K; // number of processors in each direction
29 int blockSize; // each small block size
30 int GL; // number of ghost layers
31 bool newMergeMethod; // = false;
32 bool quadratic; // = false;
33 bool keep_skins; // = false;
34 bool tetra; // = false;
35 bool adjEnts; // = false;
36 bool parmerge; // = false;
37 };
38
39 MeshGeneration( Interface* mbi,
40 #ifdef MOAB_HAVE_MPI
41 ParallelComm* pcomm = 0,
42 #endif
43 EntityHandle rset = 0 );
44 virtual ~MeshGeneration();
45
46 ErrorCode BrickInstance( BrickOpts& opts );
47
48 private:
49 Interface* mb;
50 #ifdef MOAB_HAVE_MPI
51 ParallelComm* pc;
52 #endif
53 EntityHandle cset;
54 };
55
56 } /* namespace moab */
57 #endif /* MESHGENERATION_HPP_ */