Files
swift-manual-s/Sources/Models/Core/Capacity.swift
Michael Housh bd33827e53
All checks were successful
CI / Ubuntu (push) Successful in 11m46s
feat: Adds heat pump heating interpolation.
2025-03-13 10:55:15 -04:00

102 lines
2.6 KiB
Swift

// A container / namespace for different capacity containers.
public enum Capacity {
public struct Cooling: Codable, Equatable, Sendable {
public let total: Int
public let sensible: Int
public var latent: Int
public init(
total: Int,
sensible: Int,
latent: Int? = nil
) {
self.total = total
self.sensible = sensible
self.latent = latent ?? total - sensible
}
}
public struct Heating: Codable, Equatable, Sendable {
public let total: Int
public init(total: Int) {
self.total = total
}
}
public struct HeatPumpHeating: Codable, Equatable, Sendable {
public let at47: Int
public let at17: Int
public init(at47: Int, at17: Int) {
self.at47 = at47
self.at17 = at17
}
}
public struct ManufacturersCooling: Codable, Equatable, Sendable {
public let airflow: Int
public let capacity: Container
public let otherCapacity: Container?
public init(
airflow: Int,
capacity: Capacity.ManufacturersCooling.Container,
otherCapacity: Capacity.ManufacturersCooling.Container? = nil
) {
self.airflow = airflow
self.capacity = capacity
self.otherCapacity = otherCapacity
}
public struct Container: Codable, Equatable, Sendable {
public let dryBulbTemperature: Int
public let wetBulbTemperature: Int
public let outdoorTemperature: Int
public let totalCapacity: Int
public let sensibleCapacity: Int
public let adjustmentMultipliers: AdjustmentMultiplier?
public var latentCapacity: Int { totalCapacity - sensibleCapacity }
public init(
dryBulbTemperature: Int,
wetBulbTemperature: Int,
outdoorTemperature: Int,
totalCapacity: Int,
sensibleCapacity: Int,
adjustmentMultipliers: AdjustmentMultiplier? = nil
) {
self.dryBulbTemperature = dryBulbTemperature
self.wetBulbTemperature = wetBulbTemperature
self.outdoorTemperature = outdoorTemperature
self.totalCapacity = totalCapacity
self.sensibleCapacity = sensibleCapacity
self.adjustmentMultipliers = adjustmentMultipliers
}
}
}
public struct ManufacturersContainer: Codable, Equatable, Sendable {
public let wetBulb: Int
public let totalCapacity: Int
public let sensibleCapacity: Int
public init(
wetBulb: Int,
totalCapacity: Int,
sensibleCapacity: Int
) {
self.wetBulb = wetBulb
self.totalCapacity = totalCapacity
self.sensibleCapacity = sensibleCapacity
}
}
}