00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _BILINEARIF_H_
00012 #define _BILINEARIF_H_
00013
00014 #include "MayDay.H"
00015 #include "RealVect.H"
00016 #include "IndexTM.H"
00017 #include "FArrayBox.H"
00018
00019 #include "BaseIF.H"
00020
00021 #include "NamespaceHeader.H"
00022
00023
00024
00025
00026
00027 class BilinearIF: public BaseIF
00028 {
00029 public:
00030
00031
00032
00033
00034
00035
00036 BilinearIF(LevelData<NodeFArrayBox> * a_etaCorner,
00037 const IndexTM<Real,GLOBALDIM>& a_origin3D,
00038 const IndexTM<Real,GLOBALDIM>& a_dx3D,
00039 DisjointBoxLayout * a_grids);
00040
00041
00042 virtual ~BilinearIF();
00043
00044
00045
00046 BilinearIF(const BilinearIF& a_inputIF);
00047
00048
00049
00050
00051
00052
00053 virtual void findIndex(const IndexTM<Real,GLOBALDIM>& a_point,
00054 IntVect & a_index) const;
00055
00056
00057
00058
00059
00060 virtual Real value(const IndexTM<int,GLOBALDIM> & a_partialDerivative,
00061 const IndexTM<Real,GLOBALDIM> & a_point ) const;
00062
00063 virtual Real value(const IndexTM<Real,GLOBALDIM>& a_point) const;
00064
00065 virtual Real value(const RealVect& a_point) const;
00066
00067 virtual BaseIF* newImplicitFunction() const;
00068
00069 virtual LevelData<NodeFArrayBox>* getEtaCorner() const;
00070
00071 virtual DisjointBoxLayout* getGrid() const;
00072
00073 virtual void getPolynomial(Vector<PolyTerm> & a_polynomial,
00074 IntVect & a_index);
00075 private:
00076
00077 BilinearIF()
00078 {
00079 MayDay::Abort("BilinearIF uses strong construction");
00080 }
00081
00082 void operator=(const BilinearIF& a_inputIF)
00083 {
00084 MayDay::Abort("BilinearIF doesn't allow assignment");
00085 }
00086
00087
00088 LevelData<NodeFArrayBox>* m_etaCorner;
00089
00090
00091 IndexTM<Real,GLOBALDIM> m_origin3D;
00092 IndexTM<Real,GLOBALDIM> m_dx3D;
00093 DisjointBoxLayout* m_grids;
00094
00095
00096
00097 };
00098
00099 #include "NamespaceFooter.H"
00100 #endif