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 // PhysIBC.H 00012 // ============ 00013 // 00014 // Virtual base class through which a user specifies the initial and boundary 00015 // conditions for a hyperbolic system of PDEs. 00016 // 00017 00018 #ifndef _PHYSIBC_H 00019 #define _PHYSIBC_H 00020 00021 #include "FArrayBox.H" 00022 #include "REAL.H" 00023 #include "LevelData.H" 00024 #include "ProblemDomain.H" 00025 #include "UsingNamespace.H" 00026 00028 00032 class PhysIBC 00033 { 00034 public: 00036 00038 PhysIBC(){}; 00039 00041 00043 virtual ~PhysIBC() {}; 00044 00046 00053 00054 00058 virtual PhysIBC* new_physIBC() = 0; 00059 00061 00063 virtual void initialize(LevelData<FArrayBox>& a_phi, 00064 LevelData<FArrayBox>& a_pi,Real a_dx) = 0; 00065 00066 protected: 00067 // define() has been called 00068 bool m_isDefined; 00069 00070 // The current level's problem domain 00071 ProblemDomain m_domain; 00072 00073 // The current level's grid spacing 00074 Real m_dx; 00075 00076 private: 00077 // Disallowed for all the usual reasons 00078 void operator=(const PhysIBC& a_input) 00079 { 00080 MayDay::Error("invalid operator"); 00081 } 00082 00083 // Disallowed for all the usual reasons 00084 PhysIBC(const PhysIBC& a_input) 00085 { 00086 MayDay::Error("invalid operator"); 00087 } 00088 }; 00089 00090 #endif