Antares Simulator
Power System Simulator
SimulationTableGenerator.h
1 /*
2 ** Copyright 2007-2025, 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 #pragma once
22 #include <string>
23 
24 #include <antares/expressions/nodes/ExpressionsNodes.h>
25 #include <antares/optimisation/linear-problem-api/ILinearProblemData.h>
26 #include <antares/study/system-model/component.h>
27 #include "antares/optimisation/linear-problem-api/linearProblem.h"
28 
29 #include "ISimulationTable.h"
30 
31 namespace Antares::Modeler
32 {
33 struct Data;
34 }
35 
36 namespace Antares::Optimisation
37 {
38 class OptimEntityContainer;
39 
40 namespace LinearProblemApi
41 {
42 class ILinearProblem;
43 
44 class IMipSolution;
45 class FillContext;
46 } // namespace LinearProblemApi
47 } // namespace Antares::Optimisation
48 
49 namespace Antares::Optimization
50 {
51 class VariableDictionary;
52 }
53 
54 namespace Antares::ModelerStudy::SystemModel
55 {
56 class Component;
57 }
58 
59 namespace Antares::IO
60 {
61 struct TimeBlock
62 {
63  unsigned int block;
64  std::optional<int> blockTimeIndex;
65  std::optional<int> absoluteTimeIndex;
66 };
67 enum class TimeConversionMode
68 {
69  SingleBlock, // for Modeler
70  DailyBlocks,
71  WeeklyBlocks
72 };
73 
74 TimeBlock convertBlockTimeStepToAbsoluteTimeStep(unsigned int timeStep,
75  const TimeConversionMode& mode,
76  unsigned currentBlock);
77 
78 Optimisation::VariabilityType updateVariabilityIfShouldForceScenario(
80  bool forceExportForScenarioIndex);
81 
82 std::string BuildModelerConstraintName(const std::string& componentId,
83  const std::string& cname,
84  const std::optional<unsigned>& ts);
85 
86 void addVariableEntries(ISimulationTable& simulationTable,
89  const ModelerStudy::SystemModel::Component& component,
90  const Optimisation::OptimEntityContainer& optimEntityContainer,
91  unsigned currentBlock,
92  const TimeConversionMode& timeConversionMode,
93  std::optional<unsigned> scenario);
94 
95 void addConstraintEntries(ISimulationTable& simulationTable,
98  const ModelerStudy::SystemModel::Component& component,
99  const Optimisation::OptimEntityContainer& optimEntityContainer,
100  unsigned currentBlock,
101  const TimeConversionMode& timeConversionMode,
102  std::optional<unsigned> scenario,
103  bool forceExportForScenarioIndex);
104 
105 void addPortEntries(ISimulationTable& simulationTable,
107  const ModelerStudy::SystemModel::Component& component,
108  const Optimisation::OptimEntityContainer& optimEntityContainer,
109  unsigned currentBlock,
110  const TimeConversionMode& timeConversionMode,
111  std::optional<unsigned> scenario,
112  bool forceExportForScenarioIndex);
113 
114 void addExtraOutputEntries(ISimulationTable& simulationTable,
116  const ModelerStudy::SystemModel::Component& component,
117  const Optimisation::OptimEntityContainer& optimEntityContainer,
118  unsigned currentBlock,
119  const TimeConversionMode& timeConversionMode,
120  std::optional<unsigned> scenario,
121  bool forceExportForScenarioIndex);
122 
123 void addEntriesForNode(ISimulationTable& simulationTable,
125  const ModelerStudy::SystemModel::Component& component,
126  const Optimisation::OptimEntityContainer& optimEntityContainer,
127  unsigned currentBlock,
128  const TimeConversionMode& timeConversionMode,
129  std::optional<unsigned> scenario,
130  bool forceExportForScenarioIndex,
131  const std::string& componentId,
132  const std::string& outputName,
133  const Expressions::Nodes::Node* rootNode);
149 void FillSimulationTable(ISimulationTable& simulationTable,
151  double objectiveValue,
152  const Modeler::Data& modelerData,
153  const Optimisation::OptimEntityContainer& optimEntityContainer,
155  unsigned currentBlock,
156  const TimeConversionMode& timeConversionMode,
157  bool forceExportForScenarioIndex = false);
158 } // namespace Antares::IO
Base class for nodes in a syntax tree.
Definition: Node.h:30
Context for filling linear problem data. Contains temporal information.
Definition: ILinearProblemData.h:35
Definition: OptimEntityContainer.h:46
Definition: ISimulationTable.h:26
Definition: VariableNode.h:9
VariabilityType
Represents the time and scenario variation of a value.
Definition: variabilityType.h:29
Definition: SimulationTableGenerator.h:62
Definition: data.h:38