52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
export function calculateRowTotalPower(
|
|
quantity: number,
|
|
powerPerUnit: number,
|
|
simultaneityFactor: number
|
|
): number {
|
|
return quantity * powerPerUnit * simultaneityFactor;
|
|
}
|
|
|
|
export function calculateCircuitTotalPower(
|
|
rows: Array<{ quantity: number; powerPerUnit: number; simultaneityFactor: number }>
|
|
): number {
|
|
return rows.reduce(
|
|
(sum, row) => sum + calculateRowTotalPower(row.quantity, row.powerPerUnit, row.simultaneityFactor),
|
|
0
|
|
);
|
|
}
|
|
|
|
export function calculateSectionTotalPower(
|
|
circuits: Array<{ circuitTotalPower: number }>
|
|
): number {
|
|
return circuits.reduce(
|
|
(sum, circuit) => sum + circuit.circuitTotalPower,
|
|
0
|
|
);
|
|
}
|
|
|
|
export function calculateDistributionBoardTotalPower(
|
|
sections: Array<{ sectionTotalPower: number }>
|
|
): number {
|
|
return sections.reduce(
|
|
(sum, section) => sum + section.sectionTotalPower,
|
|
0
|
|
);
|
|
}
|
|
|
|
export function applyDistributionBoardSimultaneityFactor(
|
|
totalPower: number,
|
|
simultaneityFactor: number
|
|
): number {
|
|
if (
|
|
!Number.isFinite(simultaneityFactor) ||
|
|
simultaneityFactor < 0 ||
|
|
simultaneityFactor > 1
|
|
) {
|
|
throw new Error(
|
|
"Distribution-board simultaneity factor must be between zero and one."
|
|
);
|
|
}
|
|
return totalPower * simultaneityFactor;
|
|
}
|
|
|