24 : R(c->getDoubleValue(
"scheduler",
"thermalResistance"))
25 , C(c->getDoubleValue(
"scheduler",
"thermalCapacitance"))
26 , temperatureHistory(
Utils::Record(c,
"temperature"))
27 , energyHistory(
Utils::Record(c,
"energy"))
28 , instantaneousAgingHistory(
Utils::Record(c,
"instantaneousAging"))
29 , cumulativeAgingHistory(
Utils::Record(c,
"cumulativeAging"))
30 , endTime(c->getDoubleValue(
"scheduler",
"runningTime"))
31 , recordingTimeRatio(c->getDoubleValue(
"scheduler",
"onlyLogTempAfterRatio"))
32 , activationEnergy(c->getDoubleValue(
"scheduler",
"activationEnergy"))
33 , formFactor(c->getDoubleValue(
"scheduler",
"formFactor"))
35 logTemperature = c->getBoolValue(
"scheduler",
"logTemperature",
false);
36 logEnergy = c->getBoolValue(
"scheduler",
"logEnergy",
false);
37 logAging = c->getBoolValue(
"scheduler",
"logAging",
false);
42 ,
double taskPowerCoeff
55 power = params->
power;
78 void TemperatureAndAgingModel::computeAndLog()
81 double timeInterval = currentTime - previousTime;
82 previousTime = currentTime;
84 T = (T0 - A)*exp(-timeInterval/(R*C)) + A;
90 temperatureHistory.
add(currentTime, T);
94 energyHistory.
add(currentTime, power);
103 void TemperatureAndAgingModel::computeAging()
105 static double previousTime = 0.0;
107 static double currentTime = 0.0;
108 static double previousRate = 0.0;
109 static double currentRate = 0.0;
113 double Tk = T + 273.15;
115 currentRate = exp(-activationEnergy/(k*Tk))/(k*Tk);
118 double a = (currentRate + previousRate)*(currentTime - previousTime)/2.0;
119 consumedLifetime += a;
121 previousTime = currentTime;
122 previousRate = currentRate;
124 instantaneousAgingHistory.
add(currentTime, a);
129 return consumedLifetime;
void printTemperatureHistory(std::string filename) override
void printToFile(std::string folder) const
double updateTemperature(double timeInterval, struct PowerParams *params, double taskPowerCoeff, double freq) override
double getConsumedLifetime()
void add(double time, double element)
TemperatureAndAgingModel(std::shared_ptr< Utils::Configuration > conf)
double getTemperature() override
void printEnergyHistory(std::string filename) override