115 template<
int CDataLevel,
int CFile>
137 NextType::initializeFromStudy(study);
143 pNbYearsParallel = study->maxNbYearsInParallel;
144 pValuesForTheCurrentYear.resize(pNbYearsParallel);
147 pNbClustersOfArea = area->thermal.list.enabledCount();
148 if (pNbClustersOfArea)
151 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
153 pValuesForTheCurrentYear[numSpace].resize(pNbClustersOfArea);
156 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
158 for (
unsigned int i = 0; i != pNbClustersOfArea; ++i)
160 pValuesForTheCurrentYear[numSpace][i].initializeFromStudy(*study);
164 for (
unsigned int i = 0; i != pNbClustersOfArea; ++i)
176 NextType::initializeFromArea(study, area);
179 size_t getMaxNumberColumns()
const
187 NextType::initializeFromAreaLink(study, link);
190 void simulationBegin()
193 NextType::simulationBegin();
198 NextType::simulationEnd();
201 void yearBegin(
unsigned int year,
unsigned int numSpace)
204 for (
unsigned int i = 0; i != pNbClustersOfArea; ++i)
206 pValuesForTheCurrentYear[numSpace][i].reset();
210 NextType::yearBegin(year, numSpace);
213 void yearEndBuild(
State& state,
unsigned int year,
unsigned int numSpace)
216 NextType::yearEndBuild(state, year, numSpace);
219 void yearEnd(
unsigned int year,
unsigned int numSpace)
223 for (
unsigned int i = 0; i < pNbClustersOfArea; ++i)
226 pValuesForTheCurrentYear[numSpace][i].computeStatisticsForTheCurrentYear();
230 NextType::yearEnd(year, numSpace);
233 void computeSummary(std::map<unsigned int, unsigned int>& numSpaceToYear,
234 unsigned int nbYearsForCurrentSummary)
236 for (
unsigned int numSpace = 0; numSpace < nbYearsForCurrentSummary; ++numSpace)
238 for (
unsigned int i = 0; i < pNbClustersOfArea; ++i)
242 pValuesForTheCurrentYear[numSpace][i]);
247 NextType::computeSummary(numSpaceToYear, nbYearsForCurrentSummary);
250 void hourBegin(
unsigned int hourInTheYear)
253 NextType::hourBegin(hourInTheYear);
256 void hourForEachArea(
State& state,
unsigned int numSpace)
259 auto area = state.area;
260 auto& thermal = state.thermal;
261 const std::vector<double>& areaMarginalCosts = state.hourlyResults->CoutsMarginauxHoraires;
262 uint hourInTheWeek = state.hourInTheWeek;
263 uint hourInTheYear = state.hourInTheYear;
265 for (
auto& cluster: area->thermal.list.each_enabled())
267 double hourlyClusterProduction = thermal[area->index]
268 .thermalClustersProductions[cluster->enabledIndex];
269 uint tsIndex = cluster->series.timeseriesNumbers[state.year];
272 pValuesForTheCurrentYear[numSpace][cluster->enabledIndex].hour[hourInTheYear]
273 = std::max((hourlyClusterProduction - cluster->PthetaInf[hourInTheYear]), 0.)
274 * (-areaMarginalCosts[hourInTheWeek]
275 - cluster->getCostProvider().getMarginalCost(tsIndex, hourInTheYear));
279 NextType::hourForEachArea(state, numSpace);
282 Antares::Memory::Stored<double>::ConstReturnType retrieveRawHourlyValuesForCurrentYear(
284 unsigned int numSpace)
const
286 return pValuesForTheCurrentYear[numSpace][0].hour;
289 void localBuildAnnualSurveyReport(SurveyResults&
results,
292 unsigned int numSpace)
const
295 results.isCurrentVarNA = AncestorType::isNonApplicable;
297 if (AncestorType::isPrinted[0])
299 assert(NULL !=
results.data.area);
300 const auto& thermal =
results.data.area->thermal;
303 for (
auto& cluster: thermal.list.each_enabled())
306 results.variableCaption = cluster->name();
308 pValuesForTheCurrentYear[numSpace][cluster->enabledIndex]
309 .template buildAnnualSurveyReport<VCardType>(
results, fileLevel, precision);
316 typename VCardType::IntermediateValuesType pValuesForTheCurrentYear;
317 size_t pNbClustersOfArea;
318 unsigned int pNbYearsParallel;