115 template<
int CDataLevel,
int CFile>
131 pNbYearsParallel = study.maxNbYearsInParallel;
138 pValuesForTheCurrentYear.resize(pNbYearsParallel);
139 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
141 pValuesForTheCurrentYear[numSpace].initializeFromStudy(study);
145 NextType::initializeFromStudy(study);
151 NextType::initializeFromArea(study, area);
157 NextType::initializeFromAreaLink(study, link);
160 void simulationBegin()
162 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
164 pValuesForTheCurrentYear[numSpace].reset();
167 NextType::simulationBegin();
172 NextType::simulationEnd();
175 void yearBegin(uint year,
unsigned int numSpace)
178 pValuesForTheCurrentYear[numSpace].reset();
180 NextType::yearBegin(year, numSpace);
183 void yearEndBuild(
State& state,
unsigned int year,
unsigned int numSpace)
186 NextType::yearEndBuild(state, year, numSpace);
189 void yearEnd(
unsigned int year,
unsigned int numSpace)
192 pValuesForTheCurrentYear[numSpace].computeStatisticsForTheCurrentYear();
195 NextType::yearEnd(year, numSpace);
198 void computeSummary(std::map<unsigned int, unsigned int>& numSpaceToYear,
199 unsigned int nbYearsForCurrentSummary)
201 for (
unsigned int numSpace = 0; numSpace < nbYearsForCurrentSummary; ++numSpace)
205 pValuesForTheCurrentYear[numSpace]);
209 NextType::computeSummary(numSpaceToYear, nbYearsForCurrentSummary);
212 void hourForEachArea(
State& state,
unsigned int numSpace)
215 NextType::hourForEachArea(state, numSpace);
218 void hourForEachLink(
State& state,
unsigned int numSpace)
221 if (state.link->useHurdlesCost)
223 const double flowLinear = state.ntc.ValeurDuFlux[state.link->index];
225 if (state.link->useLoopFlow)
227 const double loopFlow = state.problemeHebdo->ValeursDeNTC[state.hourInTheWeek]
228 .ValeurDeLoopFlowOrigineVersExtremite[state.link->index];
229 if (flowLinear - loopFlow > 0.)
231 const double hurdleCostDirect = (flowLinear - loopFlow)
232 * state.link->parameters
233 .entry[Data::fhlHurdlesCostDirect]
234 [state.hourInTheYear];
235 pValuesForTheCurrentYear[numSpace].hour[state.hourInTheYear]
238 state.annualSystemCost += hurdleCostDirect;
242 const double hurdleCostIndirect = -(flowLinear - loopFlow)
243 * state.link->parameters
244 .entry[Data::fhlHurdlesCostIndirect]
245 [state.hourInTheYear];
246 pValuesForTheCurrentYear[numSpace].hour[state.hourInTheYear]
247 += hurdleCostIndirect;
250 state.annualSystemCost += hurdleCostIndirect;
257 const double hurdleCostDirect = flowLinear
258 * state.link->parameters
259 .entry[Data::fhlHurdlesCostDirect]
260 [state.hourInTheYear];
261 pValuesForTheCurrentYear[numSpace].hour[state.hourInTheYear]
264 state.annualSystemCost += hurdleCostDirect;
268 const double hurdleCostIndirect = -flowLinear
269 * state.link->parameters
270 .entry[Data::fhlHurdlesCostIndirect]
271 [state.hourInTheYear];
272 pValuesForTheCurrentYear[numSpace].hour[state.hourInTheYear]
273 += hurdleCostIndirect;
276 state.annualSystemCost += hurdleCostIndirect;
281 NextType::hourForEachLink(state, numSpace);
284 void buildDigest(SurveyResults&
results,
int digestLevel,
int dataLevel)
const
287 NextType::buildDigest(
results, digestLevel, dataLevel);
290 Antares::Memory::Stored<double>::ConstReturnType retrieveRawHourlyValuesForCurrentYear(
292 unsigned int numSpace)
const
294 return pValuesForTheCurrentYear[numSpace].hour;
297 void localBuildAnnualSurveyReport(SurveyResults&
results,
300 unsigned int numSpace)
const
303 results.isCurrentVarNA = AncestorType::isNonApplicable;
305 if (AncestorType::isPrinted[0])
310 pValuesForTheCurrentYear[numSpace]
311 .template buildAnnualSurveyReport<VCardType>(
results, fileLevel, precision);
317 typename VCardType::IntermediateValuesType pValuesForTheCurrentYear;
318 unsigned int pNbYearsParallel;