Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
BindingConstraintsRepository.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//
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
33namespace Antares::Data
34{
35class BindingConstraintsRepository final: public Yuni::NonCopyable<BindingConstraintsRepository>
36{
37public:
39 using Vector = std::vector<std::shared_ptr<BindingConstraint>>;
41 using Set = std::set<std::shared_ptr<BindingConstraint>, CompareBindingConstraintName>;
42
43 using iterator = Vector::iterator;
44 using const_iterator = Vector::const_iterator;
45
47
48
57
61 void clear();
62
64
65
68 template<class PredicateT>
69 void each(const PredicateT& predicate);
73 template<class PredicateT>
74 void each(const PredicateT& predicate) const;
75
76 iterator begin();
77 [[nodiscard]] const_iterator begin() const;
78
79 iterator end();
80 [[nodiscard]] const_iterator end() const;
81
82 [[nodiscard]] bool empty() const;
84
88 std::shared_ptr<BindingConstraint> add(const AnyString& name);
89
93 std::shared_ptr<Data::BindingConstraint> find(const AnyString& id);
94
98 [[nodiscard]] std::shared_ptr<const Data::BindingConstraint> find(const AnyString& id) const;
99
103 [[nodiscard]] Data::BindingConstraint* findByName(const AnyString& name);
104
108 [[nodiscard]] const Data::BindingConstraint* findByName(const AnyString& name) const;
109
113 [[nodiscard]] bool loadFromFolder(Data::Study& s,
114 const Data::StudyLoadOptions& options,
115 const std::filesystem::path& folder);
116
120 [[nodiscard]] bool saveToFolder(const AnyString& folder) const;
121
127 void reverseWeightSign(const Data::AreaLink* lnk);
128
130 [[nodiscard]] uint size() const;
131
135 void remove(const Data::BindingConstraint* bc);
139 void remove(const Data::Area* area);
143 void remove(const Data::AreaLink* area);
144
148 void removeConstraintsWhoseNameConstains(const AnyString& filter);
149
153 bool rename(Data::BindingConstraint* bc, const AnyString& newname);
154
159
163 void forceReload(bool reload = false) const;
164
168 void markAsModified() const;
169
170 static std::vector<std::shared_ptr<BindingConstraint>> LoadBindingConstraint(EnvForLoading env);
171
172 [[nodiscard]] std::vector<std::shared_ptr<BindingConstraint>> activeConstraints() const;
173
174 [[nodiscard]] Vector getPtrForInequalityBindingConstraints() const;
175
176private:
177 bool internalSaveToFolder(Data::BindingConstraintSaver::EnvForSaving& env) const;
178
181
182 mutable std::vector<std::shared_ptr<BindingConstraint>> activeConstraints_;
183};
184
186{
187public:
188 explicit WhoseNameContains(AnyString filter):
189 pFilter(std::move(filter))
190 {
191 }
192
193 bool operator()(const std::shared_ptr<BindingConstraint>& s) const
194 {
195 return (s->name()).contains(pFilter);
196 }
197
198private:
199 AnyString pFilter;
200};
201} // namespace Antares::Data
202
203#include "BindingConstraintsRepository.hxx"
Definition for a single area.
Definition area.h:52
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.
std::set< std::shared_ptr< BindingConstraint >, CompareBindingConstraintName > Set
Ordered Set of binding constraints.
Definition BindingConstraintsRepository.h:41
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:390
void reverseWeightSign(const Data::AreaLink *lnk)
Reverse the sign of the weight for a given interconnection or thermal cluster.
Definition BindingConstraintsRepository.cpp:313
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:440
bool loadFromFolder(Data::Study &s, const Data::StudyLoadOptions &options, const std::filesystem::path &folder)
Load all binding constraints from a folder.
Definition BindingConstraintsRepository.cpp:178
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:255
std::vector< std::shared_ptr< BindingConstraint > > Vector
Vector of binding constraints.
Definition BindingConstraintsRepository.h:39
bool rename(Data::BindingConstraint *bc, const AnyString &newname)
Rename a binding constraint.
Definition BindingConstraintsRepository.cpp:156
void remove(const Data::BindingConstraint *bc)
Remove a binding constraint.
Definition BindingConstraintsRepository.cpp:362
bool saveToFolder(const AnyString &folder) const
Save all binding constraints into a folder.
Definition BindingConstraintsRepository.cpp:149
BindingConstraintsRepository()=default
Default constructor.
Definition EnvForLoading.h:36
Definition load-options.h:36
Definition study.h:61
Definition BindingConstraint.h:416
Definition BindingConstraintsRepository.h:186