Djinni  2.2
Penalties.h
00001 /* Penalties.h is (c) 2006, Robert J. Hansen.
00002  *
00003  * This code may be used, modified and/or redistributed under the terms
00004  * of the modified BSD license.
00005  */
00006 
00007 #ifndef PENALTIES_H
00008 #define PENALTIES_H
00009 
00010 #include <cmath>
00011 
00013 
00019 class Compressed {
00020     public:
00021     
00026     typedef double ReturnType;
00027     
00033     Compressed() {}
00034     
00043     Compressed(double expPower, double pcap, double cperc) : 
00044         _expPower(expPower), _pressureCap(pcap), _capPercentage(cperc)
00045     {
00046     }
00047 
00051     Compressed(const Compressed& pfun) : 
00052         _expPower(pfun._expPower), _pressureCap(pfun._pressureCap), _capPercentage(pfun._capPercentage)
00053     {
00054     }
00055 
00059     virtual ~Compressed()
00060     {
00061     }
00062 
00066     void setPower(const double power) 
00067     { 
00068         _expPower = power;
00069     }
00070     
00074     void setPressureCap(const double cap) 
00075     { 
00076         _pressureCap = cap; 
00077     }
00078 
00082     void setCapPercentage(const double perc)
00083     {
00084         _capPercentage = perc;
00085     }
00086     
00090     double getCapPercentage() const
00091     {
00092         return _capPercentage;
00093     }
00094     
00098     double getExpPower() const
00099     {
00100         return _expPower;
00101     }
00102     
00107     ReturnType operator()(const int iter) const 
00108     { 
00109         return _pressureCap * (1 - exp(-1 * _expPower * iter)); 
00110     }
00111         
00112     protected:
00113     double _expPower;
00114     double _pressureCap;
00115     double _capPercentage;
00116 };
00117 
00118 
00119 
00121 
00125 class Simulated {
00126         public:
00127         
00129         typedef double ReturnType;
00130         
00132         Simulated() : _mult(1.0) 
00133         {
00134         }
00135         
00139         Simulated(const double multiplier) : _mult(multiplier) 
00140         {
00141         }
00142 
00147         Simulated(const Simulated& sim) : _mult(sim._mult) 
00148         {
00149         }
00150         
00154         virtual ~Simulated() 
00155         {
00156         }
00157         
00161         void setMultiplier(const double multiplier) 
00162         { 
00163                 _mult = multiplier; 
00164         }
00165         
00171         ReturnType operator()(const int) const 
00172         {
00173                 return _mult; 
00174         }
00175 
00176         protected:
00177         double _mult;
00178 };
00179 
00180 
00181 #endif