@@ -58,6 +58,7 @@ def _q_received_kw(self):
5858 def _p_received_kw (self ):
5959 return self ._get_input ("p_received_kw" )
6060
61+
6162 def q_to_receive_kw (self , prosumer ):
6263 """
6364 Calculates the heat to receive in kW.
@@ -114,6 +115,7 @@ def control_step(self, prosumer):
114115 t_sink_k = self ._t_sink_k
115116 bhp_type = self ._get_element_param (prosumer , "bhp_type" )
116117 mode = self ._mode
118+ q_max_kw = self ._get_element_param (prosumer , "q_max_kw" )
117119
118120 t_source_k = t_source_k - 273.0 # in celsius
119121 t_amb_k = t_amb_k - 273.0 # in celsius
@@ -128,7 +130,8 @@ def control_step(self, prosumer):
128130 else :
129131 t_sink_floor_heating_k = t_sink_k - 273.0
130132 t_sink_radiator_heating_k = t_sink_k - 273.0
131- q_max_kw = 5.8 + 0.21 * t_source_k
133+ if pd .isna (q_max_kw ):
134+ q_max_kw = 5.8 + 0.21 * t_source_k
132135 elif bhp_type == "water-water1" :
133136 t_min_source_k = - 10.0
134137 t_max_source_k = 25.0
@@ -139,7 +142,8 @@ def control_step(self, prosumer):
139142 else :
140143 t_sink_floor_heating_k = t_sink_k - 273.0
141144 t_sink_radiator_heating_k = t_sink_k - 273.0
142- q_max_kw = 5.8 + 0.21 * t_source_k
145+ if pd .isna (q_max_kw ):
146+ q_max_kw = 5.8 + 0.21 * t_source_k
143147 elif bhp_type == "water-water2" :
144148 t_min_source_k = 10.0
145149 t_max_source_k = 80.0
@@ -150,7 +154,8 @@ def control_step(self, prosumer):
150154 else :
151155 t_sink_floor_heating_k = t_sink_k - 273.0
152156 t_sink_radiator_heating_k = t_sink_k - 273.0
153- q_max_kw = 25.308 + 0.963 * t_source_k
157+ if pd .isna (q_max_kw ):
158+ q_max_kw = 25.308 + 0.963 * t_source_k
154159 elif bhp_type == "water-water3" :
155160 t_min_source_k = 10.0
156161 t_max_source_k = 80.0
@@ -161,7 +166,8 @@ def control_step(self, prosumer):
161166 else :
162167 t_sink_floor_heating_k = t_sink_k - 273.0
163168 t_sink_radiator_heating_k = t_sink_k - 273.0
164- q_max_kw = 29.005 + 1.035 * t_source_k
169+ if pd .isna (q_max_kw ):
170+ q_max_kw = 29.005 + 1.035 * t_source_k
165171
166172 else :
167173 raise ValueError (f"Unknown heat pump type: { bhp_type } " )
@@ -214,6 +220,7 @@ def control_step(self, prosumer):
214220 logging .warning (f"Heat pump is not operating due to the heat source "
215221 f"temperature being out of range: { float (t_source_k )} celsius" )
216222 else :
223+
217224 q_remain_kw , q_floor_kw , q_radiator_kw , cop_floor , cop_radiator = (
218225 self .first_mode_calc (q_kw , demand_kw , p_el_kw , q_max_kw ,
219226 t_sink_floor_heating_k , t_sink_radiator_heating_k , t_source_k , cop_coeff ))
@@ -329,6 +336,17 @@ def control_step(self, prosumer):
329336 pd .Series (q_radiator_kw )
330337 ])
331338
339+ self .last_result = {
340+ "cop_floor" : cop_floor ,
341+ "cop_radiator" : cop_radiator ,
342+ "pel_floor_kw" : pel_floor_kw ,
343+ "pel_radiator_kw" : pel_radiator_kw ,
344+ "q_remain_kw" : q_remain_kw ,
345+ "q_floor_kw" : q_floor_kw ,
346+ "q_radiator_kw" : q_radiator_kw
347+ }
348+
349+
332350 self .finalize (prosumer , result .T )
333351
334352 self .applied = True
0 commit comments