Files

54 lines
1.3 KiB
Swift

import Foundation
public struct RatedEnvelope<Rating>: Equatable, Sendable {
public var maximum: Double
public var minimum: Double
public var rated: Double
public init(
maximum: Double,
minimum: Double,
rated: Double
) {
self.maximum = maximum
self.minimum = minimum
self.rated = rated
}
}
// MARK: - Namespaces
public enum StaticPressure { }
public enum AirflowPerTon { }
public enum AirflowLimits { }
// MARK: - Static Pressures
public typealias RatedStaticPressures = RatedEnvelope<StaticPressure>
extension RatedStaticPressures {
public init() {
self.init(maximum: 0.8, minimum: 0.3, rated: 0.5)
}
}
// MARK: - Airflow Per Ton
public typealias RatedAirflowPerTon = RatedEnvelope<AirflowPerTon>
extension RatedAirflowPerTon {
public init() {
self.init(maximum: 500, minimum: 350, rated: 400)
}
}
// MARK: - Airflow Limits
public typealias RatedAirflowLimits = RatedEnvelope<AirflowLimits>
extension RatedAirflowLimits {
public init(
tons: EquipmentMetadata.CoolingCapacity,
airflowPerTon: RatedAirflowPerTon = .init()
) {
self.init(
maximum: airflowPerTon.maximum * tons.rawValue,
minimum: airflowPerTon.minimum * tons.rawValue,
rated: airflowPerTon.rated * tons.rawValue
)
}
}