Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
fwd.h
1/*
2** Copyright 2007-2024, RTE (https://www.rte-france.com)
3** See AUTHORS.txt
4** SPDX-License-Identifier: MPL-2.0
5** This file is part of Antares-Simulator,
6** Adequacy and Performance assessment for interconnected energy networks.
7**
8** Antares_Simulator is free software: you can redistribute it and/or modify
9** it under the terms of the Mozilla Public Licence 2.0 as published by
10** the Mozilla Foundation, either version 2 of the License, or
11** (at your option) any later version.
12**
13** Antares_Simulator is distributed in the hope that it will be useful,
14** but WITHOUT ANY WARRANTY; without even the implied warranty of
15** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16** Mozilla Public Licence 2.0 for more details.
17**
18** You should have received a copy of the Mozilla Public Licence 2.0
19** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20*/
21#ifndef __ANTARES_LIBS_STUDY_FWD_H__
22#define __ANTARES_LIBS_STUDY_FWD_H__
23
24#include <map>
25
26#include <yuni/yuni.h>
27#include <yuni/core/string.h>
28
29#include "antares/antares/antares.h"
30#include "antares/antares/constants.h"
31
32namespace Antares
33{
34class IniFile;
35
36namespace Data
37{
38// Forward declarations
39class Study;
40class StudyLoadOptions;
41class Area;
42class AreaLink;
43class AreaList;
44class AreaUI;
45class ThermalCluster;
46class RenewableCluster;
47
48class AreaScratchpad;
49
50class Parameters;
51
52class BindingConstraint;
53class BindingConstraintsRepository;
54
55class StudyRuntimeInfos;
56
57class UIRuntimeInfo;
58
59class Correlation;
60
62using AreaName = Yuni::CString<ant_k_area_name_max_length, false>;
64using AreaLinkName = Yuni::CString<ant_k_area_name_max_length * 2 + 1, false>;
66using ClusterName = std::string;
67
68using ConstraintName = Yuni::CString<ant_k_constraint_name_max_length, false>;
69
70using RulesScenarioName = Yuni::CString<64, false>;
71
73using AreaNameMapping = std::map<AreaName, AreaName>;
74
78enum StudyError
79{
80 stErrNone = 0,
82 stErrHourOutOfBounds = 1,
84 stErrFinalHourMustBeAMultipleOf168,
86 stErrInvalidDayOfWeek,
88 stErrTooMuchAreas,
90 stErrTooMuchInterconnections,
92 stErrTooMuchBindingConstraints,
93
94};
95
99enum class SimulationMode
100{
102 Economy,
104 Adequacy,
106 Expansion,
108 Unknown
109};
110
111/*
112** \brief Simplex optimizations
113*/
114enum SimplexOptimization
115{
116 sorUnknown = 0,
117 sorDay,
118 sorWeek,
119
120}; // enum SimplexOptimization
121
125enum class GlobalTransmissionCapacities
126{
128 localValuesForAllLinks = 0,
130 nullForAllLinks,
132 infiniteForAllLinks,
135 nullForPhysicalLinks,
138 infiniteForPhysicalLinks
139}; // enum TransmissionCapacities
140
141std::string GlobalTransmissionCapacitiesToString(
142 GlobalTransmissionCapacities transmissionCapacities);
143std::string GlobalTransmissionCapacitiesToString_Display(
144 GlobalTransmissionCapacities transmissionCapacities);
145bool stringToGlobalTransmissionCapacities(const AnyString& value,
146 GlobalTransmissionCapacities& out);
147
151enum class LocalTransmissionCapacities
152{
153 enabled,
154 null,
155 infinite
156};
157
158std::string transmissionCapacitiesToString(const LocalTransmissionCapacities& tc);
159
163enum AssetType
164{
166 atAC = 0,
168 atDC,
170 atGas,
172 atVirt,
174 atOther,
175
176}; // enum AssetType
177
178std::string assetTypeToString(const AssetType& assetType);
179
183enum StyleType
184{
186 stPlain = 0,
188 stDot,
190 stDash,
192 stDotDash,
193
194}; // enum StyleType
195
196std::string styleToString(const StyleType& style);
197
203static const unsigned int timeSeriesCount = 7;
204
205enum TimeSeriesType : unsigned int
206{
208 timeSeriesLoad = 1,
210 timeSeriesHydro = 2,
212 timeSeriesWind = 4,
214 timeSeriesThermal = 8,
216 timeSeriesSolar = 16,
218 timeSeriesRenewable = 32,
220 timeSeriesTransmissionCapacities = 64,
221 // ***********************************************************************
222 // Please update the constant timeSeriesCount if you add / remove an item
223 // ***********************************************************************
224}; // enum TimeSeries
225
226template<int T>
228
229template<>
231{
232 enum
233 {
234 value = 0
235 };
236};
237
238template<>
240{
241 enum
242 {
243 value = 1
244 };
245};
246
247template<>
249{
250 enum
251 {
252 value = 2
253 };
254};
255
256template<>
258{
259 enum
260 {
261 value = 3
262 };
263};
264
265template<>
267{
268 enum
269 {
270 value = 4
271 };
272};
273
274template<>
276{
277 enum
278 {
279 value = 5
280 };
281};
282
283template<int T>
285
286template<>
288{
289 static const char* Value()
290 {
291 return "load";
292 }
293};
294
295template<>
297{
298 static const char* Value()
299 {
300 return "hydro";
301 }
302};
303
304template<>
306{
307 static const char* Value()
308 {
309 return "wind";
310 }
311};
312
313template<>
315{
316 static const char* Value()
317 {
318 return "thermal";
319 }
320};
321
322template<>
324{
325 static const char* Value()
326 {
327 return "solar";
328 }
329};
330
331template<>
333{
334 static const char* Value()
335 {
336 return "renewable";
337 }
338};
339
340enum SeedIndex
341{
343 seedTsGenWind = 0,
345 seedTsGenLoad,
347 seedTsGenHydro,
349 seedTsGenThermal,
351 seedTsGenSolar,
353 seedTimeseriesNumbers,
355 seedUnsuppliedEnergyCosts,
357 seedSpilledEnergyCosts,
359 seedThermalCosts,
361 seedHydroCosts,
363 seedHydroManagement,
365 seedMax,
366};
367
369constexpr unsigned antaresSeedDefaultValue = 5489;
371constexpr unsigned antaresSeedIncrement = 1000000; // arbitrary value
372
376const char* SeedToCString(SeedIndex seed);
377
383const char* SeedToID(SeedIndex seed);
384
385// ... Hydro heuristic policy ...
386enum HydroHeuristicPolicy
387{
388 hhpAccommodateRuleCurves = 0,
389 hhpMaximizeGeneration,
390 hhpUnknown,
391};
392
393HydroHeuristicPolicy StringToHydroHeuristicPolicy(const AnyString& text);
394
395const char* HydroHeuristicPolicyToCString(HydroHeuristicPolicy hhPolicy);
396
397// ... Hydro Pricing ...
398enum HydroPricingMode
399{
400 hpHeuristic = 0,
401 hpMILP, // mixed integer linear problem
402 hpUnknown,
403};
404
408const char* HydroPricingModeToCString(HydroPricingMode hpm);
409
413HydroPricingMode StringToHydroPricingMode(const AnyString& text);
414
415// ... Power fluctuations ...
416enum PowerFluctuations
417{
418 lssFreeModulations = 0,
419 lssMinimizeRamping,
420 lssMinimizeExcursions,
421 lssUnknown,
422};
423
427const char* PowerFluctuationsToCString(PowerFluctuations fluctuations);
428
432PowerFluctuations StringToPowerFluctuations(const AnyString& text);
433
434enum SheddingPolicy
435{
436 shpShavePeaks = 0,
437 shpAccurateShavePeaks,
438 shpMinimizeDuration,
439 shpUnknown,
440};
441
445const char* SheddingPolicyToCString(SheddingPolicy strategy);
446
450SheddingPolicy StringToSheddingPolicy(const AnyString& text);
451
452enum UnitCommitmentMode
453{
456 ucHeuristicFast = 0,
459 ucHeuristicAccurate,
462 ucMILP,
464 ucUnknown,
465};
466
470const char* UnitCommitmentModeToCString(UnitCommitmentMode ucommitment);
471
475UnitCommitmentMode StringToUnitCommitmentMode(const AnyString& text);
476
477enum NumberOfCoresMode
478{
479 ncMin = 0,
480 ncLow,
481 ncAvg,
482 ncHigh,
483 ncMax,
484 ncUnknown
485};
486
490const char* NumberOfCoresModeToCString(NumberOfCoresMode ncores);
491
495NumberOfCoresMode StringToNumberOfCoresMode(const AnyString& text);
496
497/*
498 * Renewable generation modelling
499 */
500enum RenewableGenerationModelling
501{
502 rgAggregated = 0, // Default
503 rgClusters, // Using renewable clusters
504 rgUnknown,
505};
506
510const char* RenewableGenerationModellingToCString(RenewableGenerationModelling rgModelling);
511
515RenewableGenerationModelling StringToRenewableGenerationModelling(const AnyString& text);
516
517// ------------------------
518// MPS export status
519// ------------------------
520enum class mpsExportStatus : int
521{
522 NO_EXPORT = 0,
523 EXPORT_FIRST_OPTIM = 1,
524 EXPORT_SECOND_OPTIM = 2,
525 EXPORT_BOTH_OPTIMS = 3,
526 UNKNOWN_EXPORT = 4
527};
528
529std::string mpsExportStatusToString(const mpsExportStatus& mps_export_status);
530mpsExportStatus stringToMPSexportStatus(const AnyString& value);
531
532} // namespace Data
533} // namespace Antares
534
535namespace Antares::Data::ScenarioBuilder
536{
537class Rules;
538class TSNumberRules;
539class Sets;
540
541} // namespace Antares::Data::ScenarioBuilder
542
543namespace Benchmarking
544{
545class DurationCollector;
546}
547
548#endif // __ANTARES_LIBS_STUDY_FWD_H__