Antares Simulator
Power System Simulator
storage-for-remix-interface.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 #pragma once
23 
24 #include <memory>
25 #include <string>
26 #include <vector>
27 
28 namespace Antares::Solver::Simulation
29 {
31 {
32 public:
33  IStorageForRemix(std::string name):
34  name_(name)
35  {
36  }
37 
38  const std::string& name() const
39  {
40  return name_;
41  }
42 
43  virtual ~IStorageForRemix() = default;
44  virtual double maxExchange(unsigned hourOfMaxGen, unsigned hourOfMinGen) const = 0;
45  virtual void update() = 0;
46  virtual const std::vector<double>& initWithdrawal() const = 0;
47  virtual std::vector<double>& withdrawal() = 0;
48 
49 private:
50  virtual void checkInput(size_t size) = 0;
51  std::string name_;
52 };
53 
54 using ListStorageForRemix = std::vector<std::shared_ptr<IStorageForRemix>>;
55 
56 class StorageListSort final
57 {
58 public:
59  void add(const double capacity, const std::shared_ptr<IStorageForRemix> sts);
60  ListStorageForRemix makeSortedList();
61 
62 private:
63  std::vector<std::pair<double, std::shared_ptr<IStorageForRemix>>> pairs_capa_storage_;
64 };
65 
66 } // namespace Antares::Solver::Simulation
Definition: storage-for-remix-interface.h:31
Definition: storage-for-remix-interface.h:57