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 _AMR_LEVEL_WAVE_EQN_FACTORY_H_ 00012 #define _AMR_LEVEL_WAVE_EQN_FACTORY_H_ 00013 00014 #include "AMRLevelFactory.H" 00015 #include "WaveIBC.H" 00016 #include "AMRLevelWaveEquation.H" 00017 #include "UsingNamespace.H" 00018 00020 00022 class AMRLevelWaveEqnFactory : public AMRLevelFactory 00023 { 00024 public: 00026 00028 AMRLevelWaveEqnFactory(); 00029 00031 00033 virtual AMRLevel* new_amrlevel() const; 00034 00036 00038 virtual ~AMRLevelWaveEqnFactory(); 00039 00041 00043 virtual void CFL(Real a_cfl); 00044 00046 00048 virtual void domainLength(Real a_domainLength); 00049 00050 void x0(const Real& a_x0); 00051 void IBC(PhysIBC* a_w0){m_wave_ibc = a_w0->new_physIBC();}; 00053 00055 virtual void verbosity(const int& verbosity); 00056 00058 00060 virtual void refinementThreshold(Real a_refineThresh); 00061 00063 00065 void tagBufferSize(int a_tagBufferSize); 00066 00068 00070 void initialDtMultiplier(Real a_initialDtMultiplier); 00071 00073 00075 bool isDefined() const; 00076 00077 protected: 00078 // Some default values 00079 void setDefaultValues(); 00080 00081 int m_verbosity; 00082 00083 // CFL number 00084 Real m_r0; 00085 Real m_cfl; 00086 bool m_cflSet; 00087 PhysIBC* m_wave_ibc; 00088 00089 // Physical dimension of the longest side of the domain 00090 Real m_domainLength; 00091 bool m_domainLengthSet; 00092 00093 // Refinement threshold for gradient 00094 Real m_refineThresh; 00095 bool m_refineThreshSet; 00096 00097 // Tag buffer size 00098 int m_tagBufferSize; 00099 bool m_tagBufferSizeSet; 00100 00101 // Initial dt multiplier 00102 Real m_initialDtMultiplier; 00103 bool m_initialDtMultiplierSet; 00104 00105 private: 00106 // Disallowed for all the usual reasons 00107 void operator=(const AMRLevelWaveEqnFactory& a_input) 00108 { 00109 MayDay::Error("invalid operator"); 00110 } 00111 00112 // Disallowed for all the usual reasons 00113 AMRLevelWaveEqnFactory(const AMRLevelWaveEqnFactory& a_input) 00114 { 00115 MayDay::Error("invalid operator"); 00116 } 00117 }; 00118 00119 #endif