Djinni
2.2
|
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