Antares Simulator
Power System Simulator
variabilityType.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 
23 namespace Antares::Optimisation
24 {
28 enum class VariabilityType : unsigned int
29 {
30  CONSTANT_IN_TIME_AND_SCENARIO = 0,
31  VARYING_IN_TIME_ONLY = 1,
32  VARYING_IN_SCENARIO_ONLY = 2,
33  VARYING_IN_TIME_AND_SCENARIO = 3
34 };
35 
44 constexpr VariabilityType operator|(const VariabilityType& left, const VariabilityType& right)
45 {
46  /*
47  0 | x = x
48  3 | x = 3
49  1 | 1 = 1
50  1 | 2 = 3
51  2 | 2 = 2
52  */
53  return static_cast<VariabilityType>(static_cast<unsigned int>(left)
54  | static_cast<unsigned int>(right));
55 }
56 
57 // to silent warning, convert bool to unsigned int
58 static constexpr unsigned int convertBool(bool in)
59 {
60  return in ? 1 : 0;
61 }
62 
63 constexpr VariabilityType variability(bool timedependent, bool scenariodependent)
64 {
65  return static_cast<VariabilityType>((convertBool(scenariodependent) << 1)
66  | convertBool(timedependent));
67 }
68 
69 constexpr bool isTimeDependent(VariabilityType variability)
70 {
71  return variability == VariabilityType::VARYING_IN_TIME_ONLY
72  || variability == VariabilityType::VARYING_IN_TIME_AND_SCENARIO;
73 }
74 
75 constexpr bool isScenarioDependent(VariabilityType variability)
76 {
77  return variability == VariabilityType::VARYING_IN_SCENARIO_ONLY
78  || variability == VariabilityType::VARYING_IN_TIME_AND_SCENARIO;
79 }
80 
81 constexpr bool isTimeConstant(VariabilityType variability)
82 {
83  return variability == VariabilityType::CONSTANT_IN_TIME_AND_SCENARIO;
84 }
85 
86 } // namespace Antares::Optimisation
Definition: VariableNode.h:9
constexpr VariabilityType operator|(const VariabilityType &left, const VariabilityType &right)
Combines two TimeIndex values.
Definition: variabilityType.h:44
VariabilityType
Represents the time and scenario variation of a value.
Definition: variabilityType.h:29