48 categoryFile = NextT::categoryFile | Variable::Category::FileLevel::allFile,
71 avgdata.initializeFromStudy(study);
73 NextType::initializeFromStudy(study);
84 void merge(uint year,
const IntermediateValues& rhs)
86 avgdata.merge(year, rhs);
88 NextType::merge(year, rhs);
91 template<
class S,
class VCardT>
92 void buildSurveyReport(SurveyResults& report,
98 if (!(fileLevel & Category::FileLevel::id))
102 case Category::hourly:
103 InternalExportValues<HOURS_PER_YEAR, VCardT, Category::hourly>(report,
107 case Category::daily:
108 InternalExportValues<DAYS_PER_YEAR, VCardT, Category::daily>(report, avgdata.daily);
110 case Category::weekly:
111 InternalExportValues<WEEKS_PER_YEAR, VCardT, Category::weekly>(report,
114 case Category::monthly:
115 InternalExportValues<MONTHS_PER_YEAR, VCardT, Category::monthly>(report,
118 case Category::annual:
119 InternalExportValues<1, VCardT, Category::annual>(report, avgdata.year.data());
124 NextType::template buildSurveyReport<S, VCardT>(report,
131 template<
class VCardT>
132 void buildDigest(SurveyResults& report,
int digestLevel,
int dataLevel)
const
134 const bool isCluster = (VCardT::categoryFileLevel & Category::FileLevel::de)
135 || (VCardT::categoryFileLevel & Category::FileLevel::de_res);
136 const bool isBindingConstraint = VCardT::categoryFileLevel & Category::FileLevel::bc;
137 const bool isDigest = digestLevel & Category::digestAllYears;
138 if ((dataLevel & Category::DataLevel::area || dataLevel & Category::DataLevel::setOfAreas)
139 && isDigest && !isCluster && !isBindingConstraint)
141 assert(report.data.columnIndex < report.maxVariables &&
"Column index out of bounds");
143 report.captions[0][report.data.columnIndex] = report.variableCaption;
144 report.captions[1][report.data.columnIndex] = report.variableUnit;
145 report.captions[2][report.data.columnIndex] = (report.variableCaption ==
"LOLP")
150 report.precision[report.data.columnIndex] = PrecisionToPrintfFormat<
151 VCardT::decimal>::Value();
153 report.values[report.data.columnIndex][report.data.rowIndex] = avgdata.allYears;
155 report.digestNonApplicableStatus[report.data.rowIndex][report.data.columnIndex]
156 = *report.isCurrentVarNA;
158 ++(report.data.columnIndex);
161 NextType::template buildDigest<VCardT>(report, digestLevel, dataLevel);
164 template<
template<
class,
int>
class DecoratorT>
165 Antares::Memory::Stored<double>::ConstReturnType hourlyValuesForSpatialAggregate()
const
167 if (Yuni::Static::Type::StrictlyEqual<DecoratorT<Empty, 0>, Average<Empty, 0>>::Yes)
169 return avgdata.hourly;
171 return NextType::template hourlyValuesForSpatialAggregate<DecoratorT>();
178 template<u
int Size,
class VCardT,
int PrecisionT>
179 void InternalExportValues(SurveyResults& report,
const double* array)
const
182 assert(report.data.columnIndex < report.maxVariables &&
"Column index out of bounds");
185 report.captions[0][report.data.columnIndex] = report.variableCaption;
186 report.captions[1][report.data.columnIndex] = report.variableUnit;
187 report.captions[2][report.data.columnIndex] = (report.variableCaption ==
"LOLP") ?
"values"
190 report.precision[report.data.columnIndex] = PrecisionToPrintfFormat<
191 VCardT::decimal>::Value();
193 report.nonApplicableStatus[report.data.columnIndex] = *report.isCurrentVarNA;
198 case Category::annual:
200 double& target = *(report.values[report.data.columnIndex]);
202 for (uint i = 0; i != avgdata.nbYearsCapacity; ++i)
206 avgdata.allYears = target;
210 (void)::memcpy(report.values[report.data.columnIndex], array,
sizeof(
double) * Size);
215 ++report.data.columnIndex;