fix: Fixes crashes when estimating pressures with a filter pressure drop.
This commit is contained in:
@@ -143,46 +143,48 @@ extension EstimatedPressureDependency {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private func setFilterPressureDrop(
|
||||
_ filterDrop: Positive<Double>,
|
||||
measurement: inout EquipmentMeasurement
|
||||
) {
|
||||
switch measurement {
|
||||
case var .airHandler(airHandler):
|
||||
airHandler.postFilterPressure = airHandler.returnPlenumPressure +
|
||||
filterDrop.positiveValue
|
||||
measurement = .airHandler(airHandler)
|
||||
case var .furnaceAndCoil(furnace):
|
||||
furnace.postFilterPressure = furnace.returnPlenumPressure + filterDrop.positiveValue
|
||||
measurement = .furnaceAndCoil(furnace)
|
||||
}
|
||||
}
|
||||
|
||||
public func estimatedPressure(
|
||||
equipmentMeasurement: EquipmentMeasurement,
|
||||
airflow updatedAirflow: Positive<Double>,
|
||||
filterPressureDrop: Positive<Double>
|
||||
filterPressureDrop: Positive<Double>?
|
||||
) async throws -> EquipmentMeasurement {
|
||||
let estimate = try await estimatedPressure(
|
||||
var estimate = try await estimatedPressure(
|
||||
equipmentMeasurement: equipmentMeasurement,
|
||||
airflow: updatedAirflow.positiveValue
|
||||
)
|
||||
|
||||
switch estimate {
|
||||
|
||||
case var .airHandler(airHandler):
|
||||
airHandler.postFilterPressure = airHandler.returnPlenumPressure + filterPressureDrop.positiveValue
|
||||
return .airHandler(airHandler)
|
||||
|
||||
case var .furnaceAndCoil(furnaceAndCoil):
|
||||
furnaceAndCoil.postFilterPressure = furnaceAndCoil.returnPlenumPressure + filterPressureDrop.positiveValue
|
||||
return .furnaceAndCoil(furnaceAndCoil)
|
||||
}
|
||||
guard let filterPressureDrop else { return estimate }
|
||||
setFilterPressureDrop(filterPressureDrop, measurement: &estimate)
|
||||
return estimate
|
||||
}
|
||||
|
||||
public func estimatedPressure(
|
||||
equipmentMeasurement: EquipmentMeasurement,
|
||||
airflow updatedAirflow: Double,
|
||||
filterPressureDrop: Positive<Double>?
|
||||
filterPressureDrop: Double?
|
||||
) async throws -> EquipmentMeasurement {
|
||||
guard let filterPressureDrop else {
|
||||
return try await estimatedPressure(
|
||||
equipmentMeasurement: equipmentMeasurement,
|
||||
airflow: updatedAirflow
|
||||
)
|
||||
}
|
||||
return try await estimatedPressure(
|
||||
try await estimatedPressure(
|
||||
equipmentMeasurement: equipmentMeasurement,
|
||||
airflow: updatedAirflow,
|
||||
filterPressureDrop: Positive(filterPressureDrop.positiveValue)
|
||||
airflow: Positive(updatedAirflow),
|
||||
filterPressureDrop: filterPressureDrop != nil ? Positive(filterPressureDrop!) : nil
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension EstimatedPressureDependency: DependencyKey {
|
||||
|
||||
Reference in New Issue
Block a user