147 lines
3.6 KiB
Swift
147 lines
3.6 KiB
Swift
import Foundation
|
|
|
|
#warning("Make values non-optional")
|
|
public enum EquipmentMeasurement: Equatable {
|
|
|
|
case airHandler(AirHandler)
|
|
case furnaceAndCoil(FurnaceAndCoil)
|
|
|
|
public var equipmentType: EquipmentType {
|
|
switch self {
|
|
case .airHandler:
|
|
return .airHandler
|
|
case .furnaceAndCoil:
|
|
return .furnaceAndCoil
|
|
}
|
|
}
|
|
|
|
public var externalStaticPressure: Double {
|
|
switch self {
|
|
case let .airHandler(airHandler):
|
|
return airHandler.externalStaticPressure
|
|
case let .furnaceAndCoil(furnaceAndCoil):
|
|
return furnaceAndCoil.externalStaticPressure
|
|
}
|
|
}
|
|
|
|
public struct AirHandler: Equatable {
|
|
|
|
@Positive
|
|
public var airflow: Double?
|
|
|
|
@Positive
|
|
public var returnPlenumPressure: Double?
|
|
|
|
@Positive
|
|
public var postFilterPressure: Double?
|
|
|
|
@Positive
|
|
public var postCoilPressure: Double?
|
|
|
|
@Positive
|
|
public var supplyPlenumPressure: Double?
|
|
|
|
public init(
|
|
airflow: Double? = nil,
|
|
returnPlenumPressure: Double? = nil,
|
|
postFilterPressure: Double? = nil,
|
|
postCoilPressure: Double? = nil,
|
|
supplyPlenumPressure: Double? = nil
|
|
) {
|
|
self.airflow = airflow
|
|
self.returnPlenumPressure = returnPlenumPressure
|
|
self.postFilterPressure = postFilterPressure
|
|
self.postCoilPressure = postCoilPressure
|
|
self.supplyPlenumPressure = supplyPlenumPressure
|
|
}
|
|
|
|
public var externalStaticPressure: Double {
|
|
($returnPlenumPressure.positiveValue ?? 0) + ($supplyPlenumPressure.positiveValue ?? 0)
|
|
}
|
|
}
|
|
|
|
public struct FurnaceAndCoil: Equatable {
|
|
|
|
@Positive
|
|
public var airflow: Double?
|
|
|
|
@Positive
|
|
public var returnPlenumPressure: Double?
|
|
|
|
@Positive
|
|
public var postFilterPressure: Double?
|
|
|
|
@Positive
|
|
public var preCoilPressure: Double?
|
|
|
|
@Positive
|
|
public var supplyPlenumPressure: Double?
|
|
|
|
public init(
|
|
airflow: Double? = nil,
|
|
returnPlenumPressure: Double? = nil,
|
|
postFilterPressure: Double? = nil,
|
|
preCoilPressure: Double? = nil,
|
|
supplyPlenumPressure: Double? = nil
|
|
) {
|
|
self.airflow = airflow
|
|
self.returnPlenumPressure = returnPlenumPressure
|
|
self.postFilterPressure = postFilterPressure
|
|
self.preCoilPressure = preCoilPressure
|
|
self.supplyPlenumPressure = supplyPlenumPressure
|
|
}
|
|
|
|
public var externalStaticPressure: Double {
|
|
($postFilterPressure.positiveValue ?? 0) + ($preCoilPressure.positiveValue ?? 0)
|
|
}
|
|
}
|
|
}
|
|
|
|
//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
|
|
// }
|
|
//}
|
|
|
|
#if DEBUG
|
|
extension EquipmentMeasurement {
|
|
public static func mock(type equipmentType: EquipmentType) -> Self {
|
|
switch equipmentType {
|
|
case .airHandler:
|
|
return .airHandler(.init(
|
|
airflow: 1200,
|
|
returnPlenumPressure: 0.3,
|
|
postFilterPressure: 0.6,
|
|
postCoilPressure: 0.9,
|
|
supplyPlenumPressure: 0.2
|
|
))
|
|
|
|
case .furnaceAndCoil:
|
|
return .furnaceAndCoil(.init(
|
|
airflow: 1200,
|
|
returnPlenumPressure: 0.3,
|
|
postFilterPressure: 0.6,
|
|
preCoilPressure: 0.4,
|
|
supplyPlenumPressure: 0.1
|
|
))
|
|
}
|
|
}
|
|
}
|
|
#endif
|