X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bcda50d908652a231af89aa5764f6f20d6e7f271..3f9b311ec56db95ec539001a860ae3c838c48312:/include/simgrid/plugins/battery.hpp diff --git a/include/simgrid/plugins/battery.hpp b/include/simgrid/plugins/battery.hpp index 51f20c3eb8..fc395053df 100644 --- a/include/simgrid/plugins/battery.hpp +++ b/include/simgrid/plugins/battery.hpp @@ -6,6 +6,7 @@ #ifndef SIMGRID_PLUGINS_BATTERY_HPP_ #define SIMGRID_PLUGINS_BATTERY_HPP_ +#include #include #include #include @@ -39,16 +40,19 @@ public: class Handler { friend Battery; + public: + enum Persistancy { PERSISTANT, ONESHOT }; + private: double state_of_charge_; Flow flow_; double time_delta_ = -1; std::function callback_; - bool repeat_; + Persistancy persistancy_; public: - Handler(double state_of_charge, Flow flow, bool repeat, std::function callback); - static std::shared_ptr init(double state_of_charge, Flow flow, bool repeat, + Handler(double state_of_charge, Flow flow, Persistancy p, std::function callback); + static std::shared_ptr init(double state_of_charge, Flow flow, Persistancy p, std::function callback); /** @ingroup plugin_battery @@ -77,30 +81,31 @@ public: * @return true if its a recurrent Handler. * @note For Battery::Handler objects */ - bool get_repeat() { return repeat_; } + Persistancy get_persistancy() { return persistancy_; } }; private: static std::shared_ptr battery_model_; std::string name_; - double nominal_charge_power_w_; - double nominal_discharge_power_w_; - double charge_efficiency_; - double discharge_efficiency_; - double initial_capacity_wh_; - double energy_budget_j_; - - std::map host_loads_ = {}; - std::map named_loads_ = {}; + double nominal_charge_power_w_ = -INFINITY; + double nominal_discharge_power_w_ = INFINITY; + double charge_efficiency_ = 1; + double discharge_efficiency_ = 1; + double initial_capacity_wh_ = 0; + double energy_budget_j_ = 0; + + std::map host_loads_ = {}; + std::map> named_loads_ = {}; std::vector> handlers_; - double capacity_wh_; - double energy_stored_j_; + double capacity_wh_ = 0; + double energy_stored_j_ = 0; double energy_provided_j_ = 0; double energy_consumed_j_ = 0; double last_updated_ = 0; + explicit Battery() = default; explicit Battery(const std::string& name, double state_of_charge, double nominal_charge_power_w, double nominal_discharge_power_w, double charge_efficiency, double discharge_efficiency, double initial_capacity_wh, int cycles); @@ -121,18 +126,21 @@ private: #endif public: + static BatteryPtr init(); static BatteryPtr init(const std::string& name, double state_of_charge, double nominal_charge_power_w, double nominal_discharge_power_w, double charge_efficiency, double discharge_efficiency, double initial_capacity_wh, int cycles); void set_load(const std::string& name, double power_w); + void set_load(const std::string& name, bool active); void connect_host(s4u::Host* host, bool active = true); + std::string get_name() const { return name_; } double get_state_of_charge(); double get_state_of_health(); double get_capacity(); double get_energy_provided(); double get_energy_consumed(); double get_energy_stored(std::string unit = "J"); - std::shared_ptr schedule_handler(double state_of_charge, Flow flow, bool repeat, + std::shared_ptr schedule_handler(double state_of_charge, Flow flow, Handler::Persistancy p, std::function callback); std::vector> get_handlers(); void delete_handler(std::shared_ptr handler);