Files
swift-estimated-pressures-core/Sources/SharedModels/EquipmentMeasurement.swift
2024-05-24 16:44:41 -04:00

118 lines
2.9 KiB
Swift

import Foundation
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 {
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 {
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
}
}