00001 #ifndef gridripper_amr1d_sigma_VaryingSigma_h
00002 #define gridripper_amr1d_sigma_VaryingSigma_h
00003
00004 #include <gridripper/Parameters.h>
00005 #include <gridripper/lang/StreamTokenizer.h>
00006 #include <gridripper/amr1d/Sigma.h>
00007
00008 namespace gridripper { namespace amr1d { namespace sigma {
00009
00010 using namespace gridripper::util;
00011 using namespace std;
00012
00020 class VaryingSigma: public Sigma {
00021
00022 private:
00023 GReal_t sigma0;
00024 GReal_t sigma1;
00025 GReal_t sigma2;
00026 GReal_t x0;
00027 GReal_t x1;
00028 GReal_t x2;
00029 GReal_t x3;
00030 GReal_t ramp;
00031 GReal_t a0;
00032 GReal_t a1;
00033 GReal_t d0;
00034 GReal_t d1;
00035
00036 public:
00037 VaryingSigma(const string& cmd, const Parameters& param, const PDE& pde);
00038
00039 VaryingSigma(GReal_t sigma0, GReal_t sigma1, GReal_t sigma2, GReal_t x0, GReal_t x1, GReal_t x2, GReal_t x3);
00040
00041 GReal_t getValue(GReal_t x, int ileft, int iright) const;
00042
00047 Sigma* cloneSigma() const;
00048 };
00049
00050 } } }
00051
00052 #endif