Files
online-energieausweis/src/lib/Berechnungen/BedarfsausweisWohnen/A9BerechnungNutzenergiebedarfTrinkwarmwasser.ts
2025-01-31 22:08:58 +01:00

72 lines
1.8 KiB
TypeScript

import { BedarfsausweisWohnenClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types.js";
import { linearInterpolation } from "js-interpolate"
/**
* Implementierung Tabelle E.7 — Tabelle A.9 - Trinkwassererwärmung - Berechnung des Wärmebedarfs zur Trinkwassererwärmung
*
* @see 18599-Tabellenverfahren-Wohngebaeude.pdf
* @export
* @param {BedarfsausweisWohnenClient} ausweis
* @param {GebaeudeAufnahmeClient} gebaeude_aufnahme
*/
export function A9BerechnungNutzenergiebedarfTrinkwarmwasser(ausweis: BedarfsausweisWohnenClient, gebaeude_aufnahme: GebaeudeAufnahmeClient) {
// A_NGF aus Eingabe
const bezugsflaeche = 154.2;
const einheiten = 1;
// A_NGF,WE,m
const flaecheProEinheit = bezugsflaeche / einheiten;
// q_w,b
let flaechenBezogenerWaermebedarf: number;
if (flaecheProEinheit < 10) {
flaechenBezogenerWaermebedarf = 16.5
} else if (flaecheProEinheit < 160) {
flaechenBezogenerWaermebedarf = linearInterpolation([{
x: 10,
y: 16
}, {
x: 150,
y: 9
}], flaecheProEinheit)
} else {
flaechenBezogenerWaermebedarf = 8.5
}
// Q_w,b
// Trinkwasser Wärmebedarf übers gesamte Jahr gerechnet. Falls ein bestimmter Monat gesucht wird kann man einfach (Q_w,b / 365 * d_mth) rechnen.
const tageMonat = {
Januar: 31,
Februar: 28,
Maerz: 31,
April: 30,
Mai: 31,
Juni: 30,
Juli: 31,
August: 31,
September: 30,
Oktober: 31,
November: 30,
Dezember: 31
};
const trinkwasserWaermebedarf = Object.fromEntries(
Object.entries(tageMonat).map(([monat, tage]) => [
monat,
(bezugsflaeche * flaechenBezogenerWaermebedarf * tage) / 365
])
);
const trinkwasserWaermebedarfJahr = Object.values(trinkwasserWaermebedarf).reduce((sum, value) => sum + value, 0);
return {
trinkwasserWaermebedarf,
flaechenBezogenerWaermebedarf,
bezugsflaeche,
trinkwasserWaermebedarfJahr
}
}