Antares_Simulator
Antares_Simulator copied to clipboard
De-duplicate code associated to time-series & time-series numbers
- [ ] Binding constraints
- [x] Links
Main PR: #1677
Idea
One shared TimeSeriesNumbers
object, used by one or many TimeSeries
objects.
TimeSeries
can only be constructed from an existing TimeSeriesNumbers
.
#include <vector>
class TimeSeriesNumbers {
public:
int getTSNumber(int year) const {
tsNumbers_[year];
}
private:
std::vector<int> tsNumbers_;
};
class TimeSeries {
public:
TimeSeries(const TimeSeriesNumbers& tsNumbers) : tsNumbers(tsNumbers) {}
double getCoefficient(int year, int hourInYear) {
return coefficients[tsNumbers.getTSNumber(year)][hourInTheYear];
}
private:
Matrix<> coefficients;
const TimeSeriesNumbers& tsNumbers;
};
// Thermique pour un cluster thermique
class ThermalCluster {
public:
ThermalCluster() : availability(tsNumbers), marketBidCost(tsNumbers) {}
TimeSeries availability;
TimeSeries marketBidCost;
private:
TimeSeriesNumbers tsNumbers;
};
// Hydro pour une zone
class Hydro {
public:
Hydro() : ror(tsNumbers), ruleCurves(tsNumbers) {}
TimeSeries ror;
TimeSeries ruleCurves;
private:
TimeSeriesNumbers tsNumbers;
};
void usage() {
ThermalCluster cluster;
cluster.availability.getCoefficient(year, hourInYear);
cluster.availability.getColumn(year)[hourInTheYear];
auto& avail = cluster.availability.getColumn(year);
a = avail[hourInYear];
Hydro hydro;
}