feat: Initial filter pressure drop views, calculations need implemented.
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
public enum ClimateZone: String, Codable, Equatable, Sendable {
|
||||
case dry
|
||||
public enum ClimateZone: String, CaseIterable, Codable, Equatable, Sendable {
|
||||
// NOTE: Keep in this order.
|
||||
|
||||
case hotHumid
|
||||
case marine
|
||||
case moist
|
||||
case dry
|
||||
case marine
|
||||
|
||||
public var zoneIdentifiers: [String] {
|
||||
switch self {
|
||||
@@ -26,6 +28,6 @@ public enum ClimateZone: String, Codable, Equatable, Sendable {
|
||||
}
|
||||
|
||||
public var label: String {
|
||||
return "\(rawValue.capitalized) (\(zoneIdentifiers.joined(separator: ",")))"
|
||||
return "\(self == .hotHumid ? "Hot Humid" : rawValue.capitalized) (\(zoneIdentifiers.joined(separator: ", ")))"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,20 +4,25 @@ public enum FilterPressureDrop {
|
||||
Calculate filter pressure drop and sizing based on system requirements.
|
||||
"""
|
||||
|
||||
public enum Mode: String, CaseIterable, Codable, Equatable, Sendable {
|
||||
case basic
|
||||
case fanLaw
|
||||
}
|
||||
|
||||
public enum Request: Codable, Equatable, Sendable {
|
||||
case basic(Basic)
|
||||
case fanLaw(FanLaw)
|
||||
|
||||
public struct Basic: Codable, Equatable, Sendable {
|
||||
|
||||
let systemSize: HVACSystemSize
|
||||
let systemSize: Double
|
||||
let climateZone: ClimateZone
|
||||
let filterType: FilterType
|
||||
let filterWidth: Double
|
||||
let filterHeight: Double
|
||||
|
||||
public init(
|
||||
systemSize: HVACSystemSize,
|
||||
systemSize: Double,
|
||||
climateZone: ClimateZone,
|
||||
filterType: FilterPressureDrop.FilterType,
|
||||
filterWidth: Double,
|
||||
@@ -58,22 +63,30 @@ public enum FilterPressureDrop {
|
||||
}
|
||||
}
|
||||
|
||||
public enum Result: Codable, Equatable, Sendable {
|
||||
public enum Response: Codable, Equatable, Sendable {
|
||||
case basic(Basic)
|
||||
case fanLaw(FanLaw)
|
||||
|
||||
public struct Basic: Codable, Equatable, Sendable {
|
||||
|
||||
let filterArea: Double
|
||||
let feetPerMinute: Double
|
||||
let initialPressureDrop: Double
|
||||
let maxPressureDrop: Double
|
||||
public let filterArea: Double
|
||||
public let feetPerMinute: Double
|
||||
public let initialPressureDrop: Double
|
||||
public let maxPressureDrop: Double
|
||||
public let warnings: [String]
|
||||
|
||||
public init(filterArea: Double, feetPerMinute: Double, initialPressureDrop: Double, maxPressureDrop: Double) {
|
||||
public init(
|
||||
filterArea: Double,
|
||||
feetPerMinute: Double,
|
||||
initialPressureDrop: Double,
|
||||
maxPressureDrop: Double,
|
||||
warnings: [String]
|
||||
) {
|
||||
self.filterArea = filterArea
|
||||
self.feetPerMinute = feetPerMinute
|
||||
self.initialPressureDrop = initialPressureDrop
|
||||
self.maxPressureDrop = maxPressureDrop
|
||||
self.warnings = warnings
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +111,7 @@ public enum FilterPressureDrop {
|
||||
}
|
||||
}
|
||||
|
||||
public enum FilterType: String, Codable, Equatable, Sendable {
|
||||
public enum FilterType: String, CaseIterable, Codable, Equatable, Sendable {
|
||||
case fiberglass
|
||||
case pleatedBasic
|
||||
case pleatedBetter
|
||||
@@ -114,3 +127,34 @@ public enum FilterPressureDrop {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
public extension FilterPressureDrop.Response {
|
||||
|
||||
static func mock(mode: FilterPressureDrop.Mode) -> Self {
|
||||
switch mode {
|
||||
case .basic:
|
||||
return .basic(.init(
|
||||
filterArea: 3.47,
|
||||
feetPerMinute: 230,
|
||||
initialPressureDrop: 0.2,
|
||||
maxPressureDrop: 0.15,
|
||||
warnings: [
|
||||
"""
|
||||
Intial pressure drop is more than 50% of maximum allowable.
|
||||
Consider using a larger filter or different type with lower intial pressure drop.
|
||||
"""
|
||||
]
|
||||
))
|
||||
case .fanLaw:
|
||||
return .fanLaw(.init(
|
||||
predictedPressureDrop: 0.127,
|
||||
velocityRatio: 1.13,
|
||||
pressureRatio: 1.27,
|
||||
faceVelocity: 259
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
public enum HVACSystemSize: Double, Codable, Equatable, Sendable {
|
||||
public enum HVACSystemSize: Double, CaseIterable, Codable, Equatable, Sendable {
|
||||
case one = 1
|
||||
case oneAndAHalf = 1.5
|
||||
case two = 2
|
||||
|
||||
Reference in New Issue
Block a user