fix: Fixes crashes when estimating pressures with a filter pressure drop.

This commit is contained in:
2024-06-20 08:43:55 -04:00
parent 4e66a516e0
commit ebc9bf3ea6
3 changed files with 129 additions and 38 deletions

View File

@@ -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 {