Chombo + EB + MF  3.2
MFIndexSpace.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3  * _______ __
4  * / ___/ / ___ __ _ / / ___
5  * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6  * \___/_//_/\___/_/_/_/_.__/\___/
7  * Please refer to Copyright.txt, in Chombo's root directory.
8  */
9 #endif
10 
11 #ifndef _MFINDEXSPACE_H_
12 #define _MFINDEXSPACE_H_
13 
14 #include "EBIndexSpace.H"
15 #include "NamespaceHeader.H"
16 
18 {
19 public:
20 
21  MFIndexSpace();
22 
23  ~MFIndexSpace();
24 
25  ///
26  /**
27  a_geoservers contains a GeometryService per fluid
28  phase.
29 
30  If a_ncellMax is set, that is the max width of
31  an internal grid. Otherwise use defaults
32  of (16 in 3D, 64 in 2d)
33  */
34  void
35  define(const Box & a_domain,
36  const RealVect & a_origin,
37  const Real & a_dx,
38  const Vector<GeometryService*>& a_geoservers,
39  int a_nCellMax = -1,
40  int a_maxCoarsenings = -1,
41  bool a_fixOnlyFirstPhaseRegNextToMultiValued = false);
42 
43  ///
45  const DisjointBoxLayout& a_grids,
46  const Box& a_domain,
47  const int & nghost) const;
48 
49  void fillEBISLayout(EBISLayout& a_ebis, int phase,
50  const DisjointBoxLayout& a_grids,
51  const Box& a_domain,
52  const int & nghost) const;
53 
54  int numPhases() const
55  {
56  return m_ebis.size();
57  }
58 
59  const EBIndexSpace* EBIS(int a_phase) const
60  {
61  return m_ebis[a_phase];
62  }
63 
64  ///
65  /**
66  returns an IntVectSet that is the union of all the irregular
67  cells in the entire MFIndexSpace. Useful for initializing
68  a multifluid calculation.
69  */
70  IntVectSet interfaceRegion(int a_depth=0) const;
71 
72 private:
73 
75 
76  /// disallowed...
77  MFIndexSpace (const MFIndexSpace&);
79 
80 };
81 
82 #include "NamespaceFooter.H"
83 #endif
Definition: MFIndexSpace.H:17
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
Definition: EBIndexSpace.H:50
one dimensional dynamic array
Definition: Vector.H:53
const EBIndexSpace * EBIS(int a_phase) const
Definition: MFIndexSpace.H:59
MFIndexSpace & operator=(const MFIndexSpace &)
void define(const Box &a_domain, const RealVect &a_origin, const Real &a_dx, const Vector< GeometryService *> &a_geoservers, int a_nCellMax=-1, int a_maxCoarsenings=-1, bool a_fixOnlyFirstPhaseRegNextToMultiValued=false)
int numPhases() const
Definition: MFIndexSpace.H:54
double Real
Definition: REAL.H:33
Vector< EBIndexSpace * > m_ebis
Definition: MFIndexSpace.H:74
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
size_t size() const
Definition: Vector.H:192
void fillEBISLayout(Vector< EBISLayout > &a_ebis, const DisjointBoxLayout &a_grids, const Box &a_domain, const int &nghost) const
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:469
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
Definition: EBISLayout.H:39
IntVectSet interfaceRegion(int a_depth=0) const