00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 #ifndef _PLANEIF_H_ 00012 #define _PLANEIF_H_ 00013 00014 #include "MayDay.H" 00015 #include "RealVect.H" 00016 00017 #include "BaseIF.H" 00018 00019 #include "NamespaceHeader.H" 00020 00022 00025 class PlaneIF: public BaseIF 00026 { 00027 public: 00029 00034 PlaneIF(const RealVect& a_normal, 00035 const RealVect& a_point, 00036 const bool& a_inside); 00037 00039 PlaneIF(const PlaneIF& a_inputIF); 00040 00042 virtual ~PlaneIF(); 00043 00045 00048 virtual void GetParams(RealVect& a_normal, 00049 RealVect& a_point, 00050 bool& a_inside) const; 00051 00053 00056 virtual void SetParams(const RealVect& a_normal, 00057 const RealVect& a_point, 00058 const bool& a_inside); 00059 00061 00064 virtual Real value(const RealVect& a_point) const; 00065 00066 virtual BaseIF* newImplicitFunction() const; 00067 00068 virtual bool fastIntersection(const RealVect& a_low, 00069 const RealVect& a_high)const 00070 {return true;} 00071 00072 00073 virtual GeometryService::InOut InsideOutside(const RealVect& a_low, 00074 const RealVect& a_high) const ; 00075 protected: 00076 RealVect m_normal; // plane normal 00077 RealVect m_point; // point on the plane 00078 bool m_inside; // inside flag 00079 00080 private: 00081 PlaneIF() 00082 { 00083 MayDay::Error("PlaneIF uses strong construction"); 00084 } 00085 00086 void operator=(const PlaneIF& a_inputIF) 00087 { 00088 MayDay::Error("PlaneIF doesn't allow assignment"); 00089 } 00090 }; 00091 00092 #include "NamespaceFooter.H" 00093 #endif