37 lines
1021 B
Swift
37 lines
1021 B
Swift
import Logging
|
|
import ManualDClient
|
|
import ManualDCore
|
|
|
|
extension ManualDClient {
|
|
|
|
func calculate(
|
|
rooms: [Room],
|
|
designFrictionRateResult: (EquipmentInfo, EffectiveLength.MaxContainer, Double)?,
|
|
projectSHR: Double?,
|
|
logger: Logger? = nil
|
|
) async throws -> [DuctSizing.RoomContainer] {
|
|
guard let designFrictionRateResult else { return [] }
|
|
let equipmentInfo = designFrictionRateResult.0
|
|
let effectiveLengths = designFrictionRateResult.1
|
|
let designFrictionRate = designFrictionRateResult.2
|
|
|
|
guard let maxSupply = effectiveLengths.supply else { return [] }
|
|
guard let maxReturn = effectiveLengths.return else { return [] }
|
|
|
|
let ductRooms = try await self.calculateSizes(
|
|
rooms: rooms,
|
|
equipmentInfo: equipmentInfo,
|
|
maxSupplyLength: maxSupply,
|
|
maxReturnLength: maxReturn,
|
|
designFrictionRate: designFrictionRate,
|
|
projectSHR: projectSHR ?? 1.0,
|
|
logger: logger
|
|
)
|
|
|
|
logger?.debug("Rooms: \(ductRooms)")
|
|
|
|
return ductRooms
|
|
|
|
}
|
|
}
|