feat: Working on pressure estimations feature, integrating all views and shared settings
This commit is contained in:
@@ -66,15 +66,15 @@ public struct EstimatedPressureDependency {
|
||||
|
||||
extension EstimatedPressureDependency {
|
||||
private func estimatedPressure(
|
||||
existingPressure: Positive<Double?>,
|
||||
existingAirflow: Double,
|
||||
targetAirflow: Double
|
||||
existingPressure: Positive<Double>,
|
||||
existingAirflow: Positive<Double>,
|
||||
targetAirflow: Positive<Double>
|
||||
) async throws -> Positive<Double> {
|
||||
try await self.estimatedPressure(
|
||||
.init(
|
||||
existingPressure: existingPressure.positiveValue ?? 0,
|
||||
existingAirflow: existingAirflow,
|
||||
targetAirflow: targetAirflow
|
||||
existingPressure: existingPressure.positiveValue,
|
||||
existingAirflow: existingAirflow.positiveValue,
|
||||
targetAirflow: targetAirflow.positiveValue
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -83,78 +83,75 @@ extension EstimatedPressureDependency {
|
||||
equipmentMeasurement: EquipmentMeasurement,
|
||||
airflow updatedAirflow: Double
|
||||
) async throws -> EquipmentMeasurement {
|
||||
let updatedAirflow = Positive(updatedAirflow)
|
||||
|
||||
switch equipmentMeasurement {
|
||||
case let .airHandler(airHandler):
|
||||
guard let existingAirflow = airHandler.airflow else {
|
||||
throw InvalidAirflow()
|
||||
}
|
||||
return try await .airHandler(
|
||||
.init(
|
||||
airflow: updatedAirflow,
|
||||
manufacturersIncludedFilterPressureDrop: airHandler.$manufacturersIncludedFilterPressureDrop,
|
||||
returnPlenumPressure: self.estimatedPressure(
|
||||
existingPressure: airHandler.$returnPlenumPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: airHandler.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
),
|
||||
postFilterPressure: self.estimatedPressure(
|
||||
existingPressure: airHandler.$postFilterPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: airHandler.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
),
|
||||
postCoilPressure: self.estimatedPressure(
|
||||
existingPressure: airHandler.$postCoilPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: airHandler.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
),
|
||||
supplyPlenumPressure: self.estimatedPressure(
|
||||
existingPressure: airHandler.$supplyPlenumPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: airHandler.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
case let .furnaceAndCoil(furnaceAndCoil):
|
||||
guard let existingAirflow = furnaceAndCoil.airflow else {
|
||||
throw InvalidAirflow()
|
||||
}
|
||||
return try await .furnaceAndCoil(
|
||||
.init(
|
||||
airflow: updatedAirflow,
|
||||
manufacturersIncludedFilterPressureDrop: furnaceAndCoil.$manufacturersIncludedFilterPressureDrop,
|
||||
returnPlenumPressure: self.estimatedPressure(
|
||||
existingPressure: furnaceAndCoil.$returnPlenumPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: furnaceAndCoil.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
),
|
||||
postFilterPressure: self.estimatedPressure(
|
||||
existingPressure: furnaceAndCoil.$postFilterPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: furnaceAndCoil.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
),
|
||||
preCoilPressure: self.estimatedPressure(
|
||||
existingPressure: furnaceAndCoil.$preCoilPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: furnaceAndCoil.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
),
|
||||
supplyPlenumPressure: self.estimatedPressure(
|
||||
existingPressure: furnaceAndCoil.$supplyPlenumPressure,
|
||||
existingAirflow: existingAirflow,
|
||||
existingAirflow: furnaceAndCoil.$airflow,
|
||||
targetAirflow: updatedAirflow
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public func estimatedPressure(
|
||||
equipmentMeasurement: EquipmentMeasurement,
|
||||
airflow updatedAirflow: Double,
|
||||
airflow updatedAirflow: Positive<Double>,
|
||||
filterPressureDrop: Positive<Double>
|
||||
) async throws -> EquipmentMeasurement {
|
||||
let estimate = try await estimatedPressure(
|
||||
equipmentMeasurement: equipmentMeasurement,
|
||||
airflow: updatedAirflow
|
||||
airflow: updatedAirflow.positiveValue
|
||||
)
|
||||
|
||||
switch estimate {
|
||||
@@ -183,7 +180,7 @@ extension EstimatedPressureDependency {
|
||||
return try await estimatedPressure(
|
||||
equipmentMeasurement: equipmentMeasurement,
|
||||
airflow: updatedAirflow,
|
||||
filterPressureDrop: filterPressureDrop
|
||||
filterPressureDrop: Positive(filterPressureDrop.positiveValue)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -219,42 +216,6 @@ extension EstimatedPressureDependency: DependencyKey {
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate extension EquipmentMeasurement.AirHandler {
|
||||
init(
|
||||
airflow: Double? = nil,
|
||||
returnPlenumPressure: Positive<Double>,
|
||||
postFilterPressure: Positive<Double>,
|
||||
postCoilPressure: Positive<Double>,
|
||||
supplyPlenumPressure: Positive<Double>
|
||||
) {
|
||||
self.init(
|
||||
airflow: airflow,
|
||||
returnPlenumPressure: returnPlenumPressure.positiveValue,
|
||||
postFilterPressure: postFilterPressure.positiveValue,
|
||||
postCoilPressure: postCoilPressure.positiveValue,
|
||||
supplyPlenumPressure: supplyPlenumPressure.positiveValue
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate extension EquipmentMeasurement.FurnaceAndCoil {
|
||||
init(
|
||||
airflow: Double? = nil,
|
||||
returnPlenumPressure: Positive<Double>,
|
||||
postFilterPressure: Positive<Double>,
|
||||
preCoilPressure: Positive<Double>,
|
||||
supplyPlenumPressure: Positive<Double>
|
||||
) {
|
||||
self.init(
|
||||
airflow: airflow,
|
||||
returnPlenumPressure: returnPlenumPressure.positiveValue,
|
||||
postFilterPressure: postFilterPressure.positiveValue,
|
||||
preCoilPressure: preCoilPressure.positiveValue,
|
||||
supplyPlenumPressure: supplyPlenumPressure.positiveValue
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
struct InvalidAirflow: Error { }
|
||||
|
||||
enum LessThanZeroError: Error {
|
||||
|
||||
Reference in New Issue
Block a user