21 #ifndef __ANTARES_SOLVER_timeSeries_GENERATOR_HXX__
22 #define __ANTARES_SOLVER_timeSeries_GENERATOR_HXX__
24 #include <antares/logs/logs.h>
26 namespace Antares::TSGenerator
31 bool GenerateHydroTimeSeries(Data::Study& study, IResultWriter& writer);
34 inline bool GenerateTimeSeries<Data::timeSeriesHydro>(Data::Study& study, IResultWriter& writer)
36 return GenerateHydroTimeSeries(study, writer);
40 template<enum Data::TimeSeriesType T>
41 bool GenerateTimeSeries(Data::Study& study, IResultWriter& writer)
43 auto* xcast =
reinterpret_cast<XCast::XCast*
>(
44 study.cacheTSGenerator[Data::TimeSeriesBitPatternIntoIndex<T>::value]);
48 logs.debug() <<
"Preparing the " << Data::TimeSeriesToCStr<T>::Value() <<
" TS Generator";
49 xcast =
new XCast::XCast(study, T, writer);
50 study.cacheTSGenerator[Data::TimeSeriesBitPatternIntoIndex<T>::value] = xcast;
58 case Data::timeSeriesLoad:
59 xcast->random = &(study.runtime.random[Data::seedTsGenLoad]);
61 case Data::timeSeriesSolar:
62 xcast->random = &(study.runtime.random[Data::seedTsGenSolar]);
64 case Data::timeSeriesWind:
65 xcast->random = &(study.runtime.random[Data::seedTsGenWind]);
67 case Data::timeSeriesHydro:
68 xcast->random = &(study.runtime.random[Data::seedTsGenHydro]);
71 xcast->random =
nullptr;
72 assert(
false and
"invalid ts type");
76 bool r = xcast->run();
83 template<Data::TimeSeriesType T>
84 void Destroy(Data::Study& study)
86 auto* xcast =
reinterpret_cast<XCast::XCast*
>(
87 study.cacheTSGenerator[Data::TimeSeriesBitPatternIntoIndex<T>::value]);
93 logs.info() <<
" Releasing the " << Data::TimeSeriesToCStr<T>::Value() <<
" TS Generator";
94 study.cacheTSGenerator[Data::TimeSeriesBitPatternIntoIndex<T>::value] =
nullptr;
95 study.destroyTSGeneratorData<T>();