Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
clang-format
authorAdrien Gougeon <adrien.gougeon@ens-rennes.fr>
Thu, 14 Sep 2023 14:51:21 +0000 (16:51 +0200)
committerAdrien Gougeon <adrien.gougeon@ens-rennes.fr>
Thu, 14 Sep 2023 14:51:21 +0000 (16:51 +0200)
examples/cpp/solar-panel-simple/s4u-solar-panel-simple.cpp
include/simgrid/plugins/solar_panel.hpp
src/plugins/solar_panel.cpp

index 5f68a54..2fc62da 100644 (file)
@@ -4,8 +4,8 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include "simgrid/plugins/photovoltaic.hpp"
-#include "simgrid/s4u.hpp"
 #include "simgrid/plugins/solar_panel.hpp"
+#include "simgrid/s4u.hpp"
 #include <simgrid/s4u/Actor.hpp>
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(solar_panel_simple, "Messages specific for this s4u example");
@@ -14,19 +14,27 @@ static void manager()
 {
   auto solar_panel = simgrid::plugins::SolarPanel::init("Solar Panel", 10, 0.9, 10, 0, 1e3);
   simgrid::s4u::this_actor::sleep_for(1);
-  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(), solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(), solar_panel->get_power());
-  
+  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(),
+           solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(),
+           solar_panel->get_power());
+
   solar_panel->set_area(20);
   simgrid::s4u::this_actor::sleep_for(1);
-  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(), solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(), solar_panel->get_power());
+  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(),
+           solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(),
+           solar_panel->get_power());
 
   solar_panel->set_conversion_efficiency(0.8);
   simgrid::s4u::this_actor::sleep_for(1);
-  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(), solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(), solar_panel->get_power());
+  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(),
+           solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(),
+           solar_panel->get_power());
 
   solar_panel->set_solar_irradiance(20);
   simgrid::s4u::this_actor::sleep_for(1);
-  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(), solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(), solar_panel->get_power());
+  XBT_INFO("%s: area: %fm² efficiency: %f irradiance: %fW/m² power: %fW", solar_panel->get_cname(),
+           solar_panel->get_area(), solar_panel->get_conversion_efficiency(), solar_panel->get_solar_irradiance(),
+           solar_panel->get_power());
 }
 
 int main(int argc, char* argv[])
index a25f1ae..b9097b4 100644 (file)
@@ -37,14 +37,15 @@ private:
   std::string name_;
   double area_m2_;
   double conversion_efficiency_;
-  double solar_irradiance_w_per_m2_ ;
+  double solar_irradiance_w_per_m2_;
   double min_power_w_;
   double max_power_w_;
 
   double power_w_      = 0;
   double last_updated_ = 0;
 
-  explicit SolarPanel(std::string name, double area_m2, double conversion_efficiency, double solar_irradiance_w_per_m2, double min_power_w, double max_power_w);
+  explicit SolarPanel(std::string name, double area_m2, double conversion_efficiency, double solar_irradiance_w_per_m2,
+                      double min_power_w, double max_power_w);
   static void init_plugin();
   void update();
 
@@ -61,8 +62,8 @@ private:
 #endif
 
 public:
-
-  static SolarPanelPtr init(const std::string& name, double area_m2, double conversion_efficiency, double solar_irradiance_w_per_m2, double min_power_w, double max_power_w);
+  static SolarPanelPtr init(const std::string& name, double area_m2, double conversion_efficiency,
+                            double solar_irradiance_w_per_m2, double min_power_w, double max_power_w);
 
   SolarPanelPtr set_name(std::string name);
   SolarPanelPtr set_area(double area_m2);
@@ -72,8 +73,8 @@ public:
   SolarPanelPtr set_max_power(double power_w);
 
   std::string get_name() { return name_; }
-  const char* get_cname() { return name_.c_str();}
-  double get_area() { return area_m2_;}
+  const char* get_cname() { return name_.c_str(); }
+  double get_area() { return area_m2_; }
   double get_conversion_efficiency() { return conversion_efficiency_; }
   double get_solar_irradiance() { return solar_irradiance_w_per_m2_; }
   double get_min_power() { return min_power_w_; }
index d4d37ca..8e44734 100644 (file)
@@ -11,7 +11,6 @@
 #include "src/kernel/resource/CpuImpl.hpp"
 #include "src/simgrid/module.hpp"
 
-
 SIMGRID_REGISTER_PLUGIN(solar_panel, "Solar Panel management", nullptr)
 
 /** @defgroup plugin_solar_panel Plugin Solar Panel
@@ -24,13 +23,14 @@ This plugin allows the use of solar panels to generate power during simulation d
 irradiance and conversion factor.
 
 The power model is taken from the paper `"Reinforcement Learning Based Load Balancing for
-Geographically Distributed Data Centres" <https://dro.dur.ac.uk/33395/1/33395.pdf?DDD280+kkgc95+vbdv77>`_ by Max Mackie et. al.
+Geographically Distributed Data Centres" <https://dro.dur.ac.uk/33395/1/33395.pdf?DDD280+kkgc95+vbdv77>`_ by Max Mackie
+et. al.
 
 Solar Panel
 ....................
 
-A solar panel has an area :math:`A` in m², a conversion efficiency :math:`\eta` and a solar irradiance :math:`S` in W/m². 
-The power generated :math:`P` in W by a solar panel is given by the following equation: 
+A solar panel has an area :math:`A` in m², a conversion efficiency :math:`\eta` and a solar irradiance :math:`S` in
+W/m². The power generated :math:`P` in W by a solar panel is given by the following equation:
 
 .. math::
 
@@ -85,12 +85,13 @@ void SolarPanel::update()
       power_w = 0;
     if (power_w_ > max_power_w_)
       power_w = max_power_w_;
-    power_w_ = power_w;
+    power_w_      = power_w;
     last_updated_ = now;
   });
 }
 
-SolarPanel::SolarPanel(std::string name, double area_m2, double conversion_efficiency, double solar_irradiance_w_per_m2, double min_power_w, double max_power_w)
+SolarPanel::SolarPanel(std::string name, double area_m2, double conversion_efficiency, double solar_irradiance_w_per_m2,
+                       double min_power_w, double max_power_w)
     : name_(name)
     , area_m2_(area_m2)
     , conversion_efficiency_(conversion_efficiency)
@@ -99,11 +100,14 @@ SolarPanel::SolarPanel(std::string name, double area_m2, double conversion_effic
     , max_power_w_(max_power_w)
 {
   xbt_assert(area_m2 >= 0, " : area must be >= 0 (provided: %f)", area_m2);
-  xbt_assert(conversion_efficiency >= 0 and conversion_efficiency <= 1, " : conversion efficiency must be in [0,1] (provided: %f)", conversion_efficiency);
-  xbt_assert(solar_irradiance_w_per_m2 >= 0, " : solar irradiance must be >= 0 (provided: %f)", solar_irradiance_w_per_m2);
+  xbt_assert(conversion_efficiency >= 0 and conversion_efficiency <= 1,
+             " : conversion efficiency must be in [0,1] (provided: %f)", conversion_efficiency);
+  xbt_assert(solar_irradiance_w_per_m2 >= 0, " : solar irradiance must be >= 0 (provided: %f)",
+             solar_irradiance_w_per_m2);
   xbt_assert(min_power_w >= 0, " : minimal power must be >= 0 (provided: %f)", min_power_w);
   xbt_assert(max_power_w > 0, " : maximal power must be > 0 (provided: %f)", max_power_w);
-  xbt_assert(max_power_w > min_power_w, " : maximal power must be above minimal power (provided: %f, %f)", max_power_w, min_power_w);
+  xbt_assert(max_power_w > min_power_w, " : maximal power must be above minimal power (provided: %f, %f)", max_power_w,
+             min_power_w);
 }
 
 /** @ingroup plugin_solar_panel
@@ -115,14 +119,16 @@ SolarPanel::SolarPanel(std::string name, double area_m2, double conversion_effic
  *  @param max_power_w The maximal power delivered by the Solar Panel in W (> 0 and > min_power_w).
  *  @return A SolarPanelPtr pointing to the new SolarPanel.
  */
-SolarPanelPtr SolarPanel::init(const std::string& name, double area_m2, double conversion_efficiency, double solar_irradiance_w_per_m2, double min_power_w, double max_power_w)
+SolarPanelPtr SolarPanel::init(const std::string& name, double area_m2, double conversion_efficiency,
+                               double solar_irradiance_w_per_m2, double min_power_w, double max_power_w)
 {
   static bool plugin_inited = false;
   if (not plugin_inited) {
     init_plugin();
     plugin_inited = true;
   }
-  auto solar_panel = SolarPanelPtr(new SolarPanel(name, area_m2, conversion_efficiency, solar_irradiance_w_per_m2, min_power_w, max_power_w));
+  auto solar_panel = SolarPanelPtr(
+      new SolarPanel(name, area_m2, conversion_efficiency, solar_irradiance_w_per_m2, min_power_w, max_power_w));
   solar_panel_model_->add_solar_panel(solar_panel);
   return solar_panel;
 }
@@ -133,7 +139,7 @@ SolarPanelPtr SolarPanel::init(const std::string& name, double area_m2, double c
  */
 SolarPanelPtr SolarPanel::set_name(std::string name)
 {
-  kernel::actor::simcall_answered([this, name] {name_ = name;});
+  kernel::actor::simcall_answered([this, name] { name_ = name; });
   return this;
 }
 
@@ -144,7 +150,7 @@ SolarPanelPtr SolarPanel::set_name(std::string name)
 SolarPanelPtr SolarPanel::set_area(double area_m2)
 {
   xbt_assert(area_m2 >= 0, " : area must be > 0 (provided: %f)", area_m2);
-  kernel::actor::simcall_answered([this, area_m2] {area_m2_ = area_m2;});
+  kernel::actor::simcall_answered([this, area_m2] { area_m2_ = area_m2; });
   return this;
 }
 
@@ -155,7 +161,7 @@ SolarPanelPtr SolarPanel::set_area(double area_m2)
 SolarPanelPtr SolarPanel::set_conversion_efficiency(double e)
 {
   xbt_assert(e >= 0 and e <= 1, " : conversion efficiency must be in [0,1] (provided: %f)", e);
-  kernel::actor::simcall_answered([this, e] {conversion_efficiency_ = e;});
+  kernel::actor::simcall_answered([this, e] { conversion_efficiency_ = e; });
   return this;
 }
 
@@ -165,8 +171,10 @@ SolarPanelPtr SolarPanel::set_conversion_efficiency(double e)
  */
 SolarPanelPtr SolarPanel::set_solar_irradiance(double solar_irradiance_w_per_m2)
 {
-  xbt_assert(solar_irradiance_w_per_m2 >= 0, " : solar irradiance must be >= 0 (provided: %f)", solar_irradiance_w_per_m2);
-  kernel::actor::simcall_answered([this, solar_irradiance_w_per_m2] {solar_irradiance_w_per_m2_ = solar_irradiance_w_per_m2;});
+  xbt_assert(solar_irradiance_w_per_m2 >= 0, " : solar irradiance must be >= 0 (provided: %f)",
+             solar_irradiance_w_per_m2);
+  kernel::actor::simcall_answered(
+      [this, solar_irradiance_w_per_m2] { solar_irradiance_w_per_m2_ = solar_irradiance_w_per_m2; });
   return this;
 }
 
@@ -177,8 +185,9 @@ SolarPanelPtr SolarPanel::set_solar_irradiance(double solar_irradiance_w_per_m2)
 SolarPanelPtr SolarPanel::set_min_power(double power_w)
 {
   xbt_assert(power_w >= 0, " : minimal power must be >= 0 (provided: %f)", power_w);
-  xbt_assert(max_power_w_ > power_w, " : maximal power must be above minimal power (provided: %f, max: %f)", power_w, max_power_w_);
-  kernel::actor::simcall_answered([this, power_w] {min_power_w_ = power_w;});
+  xbt_assert(max_power_w_ > power_w, " : maximal power must be above minimal power (provided: %f, max: %f)", power_w,
+             max_power_w_);
+  kernel::actor::simcall_answered([this, power_w] { min_power_w_ = power_w; });
   return this;
 }
 
@@ -189,8 +198,9 @@ SolarPanelPtr SolarPanel::set_min_power(double power_w)
 SolarPanelPtr SolarPanel::set_max_power(double power_w)
 {
   xbt_assert(power_w > 0, " : maximal power must be > 0 (provided: %f)", power_w);
-  xbt_assert(min_power_w_ < power_w, " : maximal power must be above minimal power (provided: %f, min: %f)", power_w, min_power_w_);
-  kernel::actor::simcall_answered([this, power_w] {max_power_w_ = power_w;});
+  xbt_assert(min_power_w_ < power_w, " : maximal power must be above minimal power (provided: %f, min: %f)", power_w,
+             min_power_w_);
+  kernel::actor::simcall_answered([this, power_w] { max_power_w_ = power_w; });
   return this;
 }