188 lines
5.7 KiB
Swift
188 lines
5.7 KiB
Swift
public enum Interpolate {
|
|
|
|
public struct Request: Codable, Equatable, Sendable {
|
|
|
|
public let designInfo: DesignInfo
|
|
public let houseLoad: HouseLoad
|
|
public let systemType: SystemType
|
|
public let interpolation: InterpolationRequest
|
|
|
|
public init(
|
|
designInfo: DesignInfo,
|
|
houseLoad: HouseLoad,
|
|
systemType: SystemType,
|
|
interpolation: InterpolationRequest
|
|
) {
|
|
self.designInfo = designInfo
|
|
self.houseLoad = houseLoad
|
|
self.systemType = systemType
|
|
self.interpolation = interpolation
|
|
}
|
|
}
|
|
|
|
public struct Response: Codable, Equatable, Sendable {
|
|
|
|
public let failed: Bool
|
|
public let failures: [String]?
|
|
public let interpolatedCapacity: Capacity.Cooling
|
|
public let excessLatent: Int
|
|
public let finalCapacityAtDesign: Capacity.Cooling
|
|
public let altitudeDerating: AdjustmentMultiplier?
|
|
public let capacityAsPercentOfLoad: Capacity.Cooling
|
|
public let sizingLimits: SizingLimits.Response
|
|
|
|
public init(
|
|
failures: [String]? = nil,
|
|
interpolatedCapacity: Capacity.Cooling,
|
|
excessLatent: Int,
|
|
finalCapacityAtDesign: Capacity.Cooling,
|
|
altitudeDerating: AdjustmentMultiplier? = nil,
|
|
capacityAsPercentOfLoad: Capacity.Cooling,
|
|
sizingLimits: SizingLimits.Response
|
|
) {
|
|
self.failed = failures != nil ? failures!.count > 0 : false
|
|
self.failures = failures
|
|
self.interpolatedCapacity = interpolatedCapacity
|
|
self.excessLatent = excessLatent
|
|
self.finalCapacityAtDesign = finalCapacityAtDesign
|
|
self.altitudeDerating = altitudeDerating
|
|
self.capacityAsPercentOfLoad = capacityAsPercentOfLoad
|
|
self.sizingLimits = sizingLimits
|
|
}
|
|
}
|
|
|
|
public enum InterpolationRequest: Codable, Equatable, Sendable {
|
|
case noInterpolation(Capacity.ManufacturersCooling, AdjustmentMultiplier? = nil)
|
|
case oneWayIndoor(OneWayIndoor)
|
|
case oneWayOutdoor(OneWayOutdoor)
|
|
case twoWay(TwoWay)
|
|
}
|
|
|
|
public struct OneWayIndoor: Codable, Equatable, Sendable {
|
|
|
|
public let airflow: Int
|
|
public let outdoorTemperature: Int
|
|
public let capacities: Capacities
|
|
public let adjustmentMultipliers: AdjustmentMultiplier?
|
|
|
|
public init(
|
|
airflow: Int,
|
|
outdoorTemperature: Int,
|
|
capacities: Interpolate.OneWayIndoor.Capacities,
|
|
adjustmentMultipliers: AdjustmentMultiplier? = nil
|
|
) {
|
|
self.airflow = airflow
|
|
self.outdoorTemperature = outdoorTemperature
|
|
self.capacities = capacities
|
|
self.adjustmentMultipliers = adjustmentMultipliers
|
|
}
|
|
|
|
public struct Capacities: Codable, Equatable, Sendable {
|
|
|
|
public let aboveDewpoint: Capacity.ManufacturersContainer
|
|
public let belowDewpoint: Capacity.ManufacturersContainer
|
|
|
|
public init(aboveDewpoint: Capacity.ManufacturersContainer, belowDewpoint: Capacity.ManufacturersContainer) {
|
|
self.aboveDewpoint = aboveDewpoint
|
|
self.belowDewpoint = belowDewpoint
|
|
}
|
|
}
|
|
}
|
|
|
|
public struct OneWayOutdoor: Codable, Equatable, Sendable {
|
|
|
|
public let airflow: Int
|
|
public let wetBulb: Int
|
|
public let capacities: Capacities
|
|
public let adjustmentMultipliers: AdjustmentMultiplier?
|
|
|
|
public init(
|
|
airflow: Int,
|
|
wetBulb: Int,
|
|
capacities: Interpolate.OneWayOutdoor.Capacities,
|
|
adjustmentMultipliers: AdjustmentMultiplier? = nil
|
|
) {
|
|
self.airflow = airflow
|
|
self.wetBulb = wetBulb
|
|
self.capacities = capacities
|
|
self.adjustmentMultipliers = adjustmentMultipliers
|
|
}
|
|
|
|
public struct Capacities: Codable, Equatable, Sendable {
|
|
|
|
public let aboveOutdoor: Capacity
|
|
public let belowOutdoor: Capacity
|
|
|
|
public init(
|
|
aboveOutdoor: Interpolate.OneWayOutdoor.Capacities.Capacity,
|
|
belowOutdoor: Interpolate.OneWayOutdoor.Capacities.Capacity
|
|
) {
|
|
self.aboveOutdoor = aboveOutdoor
|
|
self.belowOutdoor = belowOutdoor
|
|
}
|
|
|
|
public struct Capacity: Codable, Equatable, Sendable {
|
|
|
|
public let outdoorTemperature: Int
|
|
public let totalCapacity: Int
|
|
public let sensibleCapacity: Int
|
|
|
|
public init(outdoorTemperature: Int, totalCapacity: Int, sensibleCapacity: Int) {
|
|
self.outdoorTemperature = outdoorTemperature
|
|
self.totalCapacity = totalCapacity
|
|
self.sensibleCapacity = sensibleCapacity
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public struct TwoWay: Codable, Equatable, Sendable {
|
|
|
|
public let airflow: Int
|
|
public let capacities: Capacities
|
|
public let adjustmentMultipliers: AdjustmentMultiplier?
|
|
|
|
public init(
|
|
airflow: Int,
|
|
capacities: Interpolate.TwoWay.Capacities,
|
|
adjustmentMultipliers: AdjustmentMultiplier? = nil
|
|
) {
|
|
self.airflow = airflow
|
|
self.capacities = capacities
|
|
self.adjustmentMultipliers = adjustmentMultipliers
|
|
}
|
|
|
|
public struct Capacities: Codable, Equatable, Sendable {
|
|
|
|
public let above: CapacityContainer
|
|
public let below: CapacityContainer
|
|
|
|
public init(
|
|
above: Interpolate.TwoWay.Capacities.CapacityContainer,
|
|
below: Interpolate.TwoWay.Capacities.CapacityContainer
|
|
) {
|
|
self.above = above
|
|
self.below = below
|
|
}
|
|
|
|
public struct CapacityContainer: Codable, Equatable, Sendable {
|
|
|
|
public let outdoorTemperature: Int
|
|
public let aboveDewPoint: Capacity.ManufacturersContainer
|
|
public let belowDewPoint: Capacity.ManufacturersContainer
|
|
|
|
public init(
|
|
outdoorTemperature: Int,
|
|
aboveDewPoint: Capacity.ManufacturersContainer,
|
|
belowDewPoint: Capacity.ManufacturersContainer
|
|
) {
|
|
self.outdoorTemperature = outdoorTemperature
|
|
self.aboveDewPoint = aboveDewPoint
|
|
self.belowDewPoint = belowDewPoint
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|