Adjust pump statuses for power loss and add nominal displays
This commit is contained in:
@@ -230,23 +230,25 @@ class Reactor:
|
||||
unit_enabled = (
|
||||
self.primary_pump_active and idx < len(self.primary_pump_units) and self.primary_pump_units[idx]
|
||||
)
|
||||
powered = power_ratio > 0.1
|
||||
desired_flow = target_flow if unit_enabled else 0.0
|
||||
desired_pressure = target_pressure if unit_enabled else 0.5
|
||||
if not powered:
|
||||
desired_flow = 0.0
|
||||
desired_pressure = 0.5
|
||||
pump_state.flow_rate = self._ramp_value(
|
||||
pump_state.flow_rate, desired_flow, dt, self.primary_pump.spool_time
|
||||
)
|
||||
pump_state.pressure = self._ramp_value(
|
||||
pump_state.pressure, desired_pressure, dt, self.primary_pump.spool_time
|
||||
)
|
||||
pump_state.active = (unit_enabled and power_ratio > 0.05) or pump_state.flow_rate > 1.0
|
||||
if unit_enabled and pump_state.flow_rate < max(1.0, desired_flow * 0.8):
|
||||
pump_state.active = unit_enabled and powered and pump_state.flow_rate > 1.0
|
||||
if not powered or not unit_enabled:
|
||||
pump_state.status = "STOPPING" if pump_state.flow_rate > 1.0 else "OFF"
|
||||
elif pump_state.flow_rate < max(1.0, desired_flow * 0.8):
|
||||
pump_state.status = "STARTING"
|
||||
elif not unit_enabled and pump_state.flow_rate > 1.0:
|
||||
pump_state.status = "STOPPING"
|
||||
elif pump_state.active:
|
||||
pump_state.status = "RUN"
|
||||
else:
|
||||
pump_state.status = "OFF"
|
||||
pump_state.status = "RUN"
|
||||
total_flow += pump_state.flow_rate
|
||||
loop_pressure = max(loop_pressure, pump_state.pressure)
|
||||
state.primary_loop.mass_flow_rate = total_flow
|
||||
@@ -273,28 +275,30 @@ class Reactor:
|
||||
total_flow = 0.0
|
||||
target_pressure = 12.0 * 0.75 + 2.0
|
||||
loop_pressure = 0.5
|
||||
target_flow = self.secondary_pump.flow_rate(0.75)
|
||||
target_flow = self.secondary_pump.flow_rate(0.75) * power_ratio
|
||||
for idx, pump_state in enumerate(state.secondary_pumps):
|
||||
unit_enabled = (
|
||||
self.secondary_pump_active and idx < len(self.secondary_pump_units) and self.secondary_pump_units[idx]
|
||||
)
|
||||
powered = power_ratio > 0.1
|
||||
desired_flow = target_flow if unit_enabled else 0.0
|
||||
desired_pressure = target_pressure if unit_enabled else 0.5
|
||||
if not powered:
|
||||
desired_flow = 0.0
|
||||
desired_pressure = 0.5
|
||||
pump_state.flow_rate = self._ramp_value(
|
||||
pump_state.flow_rate, desired_flow, dt, self.secondary_pump.spool_time
|
||||
)
|
||||
pump_state.pressure = self._ramp_value(
|
||||
pump_state.pressure, desired_pressure, dt, self.secondary_pump.spool_time
|
||||
)
|
||||
pump_state.active = unit_enabled or pump_state.flow_rate > 1.0
|
||||
if unit_enabled and pump_state.flow_rate < max(1.0, desired_flow * 0.8):
|
||||
pump_state.active = unit_enabled and powered and pump_state.flow_rate > 1.0
|
||||
if not powered or not unit_enabled:
|
||||
pump_state.status = "STOPPING" if pump_state.flow_rate > 1.0 else "OFF"
|
||||
elif pump_state.flow_rate < max(1.0, desired_flow * 0.8):
|
||||
pump_state.status = "STARTING"
|
||||
elif not unit_enabled and pump_state.flow_rate > 1.0:
|
||||
pump_state.status = "STOPPING"
|
||||
elif pump_state.active:
|
||||
pump_state.status = "RUN"
|
||||
else:
|
||||
pump_state.status = "OFF"
|
||||
pump_state.status = "RUN"
|
||||
total_flow += pump_state.flow_rate
|
||||
loop_pressure = max(loop_pressure, pump_state.pressure)
|
||||
state.secondary_loop.mass_flow_rate = total_flow
|
||||
|
||||
Reference in New Issue
Block a user