namespace simgrid::plugins {
+/** @ingroup plugin_chiller */
class Chiller;
+/** @ingroup plugin_chiller */
using ChillerPtr = boost::intrusive_ptr<Chiller>;
XBT_PUBLIC void intrusive_ptr_release(Chiller* o);
XBT_PUBLIC void intrusive_ptr_add_ref(Chiller* o);
double specific_heat_j_per_kg_per_c_;
double alpha_;
double cooling_efficiency_;
+ double temp_in_c_;
+ double temp_out_c_;
double goal_temp_c_;
double max_power_w_;
std::set<const s4u::Host*> hosts_ = {};
bool active_ = true;
- double temp_in_c_;
- double temp_out_c_;
- double power_w_ = 0;
- double energy_consumed_j_ = 0;
- double last_updated_ = 0;
+ double power_w_ = 0;
+ double energy_consumed_j_ = 0;
+ double last_updated_ = 0;
explicit Chiller(const std::string& name, double air_mass_kg, double specific_heat_j_per_kg_per_c, double alpha,
double cooling_efficiency, double initial_temp_c, double goal_temp_c, double max_power_w);
friend void intrusive_ptr_add_ref(Chiller* o) { o->refcount_.fetch_add(1, std::memory_order_relaxed); }
#endif
+ static xbt::signal<void(Chiller*)> on_power_change;
+ xbt::signal<void(Chiller*)> on_this_power_change;
+
public:
static ChillerPtr init(const std::string& name, double air_mass_kg, double specific_heat_j_per_kg_per_c, double alpha,
double cooling_efficiency, double initial_temp_c, double goal_temp_c, double max_power_w);
ChillerPtr set_goal_temp(double goal_temp_c);
ChillerPtr set_max_power(double max_power_w);
ChillerPtr set_active(bool active);
- ChillerPtr add_host(s4u::Host* host);
- ChillerPtr remove_host(s4u::Host* host);
+ ChillerPtr add_host(simgrid::s4u::Host* host);
+ ChillerPtr remove_host(simgrid::s4u::Host* host);
std::string get_name() { return name_; }
const char* get_cname() { return name_.c_str(); }
double get_max_power() { return max_power_w_; }
bool is_active() { return active_; }
double get_temp_in() { return temp_in_c_; }
- double get_temp_out() { return temp_out_c_; }
double get_power() { return power_w_; }
double get_energy_consumed() { return energy_consumed_j_; }
+ double get_time_to_goal_temp();
};
} // namespace simgrid::plugins