21#ifndef ANTARES_WINDOWS_INSPECTOR_ACCUMULATOR_HXX__
22#define ANTARES_WINDOWS_INSPECTOR_ACCUMULATOR_HXX__
24#include <antares/study/filter.h>
37 static bool Apply(T& value,
const T& item)
39 return (value == item);
46 static bool Apply(T& value,
const T& item)
53template<
class PredicateT,
class TraitsT = Unique>
58 static void Apply(wxPGProperty* property,
const ListT& list)
60 assert(list.size() != 0);
61 assert(property != NULL);
64 auto study = *list.begin();
65 property->SetValueFromString(PredicateT::ConvertToString(PredicateT::Value(study)));
69 auto i = list.cbegin();
70 const auto end = list.cend();
71 typename PredicateT::Type value = PredicateT::Value(*i);
75 if (!TraitsT::Apply(value, PredicateT::Value(*i)))
77 property->SetValueToUnspecified();
81 property->SetValueFromString(PredicateT::ConvertToString(value));
86template<
class PredicateT>
91 static void ApplyTextColor(wxPGProperty* property,
const ListT& list)
93 assert(list.size() != 0);
94 assert(property != NULL);
97 auto study = *list.begin();
98 property->GetGrid()->SetPropertyTextColour(property->GetBaseName(),
99 PredicateT::TextColor(study));
103 auto i = list.cbegin();
104 const auto end = list.cend();
106 for (; i != end; ++i)
107 property->GetGrid()->SetPropertyTextColour(property->GetBaseName(),
108 PredicateT::TextColor(*i));
112 template<
class ListT>
113 static void ApplyGreyColor(wxPGProperty* property_MargCost,
114 wxPGProperty* property_OperCost,
115 wxPGProperty* property_FuelEff,
116 wxPGProperty* property_VarOMcost,
119 assert(list.size() != 0);
120 assert(property_MargCost != NULL);
121 assert(property_OperCost != NULL);
122 assert(property_FuelEff != NULL);
123 assert(property_VarOMcost != NULL);
124 if (list.size() == 1)
126 auto study = *list.begin();
127 property_MargCost->GetGrid()->EnableProperty(property_MargCost->GetBaseName(),
128 PredicateT::Enable(study));
129 property_OperCost->GetGrid()->EnableProperty(property_OperCost->GetBaseName(),
130 PredicateT::Enable(study));
131 property_FuelEff->GetGrid()->EnableProperty(property_FuelEff->GetBaseName(),
132 !PredicateT::Enable(study));
133 property_VarOMcost->GetGrid()->EnableProperty(property_VarOMcost->GetBaseName(),
134 !PredicateT::Enable(study));
138 auto i = list.cbegin();
139 const auto end = list.cend();
141 for (; i != end; ++i)
143 property_MargCost->GetGrid()->EnableProperty(property_MargCost->GetBaseName(),
144 PredicateT::Enable(*i));
145 property_OperCost->GetGrid()->EnableProperty(property_OperCost->GetBaseName(),
146 PredicateT::Enable(*i));
147 property_FuelEff->GetGrid()->EnableProperty(property_FuelEff->GetBaseName(),
148 !PredicateT::Enable(*i));
149 property_VarOMcost->GetGrid()->EnableProperty(property_VarOMcost->GetBaseName(),
150 !PredicateT::Enable(*i));
160 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];
175 return Color(area->ui->color);
177 static wxString ConvertToString(
const Type v)
179 return wxString() << wxT(
"(") << v.color[0] << wxT(
',') << v.color[1] << wxT(
',')
180 << v.color[2] << wxT(
")");
186 using Type = Data::SimulationMode;
187 static Type Value(
const Data::Study::Ptr& study)
189 return (!(!study) ? study->parameters.mode : Data::SimulationMode::Economy);
191 static wxString ConvertToString(
const Type v)
195 case Data::SimulationMode::Economy:
196 return wxT(
"Economy");
197 case Data::SimulationMode::Adequacy:
198 return wxT(
"Adequacy");
199 case Data::SimulationMode::Expansion:
200 return wxT(
"Expansion");
201 case Data::SimulationMode::Unknown:
202 return wxEmptyString;
204 return wxEmptyString;
211 static Type Value(
const Data::Study::Ptr& study)
215 auto& parameters = study->parameters;
216 if (parameters.derated)
218 if (parameters.useCustomScenario)
223 static wxString ConvertToString(
const Type v)
228 return wxT(
"Automatic");
230 return wxT(
"Custom");
232 return wxT(
"Derated");
234 return wxT(
"Automatic");
241 static Type Value(
const Data::Study::Ptr& study)
243 return !study ? 0 : (uint)study->parameters.firstMonthInYear;
245 static wxString ConvertToString(
const Type v)
248 return calendarMonths[v];
249 return wxT(
"invalid");
256 static Type Value(
const Data::Study::Ptr& study)
258 return !study ? false : study->parameters.leapYear;
260 static wxString ConvertToString(
const Type v)
262 return v ? wxT(
"true") : wxT(
"false");
269 static Type Value(
const Data::Study::Ptr& study)
271 return !study ? (uint)Antares::monday : (uint)study->parameters.firstWeekday;
273 static wxString ConvertToString(
const Type v)
276 return calendarWeeks[v];
277 return wxT(
"invalid");
284 static Type Value(
const Data::Study::Ptr& study)
286 return !(!study) ? study->parameters.userPlaylist :
false;
288 static wxString ConvertToString(
const Type v)
293 return wxT(
"Automatic");
295 return wxT(
"Custom");
297 return wxT(
"Automatic");
304 static Type Value(
const Data::Study::Ptr& study)
306 return !(!study) ? study->parameters.yearByYear :
false;
308 static wxString ConvertToString(
const Type v)
310 return v ? wxT(
"True") : wxT(
"False");
317 static Type Value(
const Data::Study::Ptr& study)
319 return !(!study) ? study->parameters.synthesis :
false;
321 static wxString ConvertToString(
const Type v)
323 return v ? wxT(
"True") : wxT(
"False");
330 static Type Value(
const Data::Study::Ptr& study)
332 return !(!study) ? study->parameters.geographicTrimming :
false;
334 static wxString ConvertToString(
const Type v)
336 return (!v) ? wxT(
"None") : wxT(
"Custom");
343 static Type Value(
const Data::Study::Ptr& study)
345 return !(!study) ? study->parameters.thematicTrimming :
false;
347 static wxString ConvertToString(
const Type v)
349 return (!v) ? wxT(
"None") : wxT(
"Custom");
356 static Type Value(
const Data::Study::Ptr& study)
358 return !(!study) ? study->parameters.storeTimeseriesNumbers :
false;
360 static wxString ConvertToString(
const Type v)
362 return v ? wxT(
"True") : wxT(
"False");
368 using Type = wxString;
369 static Type Value(
const Data::Study::Ptr& study)
371 return wxString() << ((!(!study) ? study->parameters.simulationDays.first : 0) + 1);
373 static wxString ConvertToString(
const Type v)
382 static Type Value(
const Data::Study::Ptr& study)
384 return !(!study) ? study->parameters.simulationDays.end : 8760;
386 static wxString ConvertToString(
const Type v)
388 return wxString() << v;
395 static Type Value(
const Data::Study::Ptr& study)
397 return !(!study) ? study->parameters.nbYears : 1;
399 static wxString ConvertToString(
const Type v)
401 return wxString() << v;
408 static Type Value(
const Data::Study::Ptr& study)
410 return !(!study) ? study->parameters.horizon : Type();
412 static wxString ConvertToString(
const Type v)
414 return wxStringFromUTF8(v);
420 using Type = Antares::DayOfTheWeek;
421 static Type Value(
const Data::Study::Ptr& study)
423 return !study ? Antares::monday : study->parameters.dayOfThe1stJanuary;
425 static wxString ConvertToString(
const Type v)
427 return wxStringFromUTF8(Antares::Date::DayOfTheWeekToString(v));
431template<
bool Orientation>
434 using Type = wxString;
438 return wxStringFromUTF8(link->from->name);
440 return wxStringFromUTF8(link->with->name);
442 static wxString ConvertToString(
const Type v)
453 return link->useHurdlesCost;
455 static wxString ConvertToString(
const Type v)
457 return v ? wxT(
"True") : wxT(
"False");
468 static wxString ConvertToString(
const Type v)
470 return v ? wxT(
"True") : wxT(
"False");
479 return link->useLoopFlow;
481 static wxString ConvertToString(
const Type v)
483 return v ? wxT(
"True") : wxT(
"False");
492 return link->displayComments;
494 static wxString ConvertToString(
const Type v)
496 return v ? wxT(
"True") : wxT(
"False");
502 using Type = wxString;
505 return wxStringFromUTF8(link->comments);
507 static wxString ConvertToString(
const Type v)
520 static wxString ConvertToString(
const Type v)
550 return Math::MinMax(link->linkWidth, 1, 6);
552 static wxString ConvertToString(
const Type v)
554 return DoubleToWxString(v);
562 Color(
const int c[3])
569 bool operator==(
const Color& rhs)
const
571 return rhs.color[0] == color[0] && rhs.color[1] == color[1] && rhs.color[2] == color[2];
577 return Color(link->color);
579 static wxString ConvertToString(
const Type v)
581 return wxString() << wxT(
"(") << v.color[0] << wxT(
',') << v.color[1] << wxT(
',')
582 << v.color[2] << wxT(
")");
591 return area->thermal.unsuppliedEnergyCost;
593 static wxString ConvertToString(
const Type v)
595 return DoubleToWxString(v);
601 using Type = Data::AdequacyPatch::AdequacyPatchMode;
604 return area->adequacyPatchMode;
606 static wxString ConvertToString(
const Type v)
610 case Data::AdequacyPatch::virtualArea:
611 return wxT(
"virtual area");
612 case Data::AdequacyPatch::physicalAreaOutsideAdqPatch:
613 return wxT(
"physical area outside patch");
614 case Data::AdequacyPatch::physicalAreaInsideAdqPatch:
615 return wxT(
"physical area inside patch");
617 return wxEmptyString;
621template<enum Data::AreaNodalOptimization O>
627 return (0 != (area->nodalOptimization & O));
629 static wxString ConvertToString(
const Type v)
631 return (v) ? wxT(
"True") : wxT(
"False");
635template<
bool SynthesisT, enum Data::FilterFlag F>
642 return (0 != (area->filterSynthesis & F));
644 return (0 != (area->filterYearByYear & F));
646 static wxString ConvertToString(
const Type v)
648 return (v) ? wxT(
"True") : wxT(
"False");
652template<
bool SynthesisT, enum Data::FilterFlag F>
659 return (0 != (link->filterSynthesis & F));
661 return (0 != (link->filterYearByYear & F));
663 static wxString ConvertToString(
const Type v)
665 return (v) ? wxT(
"True") : wxT(
"False");
674 return area->thermal.spilledEnergyCost;
676 static wxString ConvertToString(
const Type v)
678 return DoubleToWxString(v);
690 return cluster->enabled;
692 static wxString ConvertToString(
const Type v)
694 return v ? wxT(
"True") : wxT(
"False");
703 return cluster->unitCount;
705 static wxString ConvertToString(
const Type v)
707 return wxString() << v;
718 static wxString ConvertToString(
const Type v)
720 return DoubleToWxString(v);
731 static wxString ConvertToString(
const Type v)
733 return DoubleToWxString(v);
739 using Type = wxString;
742 return wxStringFromUTF8(cluster->group());
744 static wxString ConvertToString(
const Type v)
752 using Type = wxString;
757 static wxString ConvertToString(
const Type v)
771 return wxColor(255, 0, 0);
774 return wxColor(255, 0, 0);
776 return wxColour(86, 98, 115);
792 static wxString ConvertToString(
const Type v)
794 return v ? wxT(
"True") : wxT(
"False");
803 return cluster->emissions.factors[Antares::Data::Pollutant::CO2];
805 static wxString ConvertToString(
const Type v)
807 return DoubleToWxString(v);
818 static wxString ConvertToString(
const Type v)
820 return DoubleToWxString(v);
831 static wxString ConvertToString(
const Type v)
833 return DoubleToWxString(v);
844 static wxString ConvertToString(
const Type v)
846 return DoubleToWxString(v);
857 static wxString ConvertToString(
const Type v)
859 return DoubleToWxString(v);
868 return wxColor(255, 0, 0);
871 return wxColor(255, 0, 0);
873 return wxColour(86, 98, 115);
889 static wxString ConvertToString(
const Type v)
891 return DoubleToWxString(v);
902 static wxString ConvertToString(
const Type v)
904 return DoubleToWxString(v);
915 static wxString ConvertToString(
const Type v)
917 return (v < costgenerationCount) ? costgeneration[v] :
nullptr;
928 static wxString ConvertToString(
const Type v)
930 return DoubleToWxString(v);
952 static wxString ConvertToString(
const Type v)
954 return DoubleToWxString(v);
965 static wxString ConvertToString(
const Type v)
967 return DoubleToWxString(v);
978 static wxString ConvertToString(
const Type v)
980 return DoubleToWxString(v);
991 static wxString ConvertToString(
const Type v)
993 return DoubleToWxString(v);
1002 return wxColor(255, 0, 0);
1005 return wxColor(255, 0, 0);
1007 return wxColour(86, 98, 115);
1023 static wxString ConvertToString(
const Type v)
1025 return wxString() << v;
1036 static wxString ConvertToString(
const Type v)
1038 return wxString() << v;
1049 static wxString ConvertToString(
const Type v)
1051 return (v < LawCount) ? Laws[v] :
nullptr;
1062 static wxString ConvertToString(
const Type v)
1064 return (v < LawCount) ? Laws[v] :
nullptr;
1073 return (uint)cluster->tsGenBehavior;
1075 static wxString ConvertToString(
const Type v)
1077 return (v < localGenTSCount) ? localGenTS[v] :
nullptr;
1086 return cluster->tsMode;
1088 static wxString ConvertToString(
const Type v)
1090 return (v < renewableTSModeCount) ? renewableTSMode[v] :
nullptr;
1099 using Type = wxString;
1100 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1102 return wxStringFromUTF8(constraint->name());
1104 static wxString ConvertToString(
const Type v)
1112 using Type = wxString;
1113 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1115 return wxStringFromUTF8(constraint->comments());
1117 static wxString ConvertToString(
const Type v)
1126 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1128 return constraint->enabled();
1130 static wxString ConvertToString(
const Type v)
1132 return v ? wxT(
"True") : wxT(
"False");
1139 static Type Value(
const std::shared_ptr<Data::BindingConstraint> constraint)
1141 return constraint->type();
1143 static wxString ConvertToString(
const Type v)
Definition of a link between two areas (Interconnection)
Definition links.h:50
Definition for a single area.
Definition area.h:52
AreaName name
Name of the area.
Definition area.h:213
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:117
Area * parentArea
The associate area (alias)
Definition cluster.h:114
A single thermal cluster.
Definition cluster.h:78
double spinning
Spinning (%)
Definition cluster.h:275
double marketBidCost
Market bid cost (euros/MWh)
Definition cluster.h:333
uint minDownTime
Min. Down time (1..168)
Definition cluster.h:269
StatisticalLaw plannedLaw
Law (ts-generator)
Definition cluster.h:288
bool mustrun
Mustrun.
Definition cluster.h:228
double spreadCost
Spread (euros/MWh)
Definition cluster.h:327
double startupCost
Startup cost (euros/startup)
Definition cluster.h:331
CostGeneration costgeneration
Cost generation.
Definition cluster.h:323
double variableomcost
Variable O&M cost (euros/MWh)
Definition cluster.h:335
double marginalCost
Marginal cost (euros/MWh)
Definition cluster.h:325
double fuelEfficiency
Efficiency (%)
Definition cluster.h:278
double minStablePower
Min. Stable Power (MW)
Definition cluster.h:248
uint minUpTime
Min. Up time (1..168)
Definition cluster.h:267
StatisticalLaw forcedLaw
Law (ts-generator)
Definition cluster.h:286
double fixedCost
Fixed cost (euros/hour)
Definition cluster.h:329
bool checkMinStablePower()
Check the validity of Min Stable Power.
Definition cluster.cpp:546
double plannedVolatility
Planned volatility.
Definition cluster.h:283
double forcedVolatility
Forced Volatility.
Definition cluster.h:281
Definition accumulator.hxx:88
Definition accumulator.hxx:55
Definition accumulator.hxx:44
Definition accumulator.hxx:600
Definition accumulator.hxx:159
Definition accumulator.hxx:157
Definition accumulator.hxx:637
Definition accumulator.hxx:623
Definition accumulator.hxx:670
Definition accumulator.hxx:587
Definition accumulator.hxx:751
Definition accumulator.hxx:799
Definition accumulator.hxx:909
Definition accumulator.hxx:1069
Definition accumulator.hxx:851
Definition accumulator.hxx:686
Definition accumulator.hxx:959
Definition accumulator.hxx:738
Definition accumulator.hxx:725
Definition accumulator.hxx:1043
Definition accumulator.hxx:1056
Definition accumulator.hxx:935
Definition accumulator.hxx:922
Definition accumulator.hxx:1030
Definition accumulator.hxx:998
Definition accumulator.hxx:985
Definition accumulator.hxx:1017
Definition accumulator.hxx:786
Definition accumulator.hxx:767
Definition accumulator.hxx:712
Definition accumulator.hxx:896
Definition accumulator.hxx:883
Definition accumulator.hxx:864
Definition accumulator.hxx:838
Definition accumulator.hxx:946
Definition accumulator.hxx:699
Definition accumulator.hxx:972
Definition accumulator.hxx:825
Definition accumulator.hxx:812
Definition accumulator.hxx:1124
Definition accumulator.hxx:1098
Definition accumulator.hxx:1137
Definition accumulator.hxx:433
Definition accumulator.hxx:561
Definition accumulator.hxx:559
Definition accumulator.hxx:654
Definition accumulator.hxx:449
Definition accumulator.hxx:475
Definition accumulator.hxx:462
Definition accumulator.hxx:514
Definition accumulator.hxx:546
Definition accumulator.hxx:1082
Definition accumulator.hxx:185
Definition accumulator.hxx:419
Definition accumulator.hxx:209
Definition accumulator.hxx:367
Definition accumulator.hxx:380
Definition accumulator.hxx:239
Definition accumulator.hxx:267
Definition accumulator.hxx:328
Definition accumulator.hxx:406
Definition accumulator.hxx:254
Definition accumulator.hxx:354
Definition accumulator.hxx:282
Definition accumulator.hxx:315
Definition accumulator.hxx:341
Definition accumulator.hxx:302
Definition accumulator.hxx:393
Definition accumulator.hxx:35