00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013 #ifndef _MULTISLABSERVICE_H_
00014 #define _MULTISLABSERVICE_H_
00015
00016 #include <cmath>
00017 #include <cstdlib>
00018 #include "Vector.H"
00019 #include "Box.H"
00020 #include "EBISBox.H"
00021 #include "GeometryService.H"
00022 #include "NamespaceHeader.H"
00023
00024
00025
00026
00027
00028 class MultiSlabService: public GeometryService
00029 {
00030 public:
00031
00032 MultiSlabService(const Vector<Box>& a_coveredRegion);
00033
00034 virtual ~MultiSlabService();
00035
00036
00037
00038
00039
00040
00041 virtual bool isRegular(const Box& a_region,
00042 const ProblemDomain& a_domain,
00043 const RealVect& a_origin,
00044 const Real& a_dx) const;
00045
00046
00047
00048
00049
00050
00051 virtual bool isCovered(const Box& a_region,
00052 const ProblemDomain& a_domain,
00053 const RealVect& a_origin,
00054 const Real& a_dx) const;
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 virtual void fillGraph(BaseFab<int>& a_regIrregCovered,
00067 Vector<IrregNode>& a_nodes,
00068 const Box& a_validRegion,
00069 const Box& a_ghostRegion,
00070 const ProblemDomain& a_domain,
00071 const RealVect& a_origin,
00072 const Real& a_dx,
00073 const DataIndex& a_di) const;
00074
00075
00076 virtual InOut InsideOutside(const Box& a_region,
00077 const ProblemDomain& a_domain,
00078 const RealVect& a_origin,
00079 const Real& a_dx) const ;
00080
00081 protected:
00082 IntVectSet m_coveredRegion;
00083
00084 };
00085 #include "NamespaceFooter.H"
00086 #endif