00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _GAUSSIANSPHEREIF_H_
00012 #define _GAUSSIANSPHEREIF_H_
00013
00014 #include "MayDay.H"
00015 #include "RealVect.H"
00016
00017 #include "BaseIF.H"
00018
00019 #include "NamespaceHeader.H"
00020
00022
00027 class GaussianSphereIF: public BaseIF
00028 {
00029 public:
00031
00035 GaussianSphereIF(const Real& a_sigma,
00036 const RealVect& a_center,
00037 const bool& a_inside);
00038
00040 GaussianSphereIF(const GaussianSphereIF& a_inputIF);
00041
00043 virtual ~GaussianSphereIF();
00044
00046
00049 virtual void GetParams(Real& a_sigma,
00050 RealVect& a_center,
00051 bool& a_inside) const;
00052
00054
00057 virtual void SetParams(const Real& a_sigma,
00058 const RealVect& a_center,
00059 const bool& a_inside);
00060
00062
00065 virtual Real value(const RealVect& a_point) const;
00066
00068
00071 virtual Real value(const IndexTM<Real,GLOBALDIM>& a_point) const;
00072
00074
00077 virtual IndexTM<Real,GLOBALDIM> grad(const IndexTM<Real,GLOBALDIM>& a_point) const;
00078
00080
00083 virtual Vector<IndexTM <Real,GLOBALDIM> > gradGrad(const IndexTM<Real,GLOBALDIM>& a_point) const;
00084
00085 virtual BaseIF* newImplicitFunction() const;
00086
00087 protected:
00088 Real m_sigma;
00089 RealVect m_center;
00090 bool m_inside;
00091
00092 Real m_sigma2;
00093 Real m_normal;
00094
00095 private:
00096 GaussianSphereIF()
00097 {
00098 MayDay::Error("GaussianSphereIF uses strong construction");
00099 }
00100
00101 void operator=(const GaussianSphereIF& a_inputIF)
00102 {
00103 MayDay::Error("GaussianSphereIF doesn't allow assignment");
00104 }
00105 };
00106
00107 #include "NamespaceFooter.H"
00108 #endif