Antares_Simulator icon indicating copy to clipboard operation
Antares_Simulator copied to clipboard

De-duplicate code associated to time-series & time-series numbers

Open flomnes opened this issue 1 year ago • 5 comments

  • [ ] 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;
}

flomnes avatar Oct 03 '23 12:10 flomnes