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
00021
00022
00023
00024
00025
00026
00027 class GaussianSphereIF: public BaseIF
00028 {
00029 public:
00030
00031
00032
00033
00034
00035 GaussianSphereIF(const Real& a_sigma,
00036 const RealVect& a_center,
00037 const bool& a_inside);
00038
00039
00040 GaussianSphereIF(const GaussianSphereIF& a_inputIF);
00041
00042
00043 virtual ~GaussianSphereIF();
00044
00045
00046
00047
00048
00049 virtual void GetParams(Real& a_sigma,
00050 RealVect& a_center,
00051 bool& a_inside) const;
00052
00053
00054
00055
00056
00057 virtual void SetParams(const Real& a_sigma,
00058 const RealVect& a_center,
00059 const bool& a_inside);
00060
00061
00062
00063
00064
00065 virtual Real value(const RealVect& a_point) const;
00066
00067
00068 virtual Real derivative(const IntVect& a_deriv,
00069 const RealVect& a_point) const;
00070
00071
00072 virtual Real firstDeriv(const IntVect& a_deriv,
00073 const RealVect& a_point) const;
00074
00075
00076 virtual Real secondDeriv(const IntVect& a_deriv,
00077 const RealVect& a_point) const;
00078
00079
00080 virtual Real thirdDeriv(const IntVect& a_deriv,
00081 const RealVect& a_point) const;
00082
00083
00084 virtual Real fourthDeriv(const IntVect& a_deriv,
00085 const RealVect& a_point) const;
00086
00087
00088 virtual Real fifthDeriv(const IntVect& a_deriv,
00089 const RealVect& a_point) const;
00090
00091 virtual Real sixthDeriv(const IntVect& a_deriv,
00092 const RealVect& a_point) const;
00093
00094 virtual BaseIF* newImplicitFunction() const;
00095
00096 protected:
00097 Real m_sigma;
00098 RealVect m_center;
00099 bool m_inside;
00100
00101 Real m_sigma2;
00102 Real m_normal;
00103
00104
00105
00106
00107 Real m_b, m_C;
00108 private:
00109 GaussianSphereIF()
00110 {
00111 MayDay::Abort("GaussianSphereIF uses strong construction");
00112 }
00113
00114 void operator=(const GaussianSphereIF& a_inputIF)
00115 {
00116 MayDay::Abort("GaussianSphereIF doesn't allow assignment");
00117 }
00118 };
00119
00120 #include "NamespaceFooter.H"
00121 #endif