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 _HELIXIF_H_ 00012 #define _HELIXIF_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 00033 class HelixIF: public BaseIF 00034 { 00035 public: 00037 00042 HelixIF(const BaseIF& a_impFunc, 00043 const Real& a_rate, 00044 const bool& a_inside); 00045 00047 HelixIF(const HelixIF& a_inputIF); 00048 00050 virtual ~HelixIF(); 00051 00053 00056 virtual Real value(const RealVect& a_point) const; 00057 00058 virtual BaseIF* newImplicitFunction() const; 00059 00060 protected: 00061 BaseIF* m_impFunc; // implicit function to rotate 00062 00063 Real m_rate; // the rate of rotate as z changes 00064 00065 bool m_inside; // inside flag 00066 00067 private: 00068 HelixIF() 00069 { 00070 MayDay::Error("HelixIF uses strong construction"); 00071 } 00072 00073 void operator=(const HelixIF& a_inputIF) 00074 { 00075 MayDay::Error("HelixIF doesn't allow assignment"); 00076 } 00077 }; 00078 00079 #include "NamespaceFooter.H" 00080 #endif