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 _HELICOILIF_H_ 00012 #define _HELICOILIF_H_ 00013 00014 #include "MayDay.H" 00015 #include "RealVect.H" 00016 #include "Vector.H" 00017 00018 #include "BaseIF.H" 00019 00020 #include "NamespaceHeader.H" 00021 00023 00029 class HelicoilIF: public BaseIF 00030 { 00031 public: 00033 00038 HelicoilIF(const Real& a_helixR, 00039 const Real& a_helixPitch, 00040 const Real& a_circleR, 00041 const bool& a_inside); 00042 00044 HelicoilIF(const HelicoilIF& a_inputIF); 00045 00047 virtual ~HelicoilIF(); 00048 00050 00053 virtual Real value(const RealVect& a_point) const; 00054 00055 virtual BaseIF* newImplicitFunction() const; 00056 00057 protected: 00058 Real m_helixR; // the radius of the helix 00059 Real m_helixPitch; // the pitch of the helix 00060 Real m_circleR; // the radius of the swept circle 00061 00062 Real m_circleR2; // the square radius of the swept circle 00063 00064 bool m_inside; // inside flag 00065 00066 private: 00067 HelicoilIF() 00068 { 00069 MayDay::Error("HelicoilIF uses strong construction"); 00070 } 00071 00072 void operator=(const HelicoilIF& a_inputIF) 00073 { 00074 MayDay::Error("HelicoilIF doesn't allow assignment"); 00075 } 00076 }; 00077 00078 #include "NamespaceFooter.H" 00079 #endif