21 #ifndef ANTARES_WINDOWS_INSPECTOR_ACCUMULATOR_HXX__
22 #define ANTARES_WINDOWS_INSPECTOR_ACCUMULATOR_HXX__
24 #include <antares/study/filter.h>
26 #include "constants.h"
28 namespace Antares::Window::Inspector
33 static bool Apply(T& value,
const T& item)
35 return (value == item);
42 static bool Apply(T& value,
const T& item)
49 template<
class PredicateT,
class TraitsT = Unique>
54 static void Apply(wxPGProperty* property,
const ListT& list)
56 assert(list.size() != 0);
57 assert(property != NULL);
60 auto study = *list.begin();
61 property->SetValueFromString(PredicateT::ConvertToString(PredicateT::Value(study)));
65 auto i = list.cbegin();
66 const auto end = list.cend();
67 typename PredicateT::Type value = PredicateT::Value(*i);
71 if (!TraitsT::Apply(value, PredicateT::Value(*i)))
73 property->SetValueToUnspecified();
77 property->SetValueFromString(PredicateT::ConvertToString(value));
82 template<
class PredicateT>
87 static void ApplyTextColor(wxPGProperty* property,
const ListT& list)
89 assert(list.size() != 0);
90 assert(property != NULL);
93 auto study = *list.begin();
94 property->GetGrid()->SetPropertyTextColour(property->GetBaseName(),
95 PredicateT::TextColor(study));
99 auto i = list.cbegin();
100 const auto end = list.cend();
102 for (; i != end; ++i)
104 property->GetGrid()->SetPropertyTextColour(property->GetBaseName(),
105 PredicateT::TextColor(*i));
110 template<
class ListT>
111 static void ApplyGreyColor(wxPGProperty* property_MargCost,
112 wxPGProperty* property_OperCost,
113 wxPGProperty* property_FuelEff,
114 wxPGProperty* property_VarOMcost,
117 assert(list.size() != 0);
118 assert(property_MargCost != NULL);
119 assert(property_OperCost != NULL);
120 assert(property_FuelEff != NULL);
121 assert(property_VarOMcost != NULL);
122 if (list.size() == 1)
124 auto study = *list.begin();
125 property_MargCost->GetGrid()->EnableProperty(property_MargCost->GetBaseName(),
126 PredicateT::Enable(study));
127 property_OperCost->GetGrid()->EnableProperty(property_OperCost->GetBaseName(),
128 PredicateT::Enable(study));
129 property_FuelEff->GetGrid()->EnableProperty(property_FuelEff->GetBaseName(),
130 !PredicateT::Enable(study));
131 property_VarOMcost->GetGrid()->EnableProperty(property_VarOMcost->GetBaseName(),
132 !PredicateT::Enable(study));
136 auto i = list.cbegin();
137 const auto end = list.cend();
139 for (; i != end; ++i)
141 property_MargCost->GetGrid()->EnableProperty(property_MargCost->GetBaseName(),
142 PredicateT::Enable(*i));
143 property_OperCost->GetGrid()->EnableProperty(property_OperCost->GetBaseName(),
144 PredicateT::Enable(*i));
145 property_FuelEff->GetGrid()->EnableProperty(property_FuelEff->GetBaseName(),
146 !PredicateT::Enable(*i));
147 property_VarOMcost->GetGrid()->EnableProperty(property_VarOMcost->GetBaseName(),
148 !PredicateT::Enable(*i));
158 Color(
const int c[3])
167 bool operator==(
const Color& rhs)
const
169 return rhs.color[0] == color[0] && rhs.color[1] == color[1] && rhs.color[2] == color[2];
177 return Color(area->ui->color);
180 static wxString ConvertToString(
const Type v)
182 return wxString() << wxT(
"(") << v.color[0] << wxT(
',') << v.color[1] << wxT(
',')
183 << v.color[2] << wxT(
")");
189 using Type = Data::SimulationMode;
191 static Type Value(
const Data::Study::Ptr& study)
193 return (!(!study) ? study->parameters.mode : Data::SimulationMode::Economy);
196 static wxString ConvertToString(
const Type v)
200 case Data::SimulationMode::Economy:
201 return wxT(
"Economy");
202 case Data::SimulationMode::Adequacy:
203 return wxT(
"Adequacy");
204 case Data::SimulationMode::Expansion:
205 return wxT(
"Expansion");
206 case Data::SimulationMode::Unknown:
207 return wxEmptyString;
209 return wxEmptyString;
217 static Type Value(
const Data::Study::Ptr& study)
221 auto& parameters = study->parameters;
222 if (parameters.derated)
226 if (parameters.useCustomScenario)
234 static wxString ConvertToString(
const Type v)
239 return wxT(
"Automatic");
241 return wxT(
"Custom");
243 return wxT(
"Derated");
245 return wxT(
"Automatic");
253 static Type Value(
const Data::Study::Ptr& study)
255 return !study ? 0 : (uint)study->parameters.firstMonthInYear;
258 static wxString ConvertToString(
const Type v)
262 return calendarMonths[v];
264 return wxT(
"invalid");
272 static Type Value(
const Data::Study::Ptr& study)
274 return !study ? false : study->parameters.leapYear;
277 static wxString ConvertToString(
const Type v)
279 return v ? wxT(
"true") : wxT(
"false");
287 static Type Value(
const Data::Study::Ptr& study)
289 return !study ? (uint)Antares::monday : (uint)study->parameters.firstWeekday;
292 static wxString ConvertToString(
const Type v)
296 return calendarWeeks[v];
298 return wxT(
"invalid");
306 static Type Value(
const Data::Study::Ptr& study)
308 return !(!study) ? study->parameters.userPlaylist :
false;
311 static wxString ConvertToString(
const Type v)
316 return wxT(
"Automatic");
318 return wxT(
"Custom");
320 return wxT(
"Automatic");
328 static Type Value(
const Data::Study::Ptr& study)
330 return !(!study) ? study->parameters.yearByYear :
false;
333 static wxString ConvertToString(
const Type v)
335 return v ? wxT(
"True") : wxT(
"False");
343 static Type Value(
const Data::Study::Ptr& study)
345 return !(!study) ? study->parameters.synthesis :
false;
348 static wxString ConvertToString(
const Type v)
350 return v ? wxT(
"True") : wxT(
"False");
358 static Type Value(
const Data::Study::Ptr& study)
360 return !(!study) ? study->parameters.geographicTrimming :
false;
363 static wxString ConvertToString(
const Type v)
365 return (!v) ? wxT(
"None") : wxT(
"Custom");
373 static Type Value(
const Data::Study::Ptr& study)
375 return !(!study) ? study->parameters.thematicTrimming :
false;
378 static wxString ConvertToString(
const Type v)
380 return (!v) ? wxT(
"None") : wxT(
"Custom");
388 static Type Value(
const Data::Study::Ptr& study)
390 return !(!study) ? study->parameters.storeTimeseriesNumbers :
false;
393 static wxString ConvertToString(
const Type v)
395 return v ? wxT(
"True") : wxT(
"False");
401 using Type = wxString;
403 static Type Value(
const Data::Study::Ptr& study)
405 return wxString() << ((!(!study) ? study->parameters.simulationDays.first : 0) + 1);
408 static wxString ConvertToString(
const Type v)
418 static Type Value(
const Data::Study::Ptr& study)
420 return !(!study) ? study->parameters.simulationDays.end : 8760;
423 static wxString ConvertToString(
const Type v)
425 return wxString() << v;
433 static Type Value(
const Data::Study::Ptr& study)
435 return !(!study) ? study->parameters.nbYears : 1;
438 static wxString ConvertToString(
const Type v)
440 return wxString() << v;
448 static Type Value(
const Data::Study::Ptr& study)
450 return !(!study) ? study->parameters.horizon : Type();
453 static wxString ConvertToString(
const Type v)
455 return wxStringFromUTF8(v);
461 using Type = Antares::DayOfTheWeek;
463 static Type Value(
const Data::Study::Ptr& study)
465 return !study ? Antares::monday : study->parameters.dayOfThe1stJanuary;
468 static wxString ConvertToString(
const Type v)
470 return wxStringFromUTF8(Antares::Date::DayOfTheWeekToString(v));
474 template<
bool Orientation>
477 using Type = wxString;
483 return wxStringFromUTF8(link->from->name);
487 return wxStringFromUTF8(link->with->name);
491 static wxString ConvertToString(
const Type v)
503 return link->useHurdlesCost;
506 static wxString ConvertToString(
const Type v)
508 return v ? wxT(
"True") : wxT(
"False");
521 static wxString ConvertToString(
const Type v)
523 return v ? wxT(
"True") : wxT(
"False");
533 return link->useLoopFlow;
536 static wxString ConvertToString(
const Type v)
538 return v ? wxT(
"True") : wxT(
"False");
548 return link->displayComments;
551 static wxString ConvertToString(
const Type v)
553 return v ? wxT(
"True") : wxT(
"False");
559 using Type = wxString;
563 return wxStringFromUTF8(link->comments);
566 static wxString ConvertToString(
const Type v)
581 static wxString ConvertToString(
const Type v)
612 return Math::MinMax(link->linkWidth, 1, 6);
615 static wxString ConvertToString(
const Type v)
617 return DoubleToWxString(v);
625 Color(
const int c[3])
634 bool operator==(
const Color& rhs)
const
636 return rhs.color[0] == color[0] && rhs.color[1] == color[1] && rhs.color[2] == color[2];
644 return Color(link->color);
647 static wxString ConvertToString(
const Type v)
649 return wxString() << wxT(
"(") << v.color[0] << wxT(
',') << v.color[1] << wxT(
',')
650 << v.color[2] << wxT(
")");
660 return area->thermal.unsuppliedEnergyCost;
663 static wxString ConvertToString(
const Type v)
665 return DoubleToWxString(v);
671 using Type = Data::AdequacyPatch::AdequacyPatchMode;
675 return area->adequacyPatchMode;
678 static wxString ConvertToString(
const Type v)
682 case Data::AdequacyPatch::virtualArea:
683 return wxT(
"virtual area");
684 case Data::AdequacyPatch::physicalAreaOutsideAdqPatch:
685 return wxT(
"physical area outside patch");
686 case Data::AdequacyPatch::physicalAreaInsideAdqPatch:
687 return wxT(
"physical area inside patch");
689 return wxEmptyString;
693 template<enum Data::AreaNodalOptimization O>
700 return (0 != (area->nodalOptimization & O));
703 static wxString ConvertToString(
const Type v)
705 return (v) ? wxT(
"True") : wxT(
"False");
709 template<
bool SynthesisT, enum Data::FilterFlag F>
718 return (0 != (area->filterSynthesis & F));
722 return (0 != (area->filterYearByYear & F));
726 static wxString ConvertToString(
const Type v)
728 return (v) ? wxT(
"True") : wxT(
"False");
732 template<
bool SynthesisT, enum Data::FilterFlag F>
741 return (0 != (link->filterSynthesis & F));
745 return (0 != (link->filterYearByYear & F));
749 static wxString ConvertToString(
const Type v)
751 return (v) ? wxT(
"True") : wxT(
"False");
761 return area->thermal.spilledEnergyCost;
764 static wxString ConvertToString(
const Type v)
766 return DoubleToWxString(v);
779 return cluster->enabled;
782 static wxString ConvertToString(
const Type v)
784 return v ? wxT(
"True") : wxT(
"False");
794 return cluster->unitCount;
797 static wxString ConvertToString(
const Type v)
799 return wxString() << v;
812 static wxString ConvertToString(
const Type v)
814 return DoubleToWxString(v);
827 static wxString ConvertToString(
const Type v)
829 return DoubleToWxString(v);
835 using Type = wxString;
839 return wxStringFromUTF8(cluster->getGroup());
842 static wxString ConvertToString(
const Type v)
850 using Type = wxString;
857 static wxString ConvertToString(
const Type v)
872 return wxColor(255, 0, 0);
877 return wxColor(255, 0, 0);
880 return wxColour(86, 98, 115);
898 static wxString ConvertToString(
const Type v)
900 return v ? wxT(
"True") : wxT(
"False");
910 return cluster->emissions.factors[Antares::Data::Pollutant::CO2];
913 static wxString ConvertToString(
const Type v)
915 return DoubleToWxString(v);
928 static wxString ConvertToString(
const Type v)
930 return DoubleToWxString(v);
943 static wxString ConvertToString(
const Type v)
945 return DoubleToWxString(v);
958 static wxString ConvertToString(
const Type v)
960 return DoubleToWxString(v);
973 static wxString ConvertToString(
const Type v)
975 return DoubleToWxString(v);
985 return wxColor(255, 0, 0);
990 return wxColor(255, 0, 0);
993 return wxColour(86, 98, 115);
1004 using Type = double;
1011 static wxString ConvertToString(
const Type v)
1013 return DoubleToWxString(v);
1019 using Type = double;
1026 static wxString ConvertToString(
const Type v)
1028 return DoubleToWxString(v);
1041 static wxString ConvertToString(
const Type v)
1043 return (v < costgenerationCount) ? costgeneration[v] :
nullptr;
1049 using Type = double;
1056 static wxString ConvertToString(
const Type v)
1058 return DoubleToWxString(v);
1077 using Type = double;
1084 static wxString ConvertToString(
const Type v)
1086 return DoubleToWxString(v);
1092 using Type = double;
1099 static wxString ConvertToString(
const Type v)
1101 return DoubleToWxString(v);
1107 using Type = double;
1114 static wxString ConvertToString(
const Type v)
1116 return DoubleToWxString(v);
1122 using Type = double;
1129 static wxString ConvertToString(
const Type v)
1131 return DoubleToWxString(v);
1141 return wxColor(255, 0, 0);
1146 return wxColor(255, 0, 0);
1149 return wxColour(86, 98, 115);
1167 static wxString ConvertToString(
const Type v)
1169 return wxString() << v;
1182 static wxString ConvertToString(
const Type v)
1184 return wxString() << v;
1197 static wxString ConvertToString(
const Type v)
1199 return (v < LawCount) ? Laws[v] :
nullptr;
1212 static wxString ConvertToString(
const Type v)
1214 return (v < LawCount) ? Laws[v] :
nullptr;
1224 return (uint)cluster->tsGenBehavior;
1227 static wxString ConvertToString(
const Type v)
1229 return (v < localGenTSCount) ? localGenTS[v] :
nullptr;
1239 return cluster->tsMode;
1242 static wxString ConvertToString(
const Type v)
1244 return (v < renewableTSModeCount) ? renewableTSMode[v] :
nullptr;
1253 using Type = wxString;
1255 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1257 return wxStringFromUTF8(constraint->name());
1260 static wxString ConvertToString(
const Type v)
1268 using Type = wxString;
1270 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1272 return wxStringFromUTF8(constraint->comments());
1275 static wxString ConvertToString(
const Type v)
1285 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1287 return constraint->enabled();
1290 static wxString ConvertToString(
const Type v)
1292 return v ? wxT(
"True") : wxT(
"False");
1300 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1302 return constraint->type();
1305 static wxString ConvertToString(
const Type v)
Definition of a link between two areas (Interconnection)
Definition: links.h:58
Definition for a single area.
Definition: area.h:51
AreaName name
Name of the area.
Definition: area.h:212
Type
Definition: BindingConstraint.h:55
static const char * TypeToCString(Type t)
Convert a binding constraint type into a mere C-String.
Definition: BindingConstraint.cpp:107
double nominalCapacity
Capacity of reference per unit (MW) (pMax)
Definition: cluster.h:114
Area * parentArea
The associate area (alias)
Definition: cluster.h:111
A single thermal cluster.
Definition: cluster.h:76
double spinning
Spinning (%)
Definition: cluster.h:225
double marketBidCost
Market bid cost (euros/MWh)
Definition: cluster.h:283
uint minDownTime
Min. Down time (1..168)
Definition: cluster.h:219
StatisticalLaw plannedLaw
Law (ts-generator)
Definition: cluster.h:238
bool mustrun
Mustrun.
Definition: cluster.h:178
double spreadCost
Spread (euros/MWh)
Definition: cluster.h:277
double startupCost
Startup cost (euros/startup)
Definition: cluster.h:281
CostGeneration costgeneration
Cost generation.
Definition: cluster.h:273
double variableomcost
Variable O&M cost (euros/MWh)
Definition: cluster.h:285
double marginalCost
Marginal cost (euros/MWh)
Definition: cluster.h:275
double fuelEfficiency
Efficiency (%)
Definition: cluster.h:228
double minStablePower
Min. Stable Power (MW)
Definition: cluster.h:198
uint minUpTime
Min. Up time (1..168)
Definition: cluster.h:217
StatisticalLaw forcedLaw
Law (ts-generator)
Definition: cluster.h:236
double fixedCost
Fixed cost (euros/hour)
Definition: cluster.h:279
bool checkMinStablePower()
Check the validity of Min Stable Power.
Definition: cluster.cpp:482
double plannedVolatility
Planned volatility.
Definition: cluster.h:233
double forcedVolatility
Forced Volatility.
Definition: cluster.h:231
Definition: accumulator.hxx:84
Definition: accumulator.hxx:51
Definition: accumulator.hxx:40
Definition: accumulator.hxx:670
Definition: accumulator.hxx:157
Definition: accumulator.hxx:155
Definition: accumulator.hxx:711
Definition: accumulator.hxx:695
Definition: accumulator.hxx:756
Definition: accumulator.hxx:655
Definition: accumulator.hxx:849
Definition: accumulator.hxx:905
Definition: accumulator.hxx:1033
Definition: accumulator.hxx:1219
Definition: accumulator.hxx:965
Definition: accumulator.hxx:774
Definition: accumulator.hxx:1091
Definition: accumulator.hxx:834
Definition: accumulator.hxx:819
Definition: accumulator.hxx:1189
Definition: accumulator.hxx:1204
Definition: accumulator.hxx:1063
Definition: accumulator.hxx:1048
Definition: accumulator.hxx:1174
Definition: accumulator.hxx:1136
Definition: accumulator.hxx:1121
Definition: accumulator.hxx:1159
Definition: accumulator.hxx:890
Definition: accumulator.hxx:867
Definition: accumulator.hxx:804
Definition: accumulator.hxx:1018
Definition: accumulator.hxx:1003
Definition: accumulator.hxx:980
Definition: accumulator.hxx:950
Definition: accumulator.hxx:1076
Definition: accumulator.hxx:789
Definition: accumulator.hxx:1106
Definition: accumulator.hxx:935
Definition: accumulator.hxx:920
Definition: accumulator.hxx:1282
Definition: accumulator.hxx:1252
Definition: accumulator.hxx:1297
Definition: accumulator.hxx:476
Definition: accumulator.hxx:624
Definition: accumulator.hxx:622
Definition: accumulator.hxx:734
Definition: accumulator.hxx:498
Definition: accumulator.hxx:528
Definition: accumulator.hxx:513
Definition: accumulator.hxx:573
Definition: accumulator.hxx:607
Definition: accumulator.hxx:1234
Definition: accumulator.hxx:188
Definition: accumulator.hxx:460
Definition: accumulator.hxx:214
Definition: accumulator.hxx:400
Definition: accumulator.hxx:415
Definition: accumulator.hxx:250
Definition: accumulator.hxx:284
Definition: accumulator.hxx:355
Definition: accumulator.hxx:445
Definition: accumulator.hxx:269
Definition: accumulator.hxx:385
Definition: accumulator.hxx:303
Definition: accumulator.hxx:340
Definition: accumulator.hxx:370
Definition: accumulator.hxx:325
Definition: accumulator.hxx:430
Definition: accumulator.hxx:31