feat: Working on pressure estimations feature, integrating all views and shared settings
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
import Foundation
|
||||
|
||||
#warning("Make values non-optional")
|
||||
#warning("Need to make air handler external static handle large filter pressure drops.")
|
||||
#warning("Add an exterenal static pressure strategy for if the filter is built-in or external")
|
||||
public enum EquipmentMeasurement: Equatable {
|
||||
|
||||
case airHandler(AirHandler)
|
||||
@@ -17,7 +14,7 @@ public enum EquipmentMeasurement: Equatable {
|
||||
}
|
||||
}
|
||||
|
||||
public var externalStaticPressure: Double {
|
||||
public var externalStaticPressure: Positive<Double> {
|
||||
switch self {
|
||||
case let .airHandler(airHandler):
|
||||
return airHandler.externalStaticPressure
|
||||
@@ -26,47 +23,75 @@ public enum EquipmentMeasurement: Equatable {
|
||||
}
|
||||
}
|
||||
|
||||
public var manufacturersIncludedFilterPressureDrop: Positive<Double> {
|
||||
switch self {
|
||||
case let .airHandler(airHandler):
|
||||
return airHandler.$manufacturersIncludedFilterPressureDrop
|
||||
case let .furnaceAndCoil(furnaceAndCoil):
|
||||
return furnaceAndCoil.$manufacturersIncludedFilterPressureDrop
|
||||
}
|
||||
}
|
||||
|
||||
public struct AirHandler: Equatable {
|
||||
|
||||
@Positive
|
||||
public var airflow: Double?
|
||||
public var airflow: Double
|
||||
|
||||
@Positive
|
||||
public var returnPlenumPressure: Double?
|
||||
public var manufacturersIncludedFilterPressureDrop: Double
|
||||
|
||||
@Positive
|
||||
public var returnPlenumPressure: Double
|
||||
|
||||
@Positive
|
||||
public var postFilterPressure: Double?
|
||||
public var postFilterPressure: Double
|
||||
|
||||
@Positive
|
||||
public var postCoilPressure: Double?
|
||||
public var postCoilPressure: Double
|
||||
|
||||
@Positive
|
||||
public var supplyPlenumPressure: Double?
|
||||
public var supplyPlenumPressure: Double
|
||||
|
||||
public init(
|
||||
airflow: Double? = nil,
|
||||
returnPlenumPressure: Double? = nil,
|
||||
postFilterPressure: Double? = nil,
|
||||
postCoilPressure: Double? = nil,
|
||||
supplyPlenumPressure: Double? = nil
|
||||
airflow: Double,
|
||||
manufacturersIncludedFilterPressureDrop: Double,
|
||||
returnPlenumPressure: Double,
|
||||
postFilterPressure: Double,
|
||||
postCoilPressure: Double,
|
||||
supplyPlenumPressure: Double
|
||||
) {
|
||||
self.airflow = airflow
|
||||
self.manufacturersIncludedFilterPressureDrop = manufacturersIncludedFilterPressureDrop
|
||||
self.returnPlenumPressure = returnPlenumPressure
|
||||
self.postFilterPressure = postFilterPressure
|
||||
self.postCoilPressure = postCoilPressure
|
||||
self.supplyPlenumPressure = supplyPlenumPressure
|
||||
}
|
||||
|
||||
public var externalStaticPressure: Double {
|
||||
var postFilterAdder = 0.0
|
||||
if let postFilterPressure = $postFilterPressure.positiveValue,
|
||||
postFilterPressure > 0.1
|
||||
{
|
||||
postFilterAdder = postFilterPressure - 0.1
|
||||
|
||||
public init(
|
||||
airflow: Positive<Double>,
|
||||
manufacturersIncludedFilterPressureDrop: Positive<Double>,
|
||||
returnPlenumPressure: Positive<Double>,
|
||||
postFilterPressure: Positive<Double>,
|
||||
postCoilPressure: Positive<Double>,
|
||||
supplyPlenumPressure: Positive<Double>
|
||||
) {
|
||||
self._airflow = airflow
|
||||
self._manufacturersIncludedFilterPressureDrop = manufacturersIncludedFilterPressureDrop
|
||||
self._returnPlenumPressure = returnPlenumPressure
|
||||
self._postFilterPressure = postFilterPressure
|
||||
self._postCoilPressure = postCoilPressure
|
||||
self._supplyPlenumPressure = supplyPlenumPressure
|
||||
}
|
||||
|
||||
public var externalStaticPressure: Positive<Double> {
|
||||
var postFilterAdder = Positive<Double>.zero
|
||||
if $postFilterPressure > $manufacturersIncludedFilterPressureDrop {
|
||||
postFilterAdder = $postFilterPressure - $manufacturersIncludedFilterPressureDrop
|
||||
}
|
||||
return ($returnPlenumPressure.positiveValue ?? 0)
|
||||
return $returnPlenumPressure
|
||||
+ postFilterAdder
|
||||
+ ($supplyPlenumPressure.positiveValue ?? 0)
|
||||
+ $supplyPlenumPressure
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +170,7 @@ public enum EquipmentMeasurement: Equatable {
|
||||
.init(
|
||||
airflow: checkAirflow(value: measurement.airflow, tons: tons),
|
||||
coilPressureDrop: .init(
|
||||
wrappedValue: (measurement.$postCoilPressure.positiveValue - measurement.$postFilterPressure.positiveValue) ?? 0,
|
||||
wrappedValue: (measurement.$postCoilPressure.positiveValue - measurement.$postFilterPressure.positiveValue),
|
||||
.result(.good())
|
||||
),
|
||||
externalStaticPressure: checkExternalStaticPressure(
|
||||
@@ -155,7 +180,8 @@ public enum EquipmentMeasurement: Equatable {
|
||||
filterPressureDrop: .init(
|
||||
value: measurement.$postFilterPressure.positiveValue - measurement.$returnPlenumPressure.positiveValue,
|
||||
budget: budgets.filterBudget,
|
||||
ratedPressures: ratedPressures
|
||||
ratedPressures: ratedPressures,
|
||||
ignoreMinimum: true
|
||||
),
|
||||
returnPlenumPressure: .init(
|
||||
value: measurement.$returnPlenumPressure.positiveValue,
|
||||
@@ -163,7 +189,7 @@ public enum EquipmentMeasurement: Equatable {
|
||||
ratedPressures: ratedPressures
|
||||
),
|
||||
supplyPlenumPressure: .init(
|
||||
value: measurement.$supplyPlenumPressure.positiveValue ?? 0,
|
||||
value: measurement.$supplyPlenumPressure.positiveValue,
|
||||
budget: budgets.supplyPlenumBudget,
|
||||
ratedPressures: ratedPressures
|
||||
)
|
||||
@@ -211,61 +237,61 @@ public enum EquipmentMeasurement: Equatable {
|
||||
public struct FurnaceAndCoil: Equatable {
|
||||
|
||||
@Positive
|
||||
public var airflow: Double?
|
||||
public var airflow: Double
|
||||
|
||||
@Positive
|
||||
public var returnPlenumPressure: Double?
|
||||
public var manufacturersIncludedFilterPressureDrop: Double
|
||||
|
||||
@Positive
|
||||
public var returnPlenumPressure: Double
|
||||
|
||||
@Positive
|
||||
public var postFilterPressure: Double?
|
||||
public var postFilterPressure: Double
|
||||
|
||||
@Positive
|
||||
public var preCoilPressure: Double?
|
||||
public var preCoilPressure: Double
|
||||
|
||||
@Positive
|
||||
public var supplyPlenumPressure: Double?
|
||||
public var supplyPlenumPressure: Double
|
||||
|
||||
public init(
|
||||
airflow: Double? = nil,
|
||||
returnPlenumPressure: Double? = nil,
|
||||
postFilterPressure: Double? = nil,
|
||||
preCoilPressure: Double? = nil,
|
||||
supplyPlenumPressure: Double? = nil
|
||||
airflow: Double,
|
||||
manufacturersIncludedFilterPressureDrop: Double,
|
||||
returnPlenumPressure: Double,
|
||||
postFilterPressure: Double,
|
||||
preCoilPressure: Double,
|
||||
supplyPlenumPressure: Double
|
||||
) {
|
||||
self.airflow = airflow
|
||||
self.manufacturersIncludedFilterPressureDrop = manufacturersIncludedFilterPressureDrop
|
||||
self.returnPlenumPressure = returnPlenumPressure
|
||||
self.postFilterPressure = postFilterPressure
|
||||
self.preCoilPressure = preCoilPressure
|
||||
self.supplyPlenumPressure = supplyPlenumPressure
|
||||
}
|
||||
|
||||
public var externalStaticPressure: Double {
|
||||
($postFilterPressure.positiveValue ?? 0) + ($preCoilPressure.positiveValue ?? 0)
|
||||
|
||||
public init(
|
||||
airflow: Positive<Double>,
|
||||
manufacturersIncludedFilterPressureDrop: Positive<Double>,
|
||||
returnPlenumPressure: Positive<Double>,
|
||||
postFilterPressure: Positive<Double>,
|
||||
preCoilPressure: Positive<Double>,
|
||||
supplyPlenumPressure: Positive<Double>
|
||||
) {
|
||||
self._airflow = airflow
|
||||
self._manufacturersIncludedFilterPressureDrop = manufacturersIncludedFilterPressureDrop
|
||||
self._returnPlenumPressure = returnPlenumPressure
|
||||
self._postFilterPressure = postFilterPressure
|
||||
self._preCoilPressure = preCoilPressure
|
||||
self._supplyPlenumPressure = supplyPlenumPressure
|
||||
}
|
||||
|
||||
public var externalStaticPressure: Positive<Double> {
|
||||
($postFilterPressure - $manufacturersIncludedFilterPressureDrop) + $preCoilPressure
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//extension EquipmentMeasurement.AirHandler {
|
||||
//
|
||||
// public enum Key: String, Equatable, CaseIterable {
|
||||
// case returnPlenumPressure
|
||||
// case postFilterPressure
|
||||
// case postCoilPressure
|
||||
// case supplyPlenumPressure
|
||||
// case airflow
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//extension EquipmentMeasurement.FurnaceAndCoil {
|
||||
//
|
||||
// public enum Key: String, Equatable, CaseIterable {
|
||||
// case returnPlenumPressure
|
||||
// case postFilterPressure
|
||||
// case preCoilPressure
|
||||
// case supplyPlenumPressure
|
||||
// case airflow
|
||||
// }
|
||||
//}
|
||||
fileprivate extension Flagged {
|
||||
|
||||
init(
|
||||
@@ -303,11 +329,11 @@ fileprivate extension Flagged {
|
||||
}
|
||||
|
||||
fileprivate func checkExternalStaticPressure(
|
||||
value: Double,
|
||||
value: Positive<Double>,
|
||||
ratedPressures: RatedStaticPressures
|
||||
) -> Flagged {
|
||||
.init(
|
||||
wrappedValue: value,
|
||||
wrappedValue: value.positiveValue,
|
||||
.rated(ratedPressures)
|
||||
)
|
||||
}
|
||||
@@ -330,6 +356,7 @@ extension EquipmentMeasurement {
|
||||
case .airHandler:
|
||||
return .airHandler(.init(
|
||||
airflow: 1200,
|
||||
manufacturersIncludedFilterPressureDrop: 0.1,
|
||||
returnPlenumPressure: 0.3,
|
||||
postFilterPressure: 0.6,
|
||||
postCoilPressure: 0.9,
|
||||
@@ -339,6 +366,7 @@ extension EquipmentMeasurement {
|
||||
case .furnaceAndCoil:
|
||||
return .furnaceAndCoil(.init(
|
||||
airflow: 1200,
|
||||
manufacturersIncludedFilterPressureDrop: 0.0,
|
||||
returnPlenumPressure: 0.3,
|
||||
postFilterPressure: 0.6,
|
||||
preCoilPressure: 0.4,
|
||||
|
||||
Reference in New Issue
Block a user