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 _SPHEREIF_H_ 00012 #define _SPHEREIF_H_ 00013 00014 #include "MayDay.H" 00015 #include "RealVect.H" 00016 00017 #include "BaseIF.H" 00018 00019 #include "NamespaceHeader.H" 00020 00022 00025 class SphereIF: public BaseIF 00026 { 00027 public: 00029 00033 SphereIF(const Real& a_radius, 00034 const RealVect& a_center, 00035 const bool& a_inside); 00036 00038 SphereIF(const SphereIF& a_inputIF); 00039 00041 virtual ~SphereIF(); 00042 00044 00047 virtual void GetParams(Real& a_radius, 00048 RealVect& a_center, 00049 bool& a_inside) const; 00050 00052 00055 virtual void SetParams(const Real& a_radius, 00056 const RealVect& a_center, 00057 const bool& a_inside); 00058 00060 00063 virtual Real value(const RealVect& a_point) const; 00064 00065 virtual BaseIF* newImplicitFunction() const; 00066 00067 virtual bool fastIntersection(const RealVect& a_low, 00068 const RealVect& a_high) const 00069 {return true;} 00070 00071 00072 virtual GeometryService::InOut InsideOutside(const RealVect& a_low, 00073 const RealVect& a_high) const ; 00074 00075 protected: 00076 Real m_radius; // radius 00077 RealVect m_center; // center 00078 bool m_inside; // inside flag 00079 00080 Real m_radius2; // precomputed radius squared 00081 00082 private: 00083 SphereIF() 00084 { 00085 MayDay::Error("SphereIF uses strong construction"); 00086 } 00087 00088 void operator=(const SphereIF& a_inputIF) 00089 { 00090 MayDay::Error("SphereIF doesn't allow assignment"); 00091 } 00092 }; 00093 00094 #include "NamespaceFooter.H" 00095 #endif