Files
leistungsbilanz-ts/src/domain/calculations/circuit-power-calculation.ts
T

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;
}