Chombo + EB  3.0
MultiSlabService.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 // ANAG, LBNL, DTG
12 
13 #ifndef _MULTISLABSERVICE_H_
14 #define _MULTISLABSERVICE_H_
15 
16 #include <cmath>
17 #include <cstdlib>
18 #include "Vector.H"
19 #include "Box.H"
20 #include "EBISBox.H"
21 #include "GeometryService.H"
22 #include "NamespaceHeader.H"
23 ///
24 /**
25  This is a pure base class that EBIndexSpace uses
26  to interface with geometry-generation classes.
27  */
29 {
30 public:
31  ///
32  MultiSlabService(const Vector<Box>& a_coveredRegion);
33 
34  virtual ~MultiSlabService();
35 
36  ///
37  /**
38  Return true if every cell in region is regular at the
39  refinement described by dx.
40  */
41  virtual bool isRegular(const Box& a_region,
42  const ProblemDomain& a_domain,
43  const RealVect& a_origin,
44  const Real& a_dx) const;
45 
46  ///
47  /**
48  Return true if every cell in region is covered at the
49  refinement described by dx.
50  */
51  virtual bool isCovered(const Box& a_region,
52  const ProblemDomain& a_domain,
53  const RealVect& a_origin,
54  const Real& a_dx) const;
55 
56  ///
57  /**
58  irregGraph contains a complete list of irregular vofs. \\
59  validRegion is the the region of the graph \\
60  domain is the domain of compuation \\
61  regIrregCovered = 1 for regular, 0 for irregular, -1 for covered.
62  regIrregCovered must contain the valid region grown by 1. \\
63  In chombospeak, \\
64  ghostregion = (grow(validRegion, 1) & domain);
65  */
66  virtual void fillGraph(BaseFab<int>& a_regIrregCovered,
67  Vector<IrregNode>& a_nodes,
68  const Box& a_validRegion,
69  const Box& a_ghostRegion,
70  const ProblemDomain& a_domain,
71  const RealVect& a_origin,
72  const Real& a_dx) const;
73 
74 
75  virtual InOut InsideOutside(const Box& a_region,
76  const ProblemDomain& a_domain,
77  const RealVect& a_origin,
78  const Real& a_dx) const ;
79 
80 protected:
82 
83 };
84 #include "NamespaceFooter.H"
85 #endif
virtual InOut InsideOutside(const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const
MultiSlabService(const Vector< Box > &a_coveredRegion)
virtual ~MultiSlabService()
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:130
virtual void fillGraph(BaseFab< int > &a_regIrregCovered, Vector< IrregNode > &a_nodes, const Box &a_validRegion, const Box &a_ghostRegion, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const
virtual bool isRegular(const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const
IntVectSet m_coveredRegion
Definition: MultiSlabService.H:81
InOut
Definition: GeometryService.H:41
double Real
Definition: REAL.H:33
Definition: GeometryService.H:37
virtual bool isCovered(const Box &a_region, const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx) const
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
Definition: MultiSlabService.H:28