00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _HYPERPLANEIF_H_
00012 #define _HYPERPLANEIF_H_
00013
00014 #include "MayDay.H"
00015 #include "IndexTM.H"
00016 #include "REAL.H"
00017
00018 #include "BaseIF.H"
00019 #include "NamespaceHeader.H"
00020
00021
00022
00023
00024
00025 class HyperPlaneIF: public BaseIF
00026 {
00027 public:
00028
00029
00030
00031
00032
00033 HyperPlaneIF(const IndexTM<Real,GLOBALDIM>& a_normal,
00034 const IndexTM<Real,GLOBALDIM>& a_point,
00035 const bool & a_normalIn);
00036
00037
00038 HyperPlaneIF(const HyperPlaneIF& a_inputIF);
00039
00040
00041 virtual ~HyperPlaneIF();
00042
00043
00044
00045
00046 virtual Real value(const IndexTM<int,GLOBALDIM> & a_partialDerivative,
00047 const IndexTM<Real,GLOBALDIM>& a_point) const;
00048
00049 virtual Real value(const RealVect& a_point) const;
00050
00051 virtual Real value(const IndexTM<Real,GLOBALDIM>& a_point) const;
00052
00053 virtual IndexTM<Real,GLOBALDIM> normal(const IndexTM<Real,GLOBALDIM>& a_point) const ;
00054
00055 virtual Vector<IndexTM<Real,GLOBALDIM> > gradNormal(const IndexTM<Real,GLOBALDIM>& a_point) const;
00056
00057 virtual BaseIF* newImplicitFunction() const;
00058
00059
00060
00061
00062 IndexTM<Real,GLOBALDIM> m_normal;
00063
00064
00065 IndexTM<Real,GLOBALDIM> m_point;
00066
00067
00068 bool m_normalIn;
00069
00070 private:
00071 HyperPlaneIF()
00072 {
00073 MayDay::Abort("HyperPlaneIF uses strong construction");
00074 }
00075
00076 void operator=(const HyperPlaneIF& a_inputIF)
00077 {
00078 MayDay::Abort("HyperPlaneIF doesn't allow assignment");
00079 }
00080 };
00081
00082 #include "NamespaceFooter.H"
00083 #endif