Antares Simulator
Power System Simulator
BindingConstraintsRepository.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 //
22 // Created by marechaljas on 11/05/23.
23 //
24 
25 #pragma once
26 
27 #include <functional>
28 #include <memory>
29 
30 #include "BindingConstraint.h"
31 #include "BindingConstraintSaver.h"
32 
33 namespace Antares::Data
34 {
35 class BindingConstraintsRepository final: public Yuni::NonCopyable<BindingConstraintsRepository>
36 {
37 public:
39  using Vector = std::vector<std::shared_ptr<BindingConstraint>>;
40 
41  using iterator = Vector::iterator;
42  using const_iterator = Vector::const_iterator;
43 
45 
46 
55 
59  void clear();
60 
62 
63 
66  template<class PredicateT>
67  void each(const PredicateT& predicate);
71  template<class PredicateT>
72  void each(const PredicateT& predicate) const;
73 
74  iterator begin();
75  [[nodiscard]] const_iterator begin() const;
76 
77  iterator end();
78  [[nodiscard]] const_iterator end() const;
79 
80  [[nodiscard]] bool empty() const;
82 
86  std::shared_ptr<BindingConstraint> add(const AnyString& name);
87 
91  std::shared_ptr<Data::BindingConstraint> find(const AnyString& id);
92 
96  [[nodiscard]] std::shared_ptr<const Data::BindingConstraint> find(const AnyString& id) const;
97 
101  [[nodiscard]] Data::BindingConstraint* findByName(const AnyString& name);
102 
106  [[nodiscard]] const Data::BindingConstraint* findByName(const AnyString& name) const;
107 
111  [[nodiscard]] bool loadFromFolder(Data::Study& s,
112  const Data::StudyLoadOptions& options,
113  const std::filesystem::path& folder);
114 #ifdef BUILD_UI
118  [[nodiscard]] bool saveToFolder(const AnyString& folder) const;
119 #endif
120 
126  void reverseWeightSign(const Data::AreaLink* lnk);
127 
129  [[nodiscard]] uint size() const;
130 
134  void remove(const Data::BindingConstraint* bc);
138  void remove(const Data::Area* area);
142  void remove(const Data::AreaLink* area);
143 
147  void removeConstraintsWhoseNameConstains(const AnyString& filter);
148 
152  bool rename(Data::BindingConstraint* bc, const AnyString& newname);
153 
158 
162  void forceReload(bool reload = false) const;
163 
167  void markAsModified() const;
168 
169  static Vector LoadBindingConstraint(EnvForLoading env);
170 
171  [[nodiscard]] Vector activeConstraints() const;
172 
173  [[nodiscard]] Vector getPtrForInequalityBindingConstraints() const;
174 
175 private:
176  bool internalSaveToFolder(Data::BindingConstraintSaver::EnvForSaving& env) const;
177 
179  Vector constraints_;
180 
181  mutable Vector activeConstraints_;
182 };
183 
184 struct WhoseNameContains final
185 {
186 public:
187  explicit WhoseNameContains(AnyString filter):
188  pFilter(std::move(filter))
189  {
190  }
191 
192  bool operator()(const std::shared_ptr<BindingConstraint>& s) const
193  {
194  return (s->name()).contains(pFilter);
195  }
196 
197 private:
198  AnyString pFilter;
199 };
200 } // namespace Antares::Data
201 
202 #include "BindingConstraintsRepository.hxx"
Definition for a single area.
Definition: area.h:51
Definition: BindingConstraintSaver.h:37
Definition: BindingConstraint.h:49
Definition: BindingConstraintsRepository.h:36
std::shared_ptr< Data::BindingConstraint > find(const AnyString &id)
Definition: BindingConstraintsRepository.cpp:46
void removeConstraintsWhoseNameConstains(const AnyString &filter)
Remove any binding constraint whose name contains the string in argument.
Definition: BindingConstraintsRepository.cpp:95
~BindingConstraintsRepository()=default
Destructor.
void each(const PredicateT &predicate)
Iterate through all constraints.
Definition: BindingConstraintsRepository.hxx:44
void clear()
Delete all constraints.
Definition: BindingConstraintsRepository.cpp:38
uint size() const
Get the number of binding constraints.
Definition: BindingConstraintsRepository.hxx:33
void markAsModified() const
Mark the constraint as modified.
Definition: BindingConstraintsRepository.cpp:392
void reverseWeightSign(const Data::AreaLink *lnk)
Reverse the sign of the weight for a given interconnection or thermal cluster.
Definition: BindingConstraintsRepository.cpp:315
Data::BindingConstraint * findByName(const AnyString &name)
Try to find a constraint from its name.
Definition: BindingConstraintsRepository.cpp:71
void forceReload(bool reload=false) const
Invalidate all matrices of all binding constraints.
Definition: BindingConstraintsRepository.cpp:442
bool loadFromFolder(Data::Study &s, const Data::StudyLoadOptions &options, const std::filesystem::path &folder)
Load all binding constraints from a folder.
Definition: BindingConstraintsRepository.cpp:180
std::shared_ptr< BindingConstraint > add(const AnyString &name)
Add a new binding constraint.
Definition: BindingConstraintsRepository.cpp:132
void changeConstraintsWeeklyToDaily()
Convert all weekly constraints into daily ones.
Definition: BindingConstraintsRepository.cpp:257
bool rename(Data::BindingConstraint *bc, const AnyString &newname)
Rename a binding constraint.
Definition: BindingConstraintsRepository.cpp:158
void remove(const Data::BindingConstraint *bc)
Remove a binding constraint.
Definition: BindingConstraintsRepository.cpp:364
std::vector< std::shared_ptr< BindingConstraint > > Vector
Vector of binding constraints.
Definition: BindingConstraintsRepository.h:39
BindingConstraintsRepository()=default
Default constructor.
Definition: EnvForLoading.h:36
Definition: load-options.h:34
Definition: study.h:57
Definition: BindingConstraintsRepository.h:185