95 :
public Variable::IVariable<BindingConstMarginCost<NextT>, NextT, VCardBindingConstMarginCost>
116 template<
int CDataLevel,
int CFile>
132 void simulationBegin()
134 NextType::simulationBegin();
139 NextType::simulationEnd();
144 pNbYearsParallel = study.maxNbYearsInParallel;
150 pValuesForTheCurrentYear.resize(pNbYearsParallel);
151 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; numSpace++)
153 pValuesForTheCurrentYear[numSpace].initializeFromStudy(study);
156 NextType::initializeFromStudy(study);
162 VariableAccessorType::InitializeAndReset(
results, study);
165 void setAssociatedBindConstraint(std::shared_ptr<Data::BindingConstraint> bc_ptr)
167 associatedBC_ = bc_ptr;
170 void setBindConstraintsCount(uint bcCount)
175 size_t getMaxNumberColumns()
const
180 void yearBegin(
unsigned int year,
unsigned int numSpace)
183 pValuesForTheCurrentYear[numSpace].reset();
186 NextType::yearBegin(year, numSpace);
189 void yearEnd(
unsigned int year,
unsigned int numSpace)
195 using namespace Data;
196 switch (associatedBC_->type())
198 case BindingConstraint::typeHourly:
199 pValuesForTheCurrentYear[numSpace].computeAveragesForCurrentYearFromHourlyResults();
201 case BindingConstraint::typeDaily:
202 pValuesForTheCurrentYear[numSpace].computeAveragesForCurrentYearFromDailyResults();
204 case BindingConstraint::typeWeekly:
205 pValuesForTheCurrentYear[numSpace].computeAveragesForCurrentYearFromWeeklyResults();
207 case BindingConstraint::typeUnknown:
208 case BindingConstraint::typeMax:
214 NextType::yearEnd(year, numSpace);
217 void computeSummary(std::map<unsigned int, unsigned int>& numSpaceToYear,
218 unsigned int nbYearsForCurrentSummary)
220 for (
unsigned int numSpace = 0; numSpace < nbYearsForCurrentSummary; ++numSpace)
224 pValuesForTheCurrentYear[numSpace]);
228 NextType::computeSummary(numSpaceToYear, nbYearsForCurrentSummary);
231 void weekBegin(
State& state)
235 auto numSpace = state.numSpace;
237 using namespace Data;
238 switch (associatedBC_->type())
240 case BindingConstraint::typeHourly:
241 case BindingConstraint::typeUnknown:
242 case BindingConstraint::typeMax:
245 case BindingConstraint::typeDaily:
247 int dayInTheYear = state.weekInTheYear * 7;
248 for (
int dayInTheWeek = 0; dayInTheWeek < 7; dayInTheWeek++)
250 pValuesForTheCurrentYear[numSpace].day[dayInTheYear]
251 -= state.problemeHebdo
252 ->ResultatsContraintesCouplantes[associatedBC_][dayInTheWeek];
260 case BindingConstraint::typeWeekly:
262 uint weekInTheYear = state.weekInTheYear;
263 double weeklyValue = -state.problemeHebdo
264 ->ResultatsContraintesCouplantes[associatedBC_][0];
266 pValuesForTheCurrentYear[numSpace].week[weekInTheYear] = weeklyValue;
268 int dayInTheYear = state.weekInTheYear * 7;
269 for (
int dayInTheWeek = 0; dayInTheWeek < 7; dayInTheWeek++)
271 pValuesForTheCurrentYear[numSpace].day[dayInTheYear] = weeklyValue;
278 NextType::weekBegin(state);
281 void hourBegin(
unsigned int hourInTheYear)
284 NextType::hourBegin(hourInTheYear);
287 void hourForEachArea(
State& state,
unsigned int numSpace)
289 NextType::hourForEachArea(state, numSpace);
292 void weekForEachArea(
State& state,
unsigned int numSpace)
294 NextType::weekForEachArea(state, numSpace);
297 template<
class VCardToFindT>
302 NextType::template retrieveResultsForArea<VCardToFindT>(result, area);
305 void buildDigest(SurveyResults&
results,
int digestLevel,
int dataLevel)
const
307 NextType::buildDigest(
results, digestLevel, dataLevel);
311 static void simulationEndSpatialAggregates(V& allVars)
313 NextType::template simulationEndSpatialAggregates<V>(allVars);
317 static void computeSpatialAggregatesSummary(
319 std::map<unsigned int, unsigned int>& numSpaceToYear,
320 unsigned int nbYearsForCurrentSummary)
322 NextType::template computeSpatialAggregatesSummary<V>(allVars,
324 nbYearsForCurrentSummary);
327 void beforeYearByYearExport(uint year, uint numSpace)
329 NextType::beforeYearByYearExport(year, numSpace);
332 template<
class SearchVCardT,
class O>
333 static void computeSpatialAggregateWith(O& out,
const Data::Area* area, uint numSpace)
335 NextType::template computeSpatialAggregateWith<SearchVCardT, O>(out, area, numSpace);
338 template<
class VCardToFindT>
342 NextType::template retrieveResultsForLink<VCardToFindT>(result, link);
345 template<
class VCardToFindT>
346 static void retrieveResultsForThermalCluster(
350 NextType::template retrieveResultsForThermalCluster<VCardToFindT>(result, cluster);
353 void hourEnd(
State& state,
unsigned int hourInTheYear)
357 auto numSpace = state.numSpace;
360 pValuesForTheCurrentYear[numSpace][hourInTheYear]
361 -= state.problemeHebdo
362 ->ResultatsContraintesCouplantes[associatedBC_][state.hourInTheWeek];
366 NextType::hourEnd(state, hourInTheYear);
369 Antares::Memory::Stored<double>::ConstReturnType retrieveRawHourlyValuesForCurrentYear(
371 unsigned int numSpace)
const
373 return pValuesForTheCurrentYear[numSpace].hour;
376 void localBuildAnnualSurveyReport(
380 unsigned int numSpace)
const
382 if (!(precision & associatedBC_->yearByYearFilter()))
388 results.isCurrentVarNA[0] = isCurrentOutputNonApplicable(precision);
390 if (AncestorType::isPrinted[0])
393 results.variableCaption = getBindConstraintCaption();
395 pValuesForTheCurrentYear[numSpace]
396 .template buildAnnualSurveyReport<VCardType>(
results, fileLevel, precision);
400 void buildSurveyReport(SurveyResults&
results,
407 if (precision & associatedBC_->yearByYearFilter())
413 results.isPrinted = AncestorType::isPrinted;
414 results.isCurrentVarNA[0] = isCurrentOutputNonApplicable(precision);
415 results.variableCaption = getBindConstraintCaption();
417 VariableAccessorType::template BuildSurveyReport<VCardType>(
results,
425 NextType::buildSurveyReport(
results, dataLevel, fileLevel, precision);
431 std::string getBindConstraintCaption()
const
433 std::string mathOperator(
435 return std::string() + associatedBC_->name().c_str() +
" (" + mathOperator +
")";
440 return associatedBC_ !=
nullptr;
443 bool isCurrentOutputNonApplicable(
int precision)
const
445 using namespace Antares::Data;
450 switch (associatedBC_->type())
452 case BindingConstraint::typeUnknown:
453 case BindingConstraint::typeMax:
456 const auto precision_bc = 1 << (associatedBC_->type() - 1);
457 return precision < precision_bc;
464 typename VCardType::IntermediateValuesType pValuesForTheCurrentYear;
465 unsigned int pNbYearsParallel = 0;
466 std::shared_ptr<Data::BindingConstraint> associatedBC_ =
nullptr;