96 IVariable<ProductionByDispatchablePlant<NextT>, NextT, VCardProductionByDispatchablePlant>
118 template<
int CDataLevel,
int CFile>
133 pminOfTheClusterForYear(nullptr),
140 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
142 delete[] pminOfTheClusterForYear[numSpace];
144 delete[] pminOfTheClusterForYear;
150 NextType::initializeFromStudy(study);
156 pNbYearsParallel = study->maxNbYearsInParallel;
157 pValuesForTheCurrentYear.resize(pNbYearsParallel);
158 pminOfTheClusterForYear =
new double*[pNbYearsParallel];
161 pSize = area->thermal.list.enabledCount();
166 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
168 pValuesForTheCurrentYear[numSpace].resize(pSize);
175 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
177 pminOfTheClusterForYear[numSpace] =
new double[pSize * HOURS_PER_YEAR];
180 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
182 for (
unsigned int i = 0; i != pSize; ++i)
184 pValuesForTheCurrentYear[numSpace][i].initializeFromStudy(*study);
188 for (
unsigned int i = 0; i != pSize; ++i)
196 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
198 pminOfTheClusterForYear[numSpace] =
nullptr;
204 NextType::initializeFromArea(study, area);
207 size_t getMaxNumberColumns()
const
215 NextType::initializeFromAreaLink(study, link);
218 void simulationBegin()
221 NextType::simulationBegin();
226 NextType::simulationEnd();
229 void yearBegin(
unsigned int year,
unsigned int numSpace)
232 for (
unsigned int i = 0; i != pSize; ++i)
234 pValuesForTheCurrentYear[numSpace][i].reset();
236 for (
unsigned int j = 0; j != HOURS_PER_YEAR; ++j)
238 pminOfTheClusterForYear[numSpace][i * HOURS_PER_YEAR + j] = 0;
242 NextType::yearBegin(year, numSpace);
245 void yearEndBuildPrepareDataForEachThermalCluster(
State& state,
247 unsigned int numSpace)
249 for (
unsigned int i = 0; i <= state.study.runtime.rangeLimits.hour[Data::rangeEnd]; ++i)
251 state.thermalClusterProductionForYear[i] += pValuesForTheCurrentYear
253 [state.thermalCluster->enabledIndex]
255 state.thermalClusterPMinOfTheClusterForYear[i] += pminOfTheClusterForYear
256 [numSpace][(state.thermalCluster->enabledIndex * HOURS_PER_YEAR) + i];
260 NextType::yearEndBuildPrepareDataForEachThermalCluster(state, year, numSpace);
263 void yearEndBuild(
State& state,
unsigned int year,
unsigned int numSpace)
266 NextType::yearEndBuild(state, year, numSpace);
269 void yearEnd(
unsigned int year,
unsigned int numSpace)
273 for (
unsigned int i = 0; i < pSize; ++i)
276 pValuesForTheCurrentYear[numSpace][i].computeStatisticsForTheCurrentYear();
280 NextType::yearEnd(year, numSpace);
283 void computeSummary(std::map<unsigned int, unsigned int>& numSpaceToYear,
284 unsigned int nbYearsForCurrentSummary)
286 for (
unsigned int numSpace = 0; numSpace < nbYearsForCurrentSummary; ++numSpace)
288 for (
unsigned int i = 0; i < pSize; ++i)
292 pValuesForTheCurrentYear[numSpace][i]);
297 NextType::computeSummary(numSpaceToYear, nbYearsForCurrentSummary);
300 void hourBegin(
unsigned int hourInTheYear)
303 NextType::hourBegin(hourInTheYear);
306 void hourForEachArea(
State& state,
unsigned int numSpace)
308 auto& area = state.area;
309 auto& thermal = state.thermal;
310 for (
auto& cluster: area->thermal.list.each_enabled())
313 pValuesForTheCurrentYear[numSpace][cluster->enabledIndex].hour[state.hourInTheYear]
314 += thermal[area->index].thermalClustersProductions[cluster->enabledIndex];
316 pminOfTheClusterForYear[numSpace]
317 [(cluster->enabledIndex * HOURS_PER_YEAR) + state.hourInTheYear]
318 = thermal[area->index].PMinOfClusters[cluster->enabledIndex];
322 NextType::hourForEachArea(state, numSpace);
325 inline void buildDigest(SurveyResults& results,
int digestLevel,
int dataLevel)
const
328 NextType::buildDigest(results, digestLevel, dataLevel);
331 Antares::Memory::Stored<double>::ConstReturnType retrieveRawHourlyValuesForCurrentYear(
333 unsigned int numSpace)
const
335 return pValuesForTheCurrentYear[numSpace][column].hour;
338 void localBuildAnnualSurveyReport(SurveyResults& results,
341 unsigned int numSpace)
const
344 results.isCurrentVarNA = AncestorType::isNonApplicable;
346 if (AncestorType::isPrinted[0])
348 assert(NULL != results.data.area);
349 const auto& thermal = results.data.area->thermal;
352 for (
auto& cluster: thermal.list.each_enabled())
355 results.variableCaption = cluster->name();
357 pValuesForTheCurrentYear[numSpace][cluster->enabledIndex]
358 .template buildAnnualSurveyReport<VCardType>(results, fileLevel, precision);
365 typename VCardType::IntermediateValuesType pValuesForTheCurrentYear;
366 double** pminOfTheClusterForYear;
368 unsigned int pNbYearsParallel;