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 _RampBL_H_
00030 #define _RampBL_H_
00031
00032 #include "MayDay.H"
00033 #include "LoHiSide.H"
00034 #include "IntVect.H"
00035 #include "RealVect.H"
00036 #include "BaseLevelSet.H"
00037 #include "REAL.H"
00038
00039 using std::pair;
00040
00042
00046 class RampBL: public BaseLevelSet
00047 {
00048 public:
00049
00051
00055 RampBL(const int& a_upDir,
00056 const int& a_indepVar,
00057 const Real& a_start,
00058 const Real& a_rampSlope);
00059
00061
00064 RampBL(const RealVect& a_rampNormal,
00065 const Real& a_alpha);
00066
00068 virtual ~RampBL();
00069
00071
00075 virtual bool isRegular(const Box& region,
00076 const Box& domain,
00077 const RealVect& origin,
00078 const Real& dx) const;
00079
00081
00085 virtual bool isCovered(const Box& region,
00086 const Box& domain,
00087 const RealVect& origin,
00088 const Real& dx) const;
00089
00091
00101 pair<int, Side::LoHiSide> upDirection(const RealVect& a_midpt,const IntVect& a_iv) const;
00102
00104
00109 virtual Real localFuncValue(const RealVect& a_independentCoords,
00110 const int& a_upDirection,
00111 const IntVect& a_iv,
00112 const Box& a_domain,
00113 const RealVect& a_origin,
00114 const Real& a_dx) const;
00115
00116
00118
00122 virtual
00123 BaseLevelSet* new_baseLevelSet() const;
00124
00125 protected:
00126
00127 pair<int, Side::LoHiSide> m_upDir;
00128 RealVect m_rampNormal;
00129 Real m_alpha;
00130
00131
00132
00133
00134
00135
00136
00137 private:
00139 RampBL()
00140 {
00141 MayDay::Error("RampBL uses strong construction");
00142 }
00143 RampBL(const RampBL& a_ramplg)
00144 {
00145 MayDay::Error("RampBL disallows copy construction");
00146 }
00147 void operator=(const RampBL& a_ramplg)
00148 {
00149 MayDay::Error("RampBL disallows assignment");
00150 }
00151
00152 };
00153 #endif