VaryingSigma.h

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 } } } // namespace gridripper::amr1d::sigma
00051 
00052 #endif /* gridripper_amr1d_sigma_VaryingSigma_h */