72 #include <string_view>
75 #include <antares/study/area/area.h>
76 #include "antares/solver/variable/variable.h"
78 namespace Antares::Solver::Variable::Economy
96 template<
typename Derived>
100 static constexpr std::string_view
kUnit =
"MWh";
110 & (Category::FileLevel::id
111 | Category::FileLevel::va);
145 template<
typename TraitsType>
154 inline static constexpr std::string_view
kCaption = TraitsType::kCaption;
156 inline static constexpr std::string_view kDescription = TraitsType::kDescription;
175 return std::string(kUnit);
184 return std::string(kDescription);
194 using IntermediateValuesTypeForSpatialAg =
typename BaseType::
213 template<
class VCard,
class Next,
int CDataLevel,
int CFile>
215 && VCard::categoryFileLevel & CFile)
216 ? (Next::template Statistics<CDataLevel, CFile>::count
217 + VCard::columnCount * VCard::ResultsType::count)
218 : Next::template Statistics<CDataLevel, CFile>::count);
261 template<
typename Derived,
typename NextT,
typename VCardType>
267 using NextType = NextT;
269 using ResultsType =
typename VCardType::ResultsType;
274 static constexpr
int count = 1 + NextT::count;
281 template<
int CDataLevel,
int CFile>
284 static constexpr
int count = detail::
285 StatisticsCount<VCardType, NextType, CDataLevel, CFile>;
312 [&study](
auto& value) { value.initializeFromStudy(study); });
315 static_cast<Derived*
>(
this)->initializeDerivedFromStudy(study);
317 NextType::initializeFromStudy(study);
329 VariableAccessorType::InitializeAndReset(
results, study);
340 NextType::initializeFromArea(study, area);
350 NextType::initializeFromAreaLink(study, link);
360 NextType::simulationBegin();
368 NextType::simulationEnd();
378 static_cast<Derived*
>(
this)->yearBeginImpl(year, space);
379 NextType::yearBegin(year, space);
390 NextType::yearEndBuild(state, year, space);
398 void yearEnd(
unsigned int year,
unsigned int space)
400 yearlyValues[space].computeStatisticsForTheCurrentYear();
401 NextType::yearEnd(year, space);
412 NextType::computeSummary(year, space);
421 NextType::hourBegin(hourInTheYear);
432 static_cast<Derived*
>(
this)->hourForEachAreaImpl(state, space);
433 NextType::hourForEachArea(state, space);
443 NextType::hourEnd(state, hourInTheYear);
454 unsigned int space)
const noexcept
469 unsigned int space)
const
471 results.isCurrentVarNA = AncestorType::isNonApplicable;
472 if (AncestorType::isPrinted[0])
474 results.variableCaption = VCardType::kCaption.data();
475 results.variableUnit = std::string(VCardType::kUnit);
Definition of a link between two areas (Interconnection)
Definition: links.h:58
Definition for a single area.
Definition: area.h:51
Base implementation for time series variables using CRTP pattern.
Definition: timeseries_base.h:263
void simulationEnd()
Cleanup at the end of simulation.
Definition: timeseries_base.h:366
void localBuildAnnualSurveyReport(SurveyResults &results, int fileLevel, int precision, unsigned int space) const
Build annual survey report for output.
Definition: timeseries_base.h:466
unsigned int nbYearsParallel
Number of parallel years (cached for performance)
Definition: timeseries_base.h:491
void hourBegin(unsigned int hourInTheYear)
Setup at the beginning of each hour.
Definition: timeseries_base.h:419
void hourEnd(State &state, unsigned int hourInTheYear)
Cleanup at the end of each hour.
Definition: timeseries_base.h:441
VCardType::IntermediateValuesType yearlyValues
Intermediate values for each parallel space.
Definition: timeseries_base.h:488
void hourForEachArea(State &state, unsigned int space)
Process data for each area during an hour.
Definition: timeseries_base.h:430
void initializeFromArea(Data::Study *study, Data::Area *area) noexcept
Associate this variable with a specific area.
Definition: timeseries_base.h:337
void yearEndBuild(State &state, unsigned int year, unsigned int space)
Post-processing after year end build.
Definition: timeseries_base.h:388
void yearEnd(unsigned int year, unsigned int space)
Finalize year and compute statistics.
Definition: timeseries_base.h:398
void initializeFromLink(Data::Study *study, Data::AreaLink *link)
Initialize from link (for link-based variables)
Definition: timeseries_base.h:348
void computeSummary(unsigned int year, unsigned int space)
Merge year results into global summary.
Definition: timeseries_base.h:409
void simulationBegin()
Reset state at the beginning of simulation.
Definition: timeseries_base.h:357
void initializeFromStudy(Data::Study &study)
Initialize the variable from study configuration.
Definition: timeseries_base.h:300
Antares::Memory::Stored< double >::ConstReturnType retrieveRawHourlyValuesForCurrentYear(unsigned int, unsigned int space) const noexcept
Retrieve raw hourly values for the current year.
Definition: timeseries_base.h:452
void yearBegin(unsigned int year, unsigned int space)
Setup at the beginning of each year.
Definition: timeseries_base.h:376
static void InitializeResultsFromStudy(R &results, Data::Study &study)
Static helper to initialize results from study.
Definition: timeseries_base.h:327
static constexpr int count
Total count of variables in the chain.
Definition: timeseries_base.h:274
Interface for any variable.
Definition: variable.h:47
const StoredResultType & results() const
The results.
Definition: variable.hxx:544
StoredResultType pResults
All the results about this variable.
Definition: variable.h:323
Class utility for building CSV results files.
Definition: surveyresults.h:41
constexpr int StatisticsCount
Compile-time calculation of statistics count.
Definition: timeseries_base.h:214
Base traits template providing common properties for all time series variables.
Definition: timeseries_base.h:98
static constexpr uint8_t categoryDataLevel
Data aggregation level (area-based)
Definition: timeseries_base.h:107
static constexpr uint8_t decimal
Decimal precision for display.
Definition: timeseries_base.h:117
static constexpr uint8_t isPossiblyNonApplicable
Whether variable can be non-applicable.
Definition: timeseries_base.h:129
static constexpr uint8_t nodeDepthForGUI
GUI indentation level.
Definition: timeseries_base.h:115
static constexpr uint8_t precision
Precision settings for output.
Definition: timeseries_base.h:113
static constexpr uint8_t categoryFileLevel
File output level configuration.
Definition: timeseries_base.h:109
Results< R::AllYears::Average< R::AllYears::StdDeviation< R::AllYears::Min< R::AllYears::Max<> >> >> ResultsType
Results configuration: Average, StdDev, Min, Max across all years.
Definition: timeseries_base.h:104
static constexpr uint8_t spatialAggregate
Spatial aggregation method (sum across areas)
Definition: timeseries_base.h:121
static constexpr uint8_t spatialAggregateMode
Spatial aggregation mode (each year separately)
Definition: timeseries_base.h:123
static constexpr uint8_t spatialAggregatePostProcessing
Post-processing for spatial aggregation.
Definition: timeseries_base.h:125
static constexpr uint8_t hasIntermediateValues
Whether intermediate values are computed.
Definition: timeseries_base.h:127
IntermediateValues IntermediateValuesBaseType
Base type for intermediate values storage.
Definition: timeseries_base.h:132
static constexpr int columnCount
Number of columns in output (typically 1 for time series)
Definition: timeseries_base.h:119
std::vector< IntermediateValues > IntermediateValuesType
Container for intermediate values (one per parallel space)
Definition: timeseries_base.h:134
std::unique_ptr< IntermediateValuesBaseType[]> IntermediateValuesTypeForSpatialAg
Pointer type for spatial aggregation.
Definition: timeseries_base.h:136
static constexpr std::string_view kUnit
Unit for all time series variables.
Definition: timeseries_base.h:100
Compile-time statistics calculation.
Definition: timeseries_base.h:283
VCard template providing variable metadata and configuration.
Definition: timeseries_base.h:147
static std::string Caption()
Get variable caption as std::string.
Definition: timeseries_base.h:164
static std::string Unit()
Get variable unit as std::string.
Definition: timeseries_base.h:173
static std::string Description()
Get variable description as std::string.
Definition: timeseries_base.h:182
static constexpr std::string_view kCaption
Modern C++20 API: compile-time string views.
Definition: timeseries_base.h:154