00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _GAUSSIANIF_H_
00012 #define _GAUSSIANIF_H_
00013
00014 #include "MayDay.H"
00015 #include "RealVect.H"
00016
00017 #include "BaseIF.H"
00018
00019 #include "NamespaceHeader.H"
00020
00022
00028 class GaussianIF: public BaseIF
00029 {
00030 public:
00032
00038 GaussianIF(const RealVect& a_origin,
00039 const Real& a_height,
00040 const RealVect& a_sig2,
00041 const int& a_upDir,
00042 const bool& a_inside);
00043
00045 GaussianIF(const GaussianIF& a_inputIF);
00046
00048 virtual ~GaussianIF();
00049
00051
00054 virtual void GetParams(RealVect& a_origin,
00055 Real& a_height,
00056 RealVect& a_sig2,
00057 int& a_upDir,
00058 bool& a_inside) const;
00059
00061
00064 virtual void SetParams(const RealVect& a_origin,
00065 const Real& a_height,
00066 const RealVect& a_sig2,
00067 const int& a_upDir,
00068 const bool& a_inside);
00069
00071
00074 virtual Real value(const RealVect& a_point) const;
00075
00076 virtual BaseIF* newImplicitFunction() const;
00077
00078 protected:
00079 RealVect m_origin;
00080 Real m_height;
00081 RealVect m_sig2;
00082 int m_upDir;
00083 bool m_inside;
00084
00085 private:
00086 GaussianIF()
00087 {
00088 MayDay::Error("GaussianIF uses strong construction");
00089 }
00090
00091 void operator=(const GaussianIF& a_inputIF)
00092 {
00093 MayDay::Error("GaussianIF doesn't allow assignment");
00094 }
00095 };
00096
00097 #include "NamespaceFooter.H"
00098 #endif