00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _BaseLevelSet_H_
00030 #define _BaseLevelSet_H_
00031
00032 #include <cmath>
00033 #include <cstdlib>
00034 #include "REAL.H"
00035 #include "LoHiSide.H"
00036 #include "IntVect.H"
00037 #include "Vector.H"
00038 #include "RealVect.H"
00039
00040 using std::pair;
00042
00049 class BaseLevelSet
00050 {
00051 public:
00052
00054 BaseLevelSet()
00055 {;}
00056
00058 virtual ~BaseLevelSet()
00059 {;}
00060
00062
00066 virtual bool isRegular(const Box& region,
00067 const Box& domain,
00068 const RealVect& origin,
00069 const Real& dx) const = 0;
00070
00072
00076 virtual bool isCovered(const Box& region,
00077 const Box& domain,
00078 const RealVect& origin,
00079 const Real& dx) const = 0;
00080
00081
00083
00092 virtual pair<int, Side::LoHiSide>
00093 upDirection(const RealVect& a_midpt, const IntVect& a_iv) const = 0;
00094
00096
00100 virtual Real localFuncValue(const RealVect& a_independentCoords,
00101 const int& a_upDirection,
00102 const IntVect& a_iv,
00103 const Box& a_domain,
00104 const RealVect& a_origin,
00105 const Real& a_dx) const = 0;
00106
00108
00112 virtual
00113 BaseLevelSet* new_baseLevelSet() const = 0;
00114
00115 Vector<RealVect>
00116 getBoxLocations(const Box& a_region,
00117 const RealVect& a_origin,
00118 const Real& a_dx) const;
00120 Vector<IntVect>
00121 getBoxCornerCells(const Box& a_region,
00122 const RealVect& a_origin,
00123 const Real& a_dx) const;
00124
00125
00126 Vector<RealVect>
00127 getBoxLocations(const Box& a_region,
00128 const RealVect& a_origin,
00129 const RealVect& a_vectDx) const;
00131
00132
00133 };
00134 #endif