Files
online-energieausweis/src/lib/Berechnungen/BedarfsausweisWohnen/BedarfsausweisWohnen_18599.ts
2025-08-06 18:46:30 +02:00

1410 lines
75 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { funktionMonatlicherBelastungsgradT9T11 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgradT9T11.js";
import { funktionBilanzInnentemperaturT8T10 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperaturT8T10.js";
import { funktionAusnutzungsgradT18 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgradT18.js";
import { linearInterpolation } from "js-interpolate"
import { AufnahmeClient, BedarfsausweisWohnenClient } from "#components/Ausweis/types.js"
import { Enums } from "#lib/client/prisma.js";
import { datasetGesamtluftWechselKorrekturfaktorT12T13 } from "#lib/Berechnungen/BedarfsausweisWohnen/datasetGesamtluftWechselKorrekturfaktorT12T13.js";
import { A7A2BerechnungWaermequellenSolareEinstrahlung } from "#lib/Berechnungen/BedarfsausweisWohnen/A7A2BerechnungWaermequellenSolareEinstrahlung.js";
import { funktionKorrekturfaktorMittlereBelastungT32 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorMittlereBelastungT32.js";
import { funktionNennleistungWaermeerzeugerWarmwasserT139 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionNennleistungWaermeerzeugerWarmwasserT139.js";
import { funktionAufwandszahlErzeugungHeizungT77 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionAufwandszahlErzeugungHeizungT77.js";
import { funktionKorrekturfaktorAufwandszahlenErzeugungHeizungT78 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorAufwandszahlenErzeugungHeizungT78.js";
import { funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtBrennwertT79 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtBrennwertT79.js";
import { funktionKorrekturfaktorAufwandszahlenErzeugungHeizoelBrennwertT80 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorAufwandszahlenErzeugungHeizoelBrennwertT80.js";
import { funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtkeinBrennwertT81 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtkeinBrennwertT81.js";
import { funktionAufwandszahlErzeugungHeizungUmlaufWasserheizerT82 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionAufwandszahlErzeugungHeizungUmlaufWasserheizerT82.js";
import { funktionKorrekturfaktorAufwandszahlenErzeugungHeizungUmlaufWasserheizerT82 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorAufwandszahlenErzeugungHeizungUmlaufWasserheizerT82.js";
import { funktionWaermeVerlusteTrinkwarmwasserSpeicherT55T56 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionWaermeVerlusteTrinkwarmwasserSpeicherT55T56.js";
import { FixedLengthArray } from "./types.js";
export function BedarfsausweisWohnen_18599(
ausweis: BedarfsausweisWohnenClient,
aufnahme: AufnahmeClient
): any {
// Tabelle A.5 — Gebäude Berechnung Wärmetransferkoeffizienten
// Definition Variablen (Konstanten von DIN Vorgegeben)
const minimaleAussentemperatur = -12;
const innenTemperatur = 20;
const DeckenStaerke = 0.2;
// Wir rechnen mit Wärmebrückenzuschlag von 0,1 da kein Gleichwertigkeitsnachweis vorliegt und die Wärmebrücken nicht individuell berechnet werden
const WaermeBrueckenZuschlag = 0.10;
// Von DIN vorgegeben wird in der Regel nicht verändert
const teilBeheizung = "mit Teilbeheizung";
const GeschossHoehe = ausweis.geschosshoehe; // aus Eingabeformular Abschnitt C
const NettoGrundflaeche = aufnahme.nutzflaeche; // aus Eingabeformular Abschnitt B
const ObjektBruttoVolumen = ausweis.volumen; // aus Eingabeformular Abschnitt C
const LichteRaumHoehe = (GeschossHoehe ?? 0) - DeckenStaerke;
const ObjektNettoVolumen = (NettoGrundflaeche ?? 0) * LichteRaumHoehe;
const WohnEinheiten = aufnahme.einheiten || 1; // aus Eingabe
const maximaleTemperaturDifferenz = innenTemperatur - minimaleAussentemperatur;
// PLanungswerte aus Eingabeformular
const planungswerte_bauteil = ausweis.planungswerte_bauteil; // aus Eingabeformular Abschnitt F
let FaktorNettoVolumen = 0.76; // Zuweisung damit nicht null
// Berechnung für Tabelle A.5 Wärmetransferkoeffizienten
if (WohnEinheiten < 3) { FaktorNettoVolumen = 0.76; } else { FaktorNettoVolumen = 0.8; }
const ObjektNettoVolumenAlternativ = ObjektBruttoVolumen * FaktorNettoVolumen;
const ErgebnisseBauteile = planungswerte_bauteil.map(bauteil => {
const WaermeTransferKoeffizient = bauteil.WaermeDurchgangsKoeffizient * bauteil.Flaeche;
const WaermeTransferKoeffizientKorrektur = WaermeTransferKoeffizient * bauteil.TemperaturKorrekturFaktor;
const maximalerWaermestrom = WaermeTransferKoeffizientKorrektur * maximaleTemperaturDifferenz;
return {
Art: bauteil.art,
Orientierung: bauteil.orientierung,
Flaeche: bauteil.Flaeche,
WaermeDurchgangsKoeffizient: bauteil.WaermeDurchgangsKoeffizient,
WaermeTransferKoeffizient,
TemperaturKorrekturFaktor: bauteil.TemperaturKorrekturFaktor,
WaermeTransferKoeffizientKorrektur,
maximalerWaermestrom
};
});
const GesamtHuellFlaeche = planungswerte_bauteil.reduce((sum, bauteil) => sum + bauteil.Flaeche, 0);
const HuellFlaechenVolumenVerhaeltnis = GesamtHuellFlaeche / ObjektNettoVolumenAlternativ;
const WaermeTransferKoeffizientWaeremebruecken = GesamtHuellFlaeche * WaermeBrueckenZuschlag;
const maximalerWaermestromWaermebruecken = WaermeTransferKoeffizientWaeremebruecken * maximaleTemperaturDifferenz;
const WaermeTransferKoeffizientBauteile =
(ErgebnisseBauteile.reduce((sum, bauteil) => sum + bauteil.WaermeTransferKoeffizientKorrektur, 0))
+ WaermeTransferKoeffizientWaeremebruecken;
const maximalerWaermestromBauteile = WaermeTransferKoeffizientBauteile * maximaleTemperaturDifferenz;
// Ende Berechnung für Tabelle A.5 Wärmetransferkoeffizienten
//
// Formblatt A.6 Gebäude maximaler Wärmeströme
// Zuweisung damit nicht null
let GesamtLuftwechselN = 0;
let FaktorWin2 = 0;
let WaermeTransferKoeffizientLueftungN = 0;
let maximalerWaermestromLueftungN = 0;
let WaermeTransferKoeffizientGesamt = 0;
let maximalerWaermestromGesamt = 0;
let mechanischeLueftung = "";
let maximaleHeizlast = 0;
let FlaechgenbezogeneHeizlast = 0;
let GebaeudeSchwere = 0;
let ZeitKonstante = 1;
// Aus Tabelle 12 - Ausgabe der Werte aus datasetGesamtluftWechselKorrekturfaktorT12T13
// Zuweisung damit nicht null
let GesamtLuftwechselN0 = 0;
let LuftwechselAnlage = 0;
// Beispielwerte - Hier muss noch ein Abschnitt im Eingabeformular erstellt werden - UMBE
let LuftDichtheit = "KategorieImitGeplanterDichtheitspruefung";
let LueftungsArt = "FensterundInfiltration";
let LueftungsAnlage = "Abluftanlage";
let LueftungBedarfsgefuehrt = false;
const gefilterteWerte = datasetGesamtluftWechselKorrekturfaktorT12T13.filter(eintrag =>
eintrag.LuftDichtheit?.toLowerCase() === LuftDichtheit?.toLowerCase() &&
eintrag.LueftungsArt?.toLowerCase() === LueftungsArt?.toLowerCase() &&
eintrag.LueftungsAnlage?.toLowerCase() === LueftungsAnlage?.toLowerCase() &&
eintrag.LueftungBedarfsgefuehrt === false
);
if (gefilterteWerte.length === 0) {
console.warn("No matching entries found in datasetGesamtluftWechselKorrekturfaktorT12T13. Using default values.");
GesamtLuftwechselN0 = 0; // Standardwert
LuftwechselAnlage = 0; // Standardwert
} else if (gefilterteWerte.length === 1) {
GesamtLuftwechselN0 = gefilterteWerte[0].GesamtLuftwechselN0;
LuftwechselAnlage = gefilterteWerte[0].LuftwechselAnlage;
}
// Konstante aus DIN
const WaermeKapazitaet = 0.34;
// Ermittlung FaktorWin2
const WaermeTransferKoeffizientLueftungN0 = GesamtLuftwechselN0 * WaermeKapazitaet * ObjektNettoVolumenAlternativ;
const maximalerWaermestromLueftungN0 = WaermeTransferKoeffizientLueftungN0 * maximaleTemperaturDifferenz;
const WaermeTransferKoeffizientGesamtN0 = WaermeTransferKoeffizientBauteile + WaermeTransferKoeffizientLueftungN0;
const maximalerWaermestromGesamtN0 = WaermeTransferKoeffizientGesamtN0 * maximaleTemperaturDifferenz;
const FaktorGebaeude = WaermeTransferKoeffizientGesamtN0 / NettoGrundflaeche;
if (FaktorGebaeude < 1.2) {
FaktorWin2 = 0.901
}
else if (FaktorGebaeude >= 1.2 && FaktorGebaeude <= 1.7) {
FaktorWin2 = 0.979
}
else if (FaktorGebaeude > 1.7) {
FaktorWin2 = 1.066
}
// Aus Tabelle 13 - Ausgabe der Werte aus datasetGesamtluftWechselKorrekturfaktorT12T13
// Damit nicht null um Fehlermeldung in Berechnung zu vermeiden
let FaktorWin1 = 0;
FaktorWin1 = gefilterteWerte[0]?.FaktorWin1 || 0;
// Berechnung WaermeTransferKoeffizientGesamt und maximalerWaermestromGesamt
GesamtLuftwechselN = GesamtLuftwechselN0 * (1 - FaktorWin1 + FaktorWin1 * FaktorWin2);
WaermeTransferKoeffizientLueftungN = GesamtLuftwechselN * WaermeKapazitaet * ObjektNettoVolumenAlternativ;
maximalerWaermestromLueftungN = WaermeTransferKoeffizientLueftungN * maximaleTemperaturDifferenz;
WaermeTransferKoeffizientGesamt = WaermeTransferKoeffizientBauteile + WaermeTransferKoeffizientLueftungN;
maximalerWaermestromGesamt = WaermeTransferKoeffizientGesamt * maximaleTemperaturDifferenz;
// Berechnung der maximalen Heizlast
if (Enums.LueftungsAnlage.Abluftanlage || Enums.LueftungsAnlage.ZuUndAbluftanlage) {
maximaleHeizlast =
(WaermeTransferKoeffizientBauteile + WaermeTransferKoeffizientLueftungN -
(0.5 * ObjektNettoVolumenAlternativ * WaermeKapazitaet) * (GesamtLuftwechselN0 - LuftwechselAnlage)) * maximaleTemperaturDifferenz;
}
else {
maximaleHeizlast = (WaermeTransferKoeffizientBauteile + (0.5 * WaermeTransferKoeffizientLueftungN)) * maximaleTemperaturDifferenz;
}
// Berechnung der flächenbezogenen Heizlast
FlaechgenbezogeneHeizlast = maximaleHeizlast / NettoGrundflaeche;
// Berechnung der Zeitkonstante
// Standardwert - Hier muss noch ein Abschnitt im Eingabeformular erstellt werden - UMBE
// leicht = 50
// mittelschwer = 90
// schwer = 130
GebaeudeSchwere = 90;
ZeitKonstante = GebaeudeSchwere * NettoGrundflaeche / WaermeTransferKoeffizientGesamt;
// Ende maximale Wärmeströme
//
// Formblatt A7, A2 - Solare Wärmequellen Solare Einstrahlung
// Solare Wärmequellen
const einstrahlung = A7A2BerechnungWaermequellenSolareEinstrahlung(planungswerte_bauteil);
const ErgebnisseJanuar = einstrahlung.ErgebnisseJanuar;
const ErgebnisseMonatsWerteJanuar = einstrahlung.ErgebnisseMonatsWerteJanuar;
const ErgebnisseFebruar = einstrahlung.ErgebnisseFebruar;
const ErgebnisseMonatsWerteFebruar = einstrahlung.ErgebnisseMonatsWerteFebruar;
const ErgebnisseMaerz = einstrahlung.ErgebnisseMaerz;
const ErgebnisseMonatsWerteMaerz = einstrahlung.ErgebnisseMonatsWerteMaerz;
const ErgebnisseApril = einstrahlung.ErgebnisseApril;
const ErgebnisseMonatsWerteApril = einstrahlung.ErgebnisseMonatsWerteApril;
const ErgebnisseMai = einstrahlung.ErgebnisseMai;
const ErgebnisseMonatsWerteMai = einstrahlung.ErgebnisseMonatsWerteMai;
const ErgebnisseJuni = einstrahlung.ErgebnisseJuni;
const ErgebnisseMonatsWerteJuni = einstrahlung.ErgebnisseMonatsWerteJuni;
const ErgebnisseJuli = einstrahlung.ErgebnisseJuli;
const ErgebnisseMonatsWerteJuli = einstrahlung.ErgebnisseMonatsWerteJuli;
const ErgebnisseAugust = einstrahlung.ErgebnisseAugust;
const ErgebnisseMonatsWerteAugust = einstrahlung.ErgebnisseMonatsWerteAugust;
const ErgebnisseSeptember = einstrahlung.ErgebnisseSeptember;
const ErgebnisseMonatsWerteSeptember = einstrahlung.ErgebnisseMonatsWerteSeptember;
const ErgebnisseOktober = einstrahlung.ErgebnisseOktober;
const ErgebnisseMonatsWerteOktober = einstrahlung.ErgebnisseMonatsWerteOktober;
const ErgebnisseNovember = einstrahlung.ErgebnisseNovember;
const ErgebnisseMonatsWerteNovember = einstrahlung.ErgebnisseMonatsWerteNovember;
const ErgebnisseDezember = einstrahlung.ErgebnisseDezember;
const ErgebnisseMonatsWerteDezember = einstrahlung.ErgebnisseMonatsWerteDezember;
const summeErgebnisseJanuar = einstrahlung.summeErgebnisseJanuar;
const summeErgebnisseFebruar = einstrahlung.summeErgebnisseFebruar;
const summeErgebnisseMaerz = einstrahlung.summeErgebnisseMaerz;
const summeErgebnisseApril = einstrahlung.summeErgebnisseApril;
const summeErgebnisseMai = einstrahlung.summeErgebnisseMai;
const summeErgebnisseJuni = einstrahlung.summeErgebnisseJuni;
const summeErgebnisseJuli = einstrahlung.summeErgebnisseJuli;
const summeErgebnisseAugust = einstrahlung.summeErgebnisseAugust;
const summeErgebnisseSeptember = einstrahlung.summeErgebnisseSeptember;
const summeErgebnisseOktober = einstrahlung.summeErgebnisseOktober;
const summeErgebnisseNovember = einstrahlung.summeErgebnisseNovember;
const summeErgebnisseDezember = einstrahlung.summeErgebnisseDezember;
const ErgebnisseWirksamerGesamtEnergieDurchlassGrad = einstrahlung.ErgebnisseWirksamerGesamtEnergieDurchlassGrad;
const PlanungswerteFenster = einstrahlung.PlanungswerteFenster;
const summeWaermeQuellenSolarGesamt = summeErgebnisseJanuar + summeErgebnisseFebruar + summeErgebnisseMaerz +
summeErgebnisseApril + summeErgebnisseMai + summeErgebnisseJuni + summeErgebnisseJuli +
summeErgebnisseAugust + summeErgebnisseSeptember + summeErgebnisseOktober + summeErgebnisseNovember +
summeErgebnisseDezember;
const summeFlaeche = einstrahlung.summeFlaeche;
const verteilungHeizung = ausweis.heizung_verteilung;
const speicherungHeizung = ausweis.heizung_speicherung;
const verteilungWarmwasser = ausweis.warmwasser_verteilung;
const speicherungWarmwasser = ausweis.warmwasser_speicherung;
// Ende Solare Wärmequellen
//
// Formblatt A8, A12 - Wärmesenken
// Wärmesenken - Zuweisung damit nicht null und es keinen Fehler in der Berechnung gibt
let waermeSenken = {
Januar: 0,
Februar: 0,
Maerz: 0,
April: 0,
Mai: 0,
Juni: 0,
Juli: 0,
August: 0,
September: 0,
Oktober: 0,
November: 0,
Dezember: 0
};
let belastungsgrade = {
Januar: 0,
Februar: 0,
Maerz: 0,
April: 0,
Mai: 0,
Juni: 0,
Juli: 0,
August: 0,
September: 0,
Oktober: 0,
November: 0,
Dezember: 0
};
let bilanzInnenTemperaturen = {
Januar: 0,
Februar: 0,
Maerz: 0,
April: 0,
Mai: 0,
Juni: 0,
Juli: 0,
August: 0,
September: 0,
Oktober: 0,
November: 0,
Dezember: 0
};
belastungsgrade.Januar = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Januar");
belastungsgrade.Februar = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Februar");
belastungsgrade.Maerz = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "März");
belastungsgrade.April = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "April");
belastungsgrade.Mai = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Mai");
belastungsgrade.Juni = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juni");
belastungsgrade.Juli = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juli");
belastungsgrade.August = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "August");
belastungsgrade.September = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "September");
belastungsgrade.Oktober = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Oktober");
belastungsgrade.November = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "November");
belastungsgrade.Dezember = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Dezember");
bilanzInnenTemperaturen.Januar = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Januar", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Februar = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Februar", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Maerz = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "März", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.April = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "April", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Mai = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Mai", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Juni = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juni", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Juli = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juli", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.August = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "August", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.September = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "September", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Oktober = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Oktober", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.November = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "November", WohnEinheiten, teilBeheizung);
bilanzInnenTemperaturen.Dezember = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Dezember", WohnEinheiten, teilBeheizung);
waermeSenken.Januar = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Januar - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Januar;
waermeSenken.Februar = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Februar - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Februar;
waermeSenken.Maerz = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Maerz - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Maerz;
waermeSenken.April = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.April - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.April;
waermeSenken.Mai = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Mai - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Mai;
waermeSenken.Juni = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Juni - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Juni;
waermeSenken.Juli = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Juli - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Juli;
waermeSenken.August = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.August - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.August;
waermeSenken.September = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.September - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.September;
waermeSenken.Oktober = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Oktober - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Oktober;
waermeSenken.November = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.November - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.November;
waermeSenken.Dezember = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Dezember - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Dezember;
// Ende Wärmesenken
//
// Formblatt A8 - interne Wärmequellen
// Interne Wärmequellen
// Wärmequelle Bewohner - über Wohneinheiten
// bis 2 Wohneinheiten 45 sonst 90
// Standardwert
let WaermeQuellenBewohner = 45;
let 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 interneWaermeQuellenProMonat = {
Januar: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Januar) / 1000,
Februar: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Februar) / 1000,
Maerz: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Maerz) / 1000,
April: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.April) / 1000,
Mai: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Mai) / 1000,
Juni: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Juni) / 1000,
Juli: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Juli) / 1000,
August: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.August) / 1000,
September: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.September) / 1000,
Oktober: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Oktober) / 1000,
November: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.November) / 1000,
Dezember: (NettoGrundflaeche * WaermeQuellenBewohner * TageMonat.Dezember) / 1000
};
// Ende Interne Wärmequellen
//
// Formballatt A8 - Wärmequellen aus Anlagentechnik Heizung
// Wärmequellen aus Anlagentechnik Heizung
const FaktorUmrechnung = {
Januar: 1000 / (24 * TageMonat.Januar),
Februar: 1000 / (24 * TageMonat.Februar),
Maerz: 1000 / (24 * TageMonat.Maerz),
April: 1000 / (24 * TageMonat.April),
Mai: 1000 / (24 * TageMonat.Mai),
Juni: 1000 / (24 * TageMonat.Juni),
Juli: 1000 / (24 * TageMonat.Juli),
August: 1000 / (24 * TageMonat.August),
September: 1000 / (24 * TageMonat.September),
Oktober: 1000 / (24 * TageMonat.Oktober),
November: 1000 / (24 * TageMonat.November),
Dezember: 1000 / (24 * TageMonat.Dezember)
};
const WaermeQuellenGesamtJanuar = (interneWaermeQuellenProMonat.Januar + 0.5 * einstrahlung.summeErgebnisseJanuar) * FaktorUmrechnung.Januar;
const WaermeQuellenGesamtFebruar = (interneWaermeQuellenProMonat.Februar + 0.5 * einstrahlung.summeErgebnisseFebruar) * FaktorUmrechnung.Februar;
const WaermeQuellenGesamtMaerz = (interneWaermeQuellenProMonat.Maerz + 0.5 * einstrahlung.summeErgebnisseMaerz) * FaktorUmrechnung.Maerz;
const WaermeQuellenGesamtApril = (interneWaermeQuellenProMonat.April + 0.5 * einstrahlung.summeErgebnisseApril) * FaktorUmrechnung.April;
const WaermeQuellenGesamtMai = (interneWaermeQuellenProMonat.Mai + 0.5 * einstrahlung.summeErgebnisseMai) * FaktorUmrechnung.Mai;
const WaermeQuellenGesamtJuni = (interneWaermeQuellenProMonat.Juni + 0.5 * einstrahlung.summeErgebnisseJuni) * FaktorUmrechnung.Juni;
const WaermeQuellenGesamtJuli = (interneWaermeQuellenProMonat.Juli + 0.5 * einstrahlung.summeErgebnisseJuli) * FaktorUmrechnung.Juli;
const WaermeQuellenGesamtAugust = (interneWaermeQuellenProMonat.August + 0.5 * einstrahlung.summeErgebnisseAugust) * FaktorUmrechnung.August;
const WaermeQuellenGesamtSeptember = (interneWaermeQuellenProMonat.September + 0.5 * einstrahlung.summeErgebnisseSeptember) * FaktorUmrechnung.September;
const WaermeQuellenGesamtOktober = (interneWaermeQuellenProMonat.Oktober + 0.5 * einstrahlung.summeErgebnisseOktober) * FaktorUmrechnung.Oktober;
const WaermeQuellenGesamtNovember = (interneWaermeQuellenProMonat.November + 0.5 * einstrahlung.summeErgebnisseNovember) * FaktorUmrechnung.November;
const WaermeQuellenGesamtDezember = (interneWaermeQuellenProMonat.Dezember + 0.5 * einstrahlung.summeErgebnisseDezember) * FaktorUmrechnung.Dezember;
const waermeSenkenBereinigtJanuar = Math.max(waermeSenken.Januar - WaermeQuellenGesamtJanuar, 0);
const waermeSenkenBereinigtFebruar = Math.max(waermeSenken.Februar - WaermeQuellenGesamtFebruar, 0);
const waermeSenkenBereinigtMaerz = Math.max(waermeSenken.Maerz - WaermeQuellenGesamtMaerz, 0);
const waermeSenkenBereinigtApril = Math.max(waermeSenken.April - WaermeQuellenGesamtApril, 0);
const waermeSenkenBereinigtMai = Math.max(waermeSenken.Mai - WaermeQuellenGesamtMai, 0);
const waermeSenkenBereinigtJuni = Math.max(waermeSenken.Juni - WaermeQuellenGesamtJuni, 0);
const waermeSenkenBereinigtJuli = Math.max(waermeSenken.Juli - WaermeQuellenGesamtJuli, 0);
const waermeSenkenBereinigtAugust = Math.max(waermeSenken.August - WaermeQuellenGesamtAugust, 0);
const waermeSenkenBereinigtSeptember = Math.max(waermeSenken.September - WaermeQuellenGesamtSeptember, 0);
const waermeSenkenBereinigtOktober = Math.max(waermeSenken.Oktober - WaermeQuellenGesamtOktober, 0);
const waermeSenkenBereinigtNovember = Math.max(waermeSenken.November - WaermeQuellenGesamtNovember, 0);
const waermeSenkenBereinigtDezember = Math.max(waermeSenken.Dezember - WaermeQuellenGesamtDezember, 0);
const maxBelastungsgrad
= Math.max(
belastungsgrade.Januar,
belastungsgrade.Februar,
belastungsgrade.Maerz,
belastungsgrade.April,
belastungsgrade.Mai,
belastungsgrade.Juni,
belastungsgrade.Juli,
belastungsgrade.August,
belastungsgrade.September,
belastungsgrade.Oktober,
belastungsgrade.November,
belastungsgrade.Dezember
);
const belastungsgradeBereinigt = {
Januar: belastungsgrade.Januar / maxBelastungsgrad,
Februar: belastungsgrade.Februar / maxBelastungsgrad,
Maerz: belastungsgrade.Maerz / maxBelastungsgrad,
April: belastungsgrade.April / maxBelastungsgrad,
Mai: belastungsgrade.Mai / maxBelastungsgrad,
Juni: belastungsgrade.Juni / maxBelastungsgrad,
Juli: belastungsgrade.Juli / maxBelastungsgrad,
August: belastungsgrade.August / maxBelastungsgrad,
September: belastungsgrade.September / maxBelastungsgrad,
Oktober: belastungsgrade.Oktober / maxBelastungsgrad,
November: belastungsgrade.November / maxBelastungsgrad,
Dezember: belastungsgrade.Dezember / maxBelastungsgrad
};
// Beispielwert aus Eingabe (Tabelle 141): Verteilung und Erzeugung im beheizten Bereich, Speicherung im unbeheiztem Bereich - 55°C/45°C
let FaktorNutzbareWaerme = 0.055;
// Hier muss noch ein Abschnitt im Eingabeformular erstellt werden - UMBE
// Verteilung Heizung - im beiheizten Bereich, im unbeheizten Bereich
// Speicherung Heizung - im beheizten Bereich, im unbeheizten Bereich
// Erzeugung Heizung - im beheizten Bereich, im unbeheizten Bereich
// Vorlauftemperatur Heizung - 35°C/28°C, 55°C/45°C, 70°C/55°C, 90°C/70°C - siehe enum Auslegungstemperatur
// alte Eingabe - wird dann für neue Eingabe angepasst
if (speicherungWarmwasser === "zwwsith") {
if (verteilungHeizung === "zv5545von1979bis1994" || verteilungHeizung === "zv5545ngbis1978" || verteilungHeizung === "zv5545ab1995") {
FaktorNutzbareWaerme = 0.082;
}
else if (verteilungHeizung === "zv7055von1979bis1994" || verteilungHeizung === "zv7055ngbis1978" || verteilungHeizung === "zv7055ab1995") {
FaktorNutzbareWaerme = 0.099;
}
else if (verteilungHeizung === "dezensys") {
FaktorNutzbareWaerme = 0;
}
else {
FaktorNutzbareWaerme = 0.082;
}
}
if (speicherungWarmwasser === "zwwsath") {
if (verteilungHeizung === "zv5545von1979bis1994" || verteilungHeizung === "zv5545ngbis1978" || verteilungHeizung === "zv5545ab1995") {
FaktorNutzbareWaerme = 0.038;
}
else if (verteilungHeizung === "zv7055von1979bis1994" || verteilungHeizung === "zv7055ngbis1978" || verteilungHeizung === "zv7055ab1995") {
FaktorNutzbareWaerme = 0.055;
}
else if (verteilungHeizung === "dezensys") {
FaktorNutzbareWaerme = 0;
}
else {
FaktorNutzbareWaerme = 0.082;
}
}
const WaermeQuellenAnlagentechnikHeizungJanuar = (waermeSenkenBereinigtJanuar * belastungsgradeBereinigt.Januar * FaktorNutzbareWaerme) / FaktorUmrechnung.Januar;
const WaermeQuellenAnlagentechnikHeizungFebruar = (waermeSenkenBereinigtFebruar * belastungsgradeBereinigt.Februar * FaktorNutzbareWaerme) / FaktorUmrechnung.Februar;
const WaermeQuellenAnlagentechnikHeizungMaerz = (waermeSenkenBereinigtMaerz * belastungsgradeBereinigt.Maerz * FaktorNutzbareWaerme) / FaktorUmrechnung.Maerz;
const WaermeQuellenAnlagentechnikHeizungApril = (waermeSenkenBereinigtApril * belastungsgradeBereinigt.April * FaktorNutzbareWaerme) / FaktorUmrechnung.April;
const WaermeQuellenAnlagentechnikHeizungMai = (waermeSenkenBereinigtMai * belastungsgradeBereinigt.Mai * FaktorNutzbareWaerme) / FaktorUmrechnung.Mai;
const WaermeQuellenAnlagentechnikHeizungJuni = (waermeSenkenBereinigtJuni * belastungsgradeBereinigt.Juni * FaktorNutzbareWaerme) / FaktorUmrechnung.Juni;
const WaermeQuellenAnlagentechnikHeizungJuli = (waermeSenkenBereinigtJuli * belastungsgradeBereinigt.Juli * FaktorNutzbareWaerme) / FaktorUmrechnung.Juli;
const WaermeQuellenAnlagentechnikHeizungAugust = (waermeSenkenBereinigtAugust * belastungsgradeBereinigt.August * FaktorNutzbareWaerme) / FaktorUmrechnung.August;
const WaermeQuellenAnlagentechnikHeizungSeptember = (waermeSenkenBereinigtSeptember * belastungsgradeBereinigt.September * FaktorNutzbareWaerme) / FaktorUmrechnung.September;
const WaermeQuellenAnlagentechnikHeizungOktober = (waermeSenkenBereinigtOktober * belastungsgradeBereinigt.Oktober * FaktorNutzbareWaerme) / FaktorUmrechnung.Oktober;
const WaermeQuellenAnlagentechnikHeizungNovember = (waermeSenkenBereinigtNovember * belastungsgradeBereinigt.November * FaktorNutzbareWaerme) / FaktorUmrechnung.November;
const WaermeQuellenAnlagentechnikHeizungDezember = (waermeSenkenBereinigtDezember * belastungsgradeBereinigt.Dezember * FaktorNutzbareWaerme) / FaktorUmrechnung.Dezember;
// Ende Wärmequellen aus Anlagentechnik Heizung
//
// Formblatt A9 - Nutzenergiebedarf Trinkwasser
// A_NGF,WE,m
const flaecheProEinheit = NettoGrundflaeche / WohnEinheiten;
// q_w,b
let flaechenBezogenerWaermebedarf: number;
if (flaecheProEinheit < 10) {
flaechenBezogenerWaermebedarf = 16.5
} else if (flaecheProEinheit >= 160) {
flaechenBezogenerWaermebedarf = 8.5
} else {
flaechenBezogenerWaermebedarf = linearInterpolation([{
x: 10,
y: 16
}, {
x: 150,
y: 9
}], flaecheProEinheit)
}
// 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 trinkwasserWaermebedarf = Object.fromEntries(
Object.entries(TageMonat).map(([monat, tage]) => [
monat,
(NettoGrundflaeche * flaechenBezogenerWaermebedarf * tage) / 365
])
);
const trinkwasserWaermebedarfJahr = Object.values(trinkwasserWaermebedarf).reduce((sum, value) => sum + value, 0);
// Ende Nutzenergiebedarf Trinkwasser
//
// Formblatt A10 - Nutzenergiebedarf Heizung
// Nutzenergiebedarf Heizung
let FaktorNutzbareWaermeTrinkwarmwasser = 1.554; // Beispielwert aus Eingabe (Tabelle 143): mit Zirkulation - Verteilung, Speicherung und Erzeugung im beheizten Bereich - 55°C/45°C
// Hier muss noch ein Abschnitt im Eingabeformular erstellt werden - UMBE
// Warmwassererzeugung - zentral, dezentral
// Wird nur benötigt wenn zentral ausgewählt wurde:
// Verteilung Warmwasser - im beiheizten Bereich, im unbeheizten Bereich
// Verteilung Warmwasser - mit Zirkulation, ohne Zirkulation
// Speicherung Warmwasser - im beheizten Bereich, im unbeheizten Bereich
// Erzeugung Warmwasser - im beheizten Bereich, im unbeheizten Bereich
//
// alte Eingabe - wird dann für neue Eingabe angepasst
if (aufnahme.zirkulation === true) {
if (speicherungWarmwasser === "zwwsith") {
FaktorNutzbareWaermeTrinkwarmwasser = 0.647;
}
else {
if (verteilungHeizung === "dezensys") {
FaktorNutzbareWaermeTrinkwarmwasser = 0.193;
}
else {
FaktorNutzbareWaermeTrinkwarmwasser = 0.335;
}
}
} else {
if (speicherungWarmwasser === "zwwsith") {
FaktorNutzbareWaermeTrinkwarmwasser = 1.321;
}
else {
if (verteilungHeizung === "dezensys") {
FaktorNutzbareWaermeTrinkwarmwasser = 0.193;
}
else {
FaktorNutzbareWaermeTrinkwarmwasser = 1.554;
}
}
}
const WaermeQuellenAnlagentechnikTrinkwarmwasser = Object.keys(trinkwasserWaermebedarf).reduce((acc: { [key: string]: number }, month) => {
acc[month] = trinkwasserWaermebedarf[month] * FaktorNutzbareWaermeTrinkwarmwasser;
return acc;
}, {});
// Ende Nutzenergiebedarf Heizung
//
// Formblatt A11 - Wärmequellen Anlagentechnik Heizung - Zusammenstellung
const WaermeQuellenAnlagentechnikGesamt = {
Januar: WaermeQuellenAnlagentechnikHeizungJanuar + WaermeQuellenAnlagentechnikTrinkwarmwasser.Januar,
Februar: WaermeQuellenAnlagentechnikHeizungFebruar + WaermeQuellenAnlagentechnikTrinkwarmwasser.Februar,
Maerz: WaermeQuellenAnlagentechnikHeizungMaerz + WaermeQuellenAnlagentechnikTrinkwarmwasser.Maerz,
April: WaermeQuellenAnlagentechnikHeizungApril + WaermeQuellenAnlagentechnikTrinkwarmwasser.April,
Mai: WaermeQuellenAnlagentechnikHeizungMai + WaermeQuellenAnlagentechnikTrinkwarmwasser.Mai,
Juni: WaermeQuellenAnlagentechnikHeizungJuni + WaermeQuellenAnlagentechnikTrinkwarmwasser.Juni,
Juli: WaermeQuellenAnlagentechnikHeizungJuli + WaermeQuellenAnlagentechnikTrinkwarmwasser.Juli,
August: WaermeQuellenAnlagentechnikHeizungAugust + WaermeQuellenAnlagentechnikTrinkwarmwasser.August,
September: WaermeQuellenAnlagentechnikHeizungSeptember + WaermeQuellenAnlagentechnikTrinkwarmwasser.September,
Oktober: WaermeQuellenAnlagentechnikHeizungOktober + WaermeQuellenAnlagentechnikTrinkwarmwasser.Oktober,
November: WaermeQuellenAnlagentechnikHeizungNovember + WaermeQuellenAnlagentechnikTrinkwarmwasser.November,
Dezember: WaermeQuellenAnlagentechnikHeizungDezember + WaermeQuellenAnlagentechnikTrinkwarmwasser.Dezember
};
const summeWaermeQuellenAnlagentechnikGesamt = Object.values(WaermeQuellenAnlagentechnikGesamt).reduce((acc, value) => acc + value, 0);
const interneWaermeQuellenGesamt = Object.values(interneWaermeQuellenProMonat).reduce((acc, value) => acc + value, 0);
const WaermeQuellenGesamt = {
Januar: interneWaermeQuellenProMonat.Januar + summeErgebnisseJanuar + WaermeQuellenAnlagentechnikGesamt.Januar,
Februar: interneWaermeQuellenProMonat.Februar + summeErgebnisseFebruar + WaermeQuellenAnlagentechnikGesamt.Februar,
Maerz: interneWaermeQuellenProMonat.Maerz + summeErgebnisseMaerz + WaermeQuellenAnlagentechnikGesamt.Maerz,
April: interneWaermeQuellenProMonat.April + summeErgebnisseApril + WaermeQuellenAnlagentechnikGesamt.April,
Mai: interneWaermeQuellenProMonat.Mai + summeErgebnisseMai + WaermeQuellenAnlagentechnikGesamt.Mai,
Juni: interneWaermeQuellenProMonat.Juni + summeErgebnisseJuni + WaermeQuellenAnlagentechnikGesamt.Juni,
Juli: interneWaermeQuellenProMonat.Juli + summeErgebnisseJuli + WaermeQuellenAnlagentechnikGesamt.Juli,
August: interneWaermeQuellenProMonat.August + summeErgebnisseAugust + WaermeQuellenAnlagentechnikGesamt.August,
September: interneWaermeQuellenProMonat.September + summeErgebnisseSeptember + WaermeQuellenAnlagentechnikGesamt.September,
Oktober: interneWaermeQuellenProMonat.Oktober + summeErgebnisseOktober + WaermeQuellenAnlagentechnikGesamt.Oktober,
November: interneWaermeQuellenProMonat.November + summeErgebnisseNovember + WaermeQuellenAnlagentechnikGesamt.November,
Dezember: interneWaermeQuellenProMonat.Dezember + summeErgebnisseDezember + WaermeQuellenAnlagentechnikGesamt.Dezember
};
const summeWaermeQuellenGesamt = Object.values(WaermeQuellenGesamt).reduce((acc, value) => acc + value, 0);
const WaermeQuellenGesamtLeistung = Object.keys(WaermeQuellenGesamt).reduce((acc: { [key: string]: number }, month) => {
acc[month] = (WaermeQuellenGesamt[month as keyof typeof WaermeQuellenGesamt] / (24 * TageMonat[month as keyof typeof TageMonat]) * 1000);
return acc;
}, {});
const summeWaermeQuellenGesamtLeistung = Object.values(WaermeQuellenGesamtLeistung).reduce((acc, value) => acc + value, 0);
// Ende Wärmequellen Anlagentechnik Heizung - Zusammenstellung
//
// Formblatt A12 - Berechnung Nutzenergiebedarf Heizung
let waermequellensenkenverhaeltnisJanuar = 0;
let waermequellensenkenverhaeltnisFebruar = 0;
let waermequellensenkenverhaeltnisMaerz = 0;
let waermequellensenkenverhaeltnisApril = 0;
let waermequellensenkenverhaeltnisMai = 0;
let waermequellensenkenverhaeltnisJuni = 0;
let waermequellensenkenverhaeltnisJuli = 0;
let waermequellensenkenverhaeltnisAugust = 0;
let waermequellensenkenverhaeltnisSeptember = 0;
let waermequellensenkenverhaeltnisOktober = 0;
let waermequellensenkenverhaeltnisNovember = 0;
let waermequellensenkenverhaeltnisDezember = 0;
let ausnutzungsgradJanuar: number;
let ausnutzungsgradFebruar = 0;
let ausnutzungsgradMaerz = 0;
let ausnutzungsgradApril = 0;
let ausnutzungsgradMai = 0;
let ausnutzungsgradJuni = 0;
let ausnutzungsgradJuli = 0;
let ausnutzungsgradAugust = 0;
let ausnutzungsgradSeptember = 0;
let ausnutzungsgradOktober = 0;
let ausnutzungsgradNovember = 0;
let ausnutzungsgradDezember = 0;
let faktorBelastungJanuar = 0;
let faktorBelastungFebruar = 0;
let faktorBelastungMaerz = 0;
let faktorBelastungApril = 0;
let faktorBelastungMai = 0;
let faktorBelastungJuni = 0;
let faktorBelastungJuli = 0;
let faktorBelastungAugust = 0;
let faktorBelastungSeptember = 0;
let faktorBelastungOktober = 0;
let faktorBelastungNovember = 0;
let faktorBelastungDezember = 0;
let heizstundenJanuar = 0;
let heizstundenFebruar = 0;
let heizstundenMaerz = 0;
let heizstundenApril = 0;
let heizstundenMai = 0;
let heizstundenJuni = 0;
let heizstundenJuli = 0;
let heizstundenAugust = 0;
let heizstundenSeptember = 0;
let heizstundenOktober = 0;
let heizstundenNovember = 0;
let heizstundenDezember = 0;
let monatlicheBelastungJanuar = 0;
let monatlicheBelastungFebruar = 0;
let monatlicheBelastungMaerz = 0;
let monatlicheBelastungApril = 0;
let monatlicheBelastungMai = 0;
let monatlicheBelastungJuni = 0;
let monatlicheBelastungJuli = 0;
let monatlicheBelastungAugust = 0;
let monatlicheBelastungSeptember = 0;
let monatlicheBelastungOktober = 0;
let monatlicheBelastungNovember = 0;
let monatlicheBelastungDezember = 0;
let nutzenergieHeizungJanuar = 0;
let nutzenergieHeizungFebruar = 0;
let nutzenergieHeizungMaerz = 0;
let nutzenergieHeizungApril = 0;
let nutzenergieHeizungMai = 0;
let nutzenergieHeizungJuni = 0;
let nutzenergieHeizungJuli = 0;
let nutzenergieHeizungAugust = 0;
let nutzenergieHeizungSeptember = 0;
let nutzenergieHeizungOktober = 0;
let nutzenergieHeizungNovember = 0;
let nutzenergieHeizungDezember = 0;
waermequellensenkenverhaeltnisJanuar = WaermeQuellenGesamtLeistung.Januar / waermeSenken.Januar;
waermequellensenkenverhaeltnisFebruar = WaermeQuellenGesamtLeistung.Februar / waermeSenken.Februar;
waermequellensenkenverhaeltnisMaerz = WaermeQuellenGesamtLeistung.Maerz / waermeSenken.Maerz;
waermequellensenkenverhaeltnisApril = WaermeQuellenGesamtLeistung.April / waermeSenken.April;
waermequellensenkenverhaeltnisMai = WaermeQuellenGesamtLeistung.Mai / waermeSenken.Mai;
waermequellensenkenverhaeltnisJuni = WaermeQuellenGesamtLeistung.Juni / waermeSenken.Juni;
waermequellensenkenverhaeltnisJuli = WaermeQuellenGesamtLeistung.Juli / waermeSenken.Juli;
waermequellensenkenverhaeltnisAugust = WaermeQuellenGesamtLeistung.August / waermeSenken.August;
waermequellensenkenverhaeltnisSeptember = WaermeQuellenGesamtLeistung.September / waermeSenken.September;
waermequellensenkenverhaeltnisOktober = WaermeQuellenGesamtLeistung.Oktober / waermeSenken.Oktober;
waermequellensenkenverhaeltnisNovember = WaermeQuellenGesamtLeistung.November / waermeSenken.November;
waermequellensenkenverhaeltnisDezember = WaermeQuellenGesamtLeistung.Dezember / waermeSenken.Dezember;
ausnutzungsgradJanuar = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisJanuar).Ausnutzungsgrad;
ausnutzungsgradFebruar = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisFebruar).Ausnutzungsgrad;
ausnutzungsgradMaerz = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisMaerz).Ausnutzungsgrad;
ausnutzungsgradApril = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisApril).Ausnutzungsgrad;
ausnutzungsgradMai = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisMai).Ausnutzungsgrad;
ausnutzungsgradJuni = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisJuni).Ausnutzungsgrad;
ausnutzungsgradJuli = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisJuli).Ausnutzungsgrad;
ausnutzungsgradAugust = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisAugust).Ausnutzungsgrad;
ausnutzungsgradSeptember = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisSeptember).Ausnutzungsgrad;
ausnutzungsgradOktober = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisOktober).Ausnutzungsgrad;
ausnutzungsgradNovember = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisNovember).Ausnutzungsgrad;
ausnutzungsgradDezember = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisDezember).Ausnutzungsgrad;
faktorBelastungJanuar = Math.max(1 - (waermequellensenkenverhaeltnisJanuar * ausnutzungsgradJanuar), 0);
faktorBelastungFebruar = Math.max(1 - (waermequellensenkenverhaeltnisFebruar * ausnutzungsgradFebruar), 0);
faktorBelastungMaerz = Math.max(1 - (waermequellensenkenverhaeltnisMaerz * ausnutzungsgradMaerz), 0);
faktorBelastungApril = Math.max(1 - (waermequellensenkenverhaeltnisApril * ausnutzungsgradApril), 0);
faktorBelastungMai = Math.max(1 - (waermequellensenkenverhaeltnisMai * ausnutzungsgradMai), 0);
faktorBelastungJuni = Math.max(1 - (waermequellensenkenverhaeltnisJuni * ausnutzungsgradJuni), 0);
faktorBelastungJuli = Math.max(1 - (waermequellensenkenverhaeltnisJuli * ausnutzungsgradJuli), 0);
faktorBelastungAugust = Math.max(1 - (waermequellensenkenverhaeltnisAugust * ausnutzungsgradAugust), 0);
faktorBelastungSeptember = Math.max(1 - (waermequellensenkenverhaeltnisSeptember * ausnutzungsgradSeptember), 0);
faktorBelastungOktober = Math.max(1 - (waermequellensenkenverhaeltnisOktober * ausnutzungsgradOktober), 0);
faktorBelastungNovember = Math.max(1 - (waermequellensenkenverhaeltnisNovember * ausnutzungsgradNovember), 0);
faktorBelastungDezember = Math.max(1 - (waermequellensenkenverhaeltnisDezember * ausnutzungsgradDezember), 0);
monatlicheBelastungJanuar = belastungsgrade.Januar * faktorBelastungJanuar;
monatlicheBelastungFebruar = belastungsgrade.Februar * faktorBelastungFebruar;
monatlicheBelastungMaerz = belastungsgrade.Maerz * faktorBelastungMaerz;
monatlicheBelastungApril = belastungsgrade.April * faktorBelastungApril;
monatlicheBelastungMai = belastungsgrade.Mai * faktorBelastungMai;
monatlicheBelastungJuni = belastungsgrade.Juni * faktorBelastungJuni;
monatlicheBelastungJuli = belastungsgrade.Juli * faktorBelastungJuli;
monatlicheBelastungAugust = belastungsgrade.August * faktorBelastungAugust;
monatlicheBelastungSeptember = belastungsgrade.September * faktorBelastungSeptember;
monatlicheBelastungOktober = belastungsgrade.Oktober * faktorBelastungOktober;
monatlicheBelastungNovember = belastungsgrade.November * faktorBelastungNovember;
monatlicheBelastungDezember = belastungsgrade.Dezember * faktorBelastungDezember;
if (monatlicheBelastungJanuar > 0.05) {heizstundenJanuar = 31 * 24;} else {heizstundenJanuar = (monatlicheBelastungJanuar / 0.05) * 31 * 24;}
if (monatlicheBelastungFebruar > 0.05) {heizstundenFebruar = 28 * 24;} else {heizstundenFebruar = (monatlicheBelastungFebruar / 0.05) * 28 * 24;}
if (monatlicheBelastungMaerz > 0.05) {heizstundenMaerz = 31 * 24;} else {heizstundenMaerz = (monatlicheBelastungMaerz / 0.05) * 31 * 24;}
if (monatlicheBelastungApril > 0.05) {heizstundenApril = 30 * 24;} else {heizstundenApril = (monatlicheBelastungApril / 0.05) * 30 * 24;}
if (monatlicheBelastungMai > 0.05) {heizstundenMai = 31 * 24;} else {heizstundenMai = (monatlicheBelastungMai / 0.05) * 31 * 24;}
if (monatlicheBelastungJuni > 0.05) {heizstundenJuni = 30 * 24;} else {heizstundenJuni = (monatlicheBelastungJuni / 0.05) * 30 * 24;}
if (monatlicheBelastungJuli > 0.05) {heizstundenJuli = 31 * 24;} else {heizstundenJuli = (monatlicheBelastungJuli / 0.05) * 31 * 24;}
if (monatlicheBelastungAugust > 0.05) {heizstundenAugust = 31 * 24;} else {heizstundenAugust = (monatlicheBelastungAugust / 0.05) * 31 * 24;}
if (monatlicheBelastungSeptember > 0.05) {heizstundenSeptember = 30 * 24;} else {heizstundenSeptember = (monatlicheBelastungSeptember / 0.05) * 30 * 24;}
if (monatlicheBelastungOktober > 0.05) {heizstundenOktober = 31 * 24;} else {heizstundenOktober = (monatlicheBelastungOktober / 0.05) * 31 * 24;}
if (monatlicheBelastungNovember > 0.05) {heizstundenNovember = 30 * 24;} else {heizstundenNovember = (monatlicheBelastungNovember / 0.05) * 30 * 24;}
if (monatlicheBelastungDezember > 0.05) {heizstundenDezember = 31 * 24;} else {heizstundenDezember = (monatlicheBelastungDezember / 0.05) * 31 * 24;}
nutzenergieHeizungJanuar = waermeSenken.Januar * faktorBelastungJanuar * heizstundenJanuar / 1000;
nutzenergieHeizungFebruar = waermeSenken.Februar * faktorBelastungFebruar * heizstundenFebruar / 1000;
nutzenergieHeizungMaerz = waermeSenken.Maerz * faktorBelastungMaerz * heizstundenMaerz / 1000;
nutzenergieHeizungApril = waermeSenken.April * faktorBelastungApril * heizstundenApril / 1000;
nutzenergieHeizungMai = waermeSenken.Mai * faktorBelastungMai * heizstundenMai / 1000;
nutzenergieHeizungJuni = waermeSenken.Juni * faktorBelastungJuni * heizstundenJuni / 1000;
nutzenergieHeizungJuli = waermeSenken.Juli * faktorBelastungJuli * heizstundenJuli / 1000;
nutzenergieHeizungAugust = waermeSenken.August * faktorBelastungAugust * heizstundenAugust / 1000;
nutzenergieHeizungSeptember = waermeSenken.September * faktorBelastungSeptember * heizstundenSeptember / 1000;
nutzenergieHeizungOktober = waermeSenken.Oktober * faktorBelastungOktober * heizstundenOktober / 1000;
nutzenergieHeizungNovember = waermeSenken.November * faktorBelastungNovember * heizstundenNovember / 1000;
nutzenergieHeizungDezember = waermeSenken.Dezember * faktorBelastungDezember * heizstundenDezember / 1000;
let gesamtHeizstunden = heizstundenJanuar + heizstundenFebruar + heizstundenMaerz + heizstundenApril + heizstundenMai +
heizstundenJuni + heizstundenJuli + heizstundenAugust + heizstundenSeptember + heizstundenOktober + heizstundenNovember + heizstundenDezember;
let gesamtNutzenergieHeizung = nutzenergieHeizungJanuar + nutzenergieHeizungFebruar + nutzenergieHeizungMaerz + nutzenergieHeizungApril +
nutzenergieHeizungMai + nutzenergieHeizungJuni + nutzenergieHeizungJuli + nutzenergieHeizungAugust + nutzenergieHeizungSeptember +
nutzenergieHeizungOktober + nutzenergieHeizungNovember + nutzenergieHeizungDezember;
// Ende - Berechnung Nutzenergiebedarf Heizung
//
// Formbaltt A13 - Rechnerische Laufzeit der Heizung
const heizstunden = {
Januar: heizstundenJanuar,
Februar: heizstundenFebruar,
Maerz: heizstundenMaerz,
April: heizstundenApril,
Mai: heizstundenMai,
Juni: heizstundenJuni,
Juli: heizstundenJuli,
August: heizstundenAugust,
September: heizstundenSeptember,
Oktober: heizstundenOktober,
November: heizstundenNovember,
Dezember: heizstundenDezember
};
const gebaeudetyp = aufnahme.gebaeudetyp;
const faktorWochenendAbschaltung = 0.042;
const zeitkonstanteRechnerischeLaufzeitEinfamilienhaus: FixedLengthArray<number, 12> = [17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17];
const zeitkonstanteRechnerischeLaufzeitMehrfamilienhaus: FixedLengthArray<number, 12> = [19.86, 18.58, 18.69, 17.25, 17, 17, 17, 17, 17, 17.16, 18.88, 19.9];
let rechnerischeLaufzeiten = new Array(12).fill(0) as unknown as FixedLengthArray<number, 12>
if (WohnEinheiten < 3) {
for (let i = 0; i < 12; i++) {
rechnerischeLaufzeiten[i] = heizstunden[Object.keys(heizstunden)[i]] * faktorWochenendAbschaltung * zeitkonstanteRechnerischeLaufzeitEinfamilienhaus[i]
}
} else {
for (let i = 0; i < 12; i++) {
rechnerischeLaufzeiten[i] = heizstunden[Object.keys(heizstunden)[i]] * faktorWochenendAbschaltung * zeitkonstanteRechnerischeLaufzeitMehrfamilienhaus[i]
}
}
const heizstundenGesamt = Object.values(heizstunden).reduce((acc, value) => acc + value, 0);
const rechnerischeLaufzeitGesamt = rechnerischeLaufzeiten.reduce((acc, curr) => acc + curr, 0),
// Ende - Rechnerische Laufzeit der Heizung
//
// Formblatt A14 - Berechnung Aufwandszahlen mittlere Belastung
// Planungswerte aus Eingabe, Tabellen 20, 21, 22, C12, 30, 31, 41, 49, 50, 51, 52, 53
anlass = ausweis.ausstellgrund;
let ZuschlagsFaktorErzeugung = 0;
// Hier müsste die Eingabe in Abschnitt D erweitert werden. Siehe auch enums sowie datasetKorrekturfaktorVerteilungT32 - UMBE
// Anlage siehe funktionKorrekturfaktorAufwandszahlenErzeugungHeizungT78
// rohrnetztyp wie in datasetKorrekturfaktorVerteilungT32
// ueberTemperatur wie in datasetKorrekturfaktorVerteilungT32
// verteilung wie in datasetKorrekturfaktorVerteilungT32
// LageVorlauf wie funktionKorrekturfaktorAufwandszahlenErzeugungHeizoelBrennwertT80
const PlanungswerteUebergabeVerteilungHeizung = [
{
Anlage: "Brennwertkessel - Gas- und Heizöl - von 1987 bis 1994",
VersorgteFlaeche: 0.7,
Heizungsart: "Brennwertkessel",
EnergieTraeger: "Erdgas",
UebergabeSystem: "Heizkörper",
rohrsystem: "Zwei-Rohr-System",
rohrnetztyp: "I (Etagenringtyp)",
anzahlHeizflaechen: "bis 10",
hydraulischerAbgleich: "Abgleich statisch je Heizkörper/Heizfläche und Gruppenabgleich statisch (z.B. mit Strangregulierventil)",
raumtemperaturRegelung: "P-Regler",
ueberTemperatur: "55°C/45°C",
LageVorlauf: "55°C/45°C - unbeheizt",
waermeverlustAußenbauteile: "Radiatorposition Außenwand",
intermittierenderBetrieb: "-",
einzelraumregelSysteme: "-",
verteilung: "Verteilleitungen im beheizten Bereich",
PufferSpeicherHeizung: false,
ehs0: 1,
ehce0: 1.042,
Δehce1: 0.015,
Δehce2: 0.009,
Δehce3: 0,
Δehce5: 0,
Δehcehydr: 0.018,
fhydr: 1.02,
ehd0: 1.049
},
{
Anlage: "Brennwertkessel - Gas- und Heizöl - von 1987 bis 1994",
VersorgteFlaeche: 0.2,
Heizungsart: "Brennwertkessel",
EnergieTraeger: "Erdgas",
UebergabeSystem: "Fußbodenheizung Nasssystem",
rohrnetztyp: "IIb (Etagenverteilertyp Fußbodenheizung)",
raumtemperaturRegelung: "ungeregelt, mit zentraler Vorlauftemperaturregelung",
ueberTemperatur: "35°C/28°C",
LageVorlauf: "55°C/45°C - unbeheizt",
waermeverlustAngrenzendeBauteile: "integrierte Heizfläche mit Mindestdämmung nach DIN EN 1264 (alle Teile)",
intermittierenderBetrieb: "-",
einzelraumregelSysteme: "-",
verteilung: "Verteilleitungen im beheizten Bereich",
PufferSpeicherHeizung: false,
ehs0: 1,
ehce0: 1.149,
Δehce1: 0.021,
Δehce2: 0.015,
Δehce3: 0,
Δehce5: 0,
Δehcehydr: 0,
fhydr: 1,
ehd0: 1.004
},
{
Anlage: "Elektro-Direktheizung, PI-Regler (mit Optimierung)",
VersorgteFlaeche: 0.1,
EnergieTraeger: "Strommix",
Heizungsart: "Direktheizung",
Bereich: "Außenwandbereich",
intermittierenderBetrieb: "Nein",
PufferSpeicherHeizung: false,
ehs0: 1,
ehce0: 1.042,
Δehce1: 0,
Δehce2: 0,
Δehce3: 0,
Δehce5: 0,
Δehcehydr: 0,
fhydr: 1,
ehd0: 1
}
];
const NennleistungWaermeerzeugerWarmwasser = funktionNennleistungWaermeerzeugerWarmwasserT139(NettoGrundflaeche ?? 0, flaechenBezogenerWaermebedarf);
// const NennleistungWaermeerzeugerWarmwasser = 34;
if (anlass === "Neubau") {
ZuschlagsFaktorErzeugung = 1.1;
}
else {
ZuschlagsFaktorErzeugung = 1.5;
}
let AufwandsZahlErzeugungHeizungBasiswert: number;
let KorrekturFaktorBaujahrErzeugungHeizung: any;
let KorrekturFaktorVorlaufLageBrennstoffErzeugungHeizung: any;
let KorrekturFaktorErzeugungHeizung: any;
let AufwandsZahlErzeugungHeizung: any;
let AufwandsZahlSpeicherungHeizung: any;
let mittlereBelastungErzaegungHeizung: number;
let AufwandsZahlVerteilungHeizung: number;
const NennleistungWaermeerzeugerHeizung = maximaleHeizlast / 1000;
const NennleistungWaermeerzeuger = ZuschlagsFaktorErzeugung * Math.max(NennleistungWaermeerzeugerWarmwasser, NennleistungWaermeerzeugerHeizung);
const ErgebnisseAufwandsZahlenBelastungHeizung = PlanungswerteUebergabeVerteilungHeizung.map((system: any) => {
const mittlereBelastungUebergabeHeizung = (gesamtNutzenergieHeizung / (gesamtHeizstunden * maximaleHeizlast)) * 1000 * system.VersorgteFlaeche;
const AufwandsZahlUebergabeHeizung = system.ehce0 + system.Δehce1 + system.Δehce2 + system.Δehce3 + system.Δehce5 + system.Δehcehydr;
const mittlereBelastungVerteilungHeizung = mittlereBelastungUebergabeHeizung * AufwandsZahlUebergabeHeizung * system.fhydr;
const flaechenbezogeneLeistungUebergabeHeizung = (maximaleHeizlast / NettoGrundflaeche) * AufwandsZahlUebergabeHeizung;
const KorrekturfaktorMittlereBelastung = funktionKorrekturfaktorMittlereBelastungT32(system.verteilung, system.rohrnetztyp, system.ueberTemperatur, mittlereBelastungVerteilungHeizung) || 0;
const AufwandsZahlVerteilungHeizungKorrektur = system.ehd0 * KorrekturfaktorMittlereBelastung;
AufwandsZahlVerteilungHeizung = 1 + (AufwandsZahlVerteilungHeizungKorrektur - 1) * (50/flaechenbezogeneLeistungUebergabeHeizung);
const flaechenbezogeneLeistungVerteilungHeizung = flaechenbezogeneLeistungUebergabeHeizung * AufwandsZahlVerteilungHeizung;
const mittlereBelastungSpeicherungHeizung = mittlereBelastungVerteilungHeizung * AufwandsZahlVerteilungHeizung;
if (system.PufferSpeicherHeizung === false) {
AufwandsZahlSpeicherungHeizung = 1;
AufwandsZahlVerteilungHeizung = AufwandsZahlVerteilungHeizung;
mittlereBelastungErzaegungHeizung = mittlereBelastungSpeicherungHeizung * AufwandsZahlSpeicherungHeizung;
}
else {
AufwandsZahlSpeicherungHeizung = system.ehs0;
AufwandsZahlVerteilungHeizung = (AufwandsZahlVerteilungHeizung - 1) * (8760/rechnerischeLaufzeitGesamt) + 1;
mittlereBelastungErzaegungHeizung = 1;
}
const flaechenbezogeneLeistungSpeicherungHeizung = flaechenbezogeneLeistungVerteilungHeizung * AufwandsZahlSpeicherungHeizung;
if (system.Heizungsart === "Standardkessel" || system.Heizungsart === "Niedertemperaturkessel" || system.Heizungsart === "Brennwertkessel") {
AufwandsZahlErzeugungHeizungBasiswert = funktionAufwandszahlErzeugungHeizungT77(NennleistungWaermeerzeuger, mittlereBelastungErzaegungHeizung);
KorrekturFaktorBaujahrErzeugungHeizung = funktionKorrekturfaktorAufwandszahlenErzeugungHeizungT78(system.Anlage, mittlereBelastungErzaegungHeizung);
if (system.EnergieTraeger === "Erdgas" && system.Heizungsart === "Brennwertkessel") {
KorrekturFaktorVorlaufLageBrennstoffErzeugungHeizung =
funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtBrennwertT79(system.LageVorlauf, mittlereBelastungErzaegungHeizung);
}
else if (system.EnergieTraeger === "Heizoel" && system.Heizungsart === "Brennwertkessel") {
KorrekturFaktorVorlaufLageBrennstoffErzeugungHeizung =
funktionKorrekturfaktorAufwandszahlenErzeugungHeizoelBrennwertT80(system.LageVorlauf, mittlereBelastungErzaegungHeizung);
}
else if (system.Heizungsart !== "Brennwertkessel" && (system.EnergieTraeger === "Heizoel" || system.EnergieTraeger === "Erdgas")) {
KorrekturFaktorVorlaufLageBrennstoffErzeugungHeizung =
funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtkeinBrennwertT81(system.LageVorlauf, mittlereBelastungErzaegungHeizung);
}
else if (system.EnergieTraeger === "Brennholz") {
KorrekturFaktorVorlaufLageBrennstoffErzeugungHeizung = 1;
}
AufwandsZahlErzeugungHeizung =
((AufwandsZahlErzeugungHeizungBasiswert * KorrekturFaktorBaujahrErzeugungHeizung * KorrekturFaktorVorlaufLageBrennstoffErzeugungHeizung)-1)
* (8760/rechnerischeLaufzeitGesamt) + 1;
}
else if (system.Heizungsart === "Umlaufwasserheizer") {
AufwandsZahlErzeugungHeizungBasiswert = funktionAufwandszahlErzeugungHeizungUmlaufWasserheizerT82(NennleistungWaermeerzeuger, mittlereBelastungErzaegungHeizung);
KorrekturFaktorErzeugungHeizung = funktionKorrekturfaktorAufwandszahlenErzeugungHeizungUmlaufWasserheizerT82(system.Anlage, mittlereBelastungErzaegungHeizung);
AufwandsZahlErzeugungHeizung = AufwandsZahlErzeugungHeizungBasiswert * KorrekturFaktorErzeugungHeizung;
}
else if (system.Heizungsart === "Waermepumpe") {
AufwandsZahlErzeugungHeizung = 1;
}
else if (system.Heizungsart === "Direktheizung") {
AufwandsZahlErzeugungHeizung = 1;
}
else {
AufwandsZahlErzeugungHeizung = 1;
}
const flaechenbezogeneLeistungErzeugungHeizung = flaechenbezogeneLeistungSpeicherungHeizung * AufwandsZahlErzeugungHeizung;
return {
Bezeichnung: system.Anlage + " - " + system.VersorgteFlaeche * 100 + " % versorgte Fläche - " + (system.UebergabeSystem ? system.UebergabeSystem : system.Heizungsart),
mittlereBelastungUebergabeHeizung: mittlereBelastungUebergabeHeizung,
VersorgteFlaeche: system.VersorgteFlaeche,
AufwandsZahlUebergabeHeizung: AufwandsZahlUebergabeHeizung,
mittlereBelastungVerteilungHeizung: mittlereBelastungVerteilungHeizung,
flaechenbezogeneLeistungUebergabeHeizung: flaechenbezogeneLeistungUebergabeHeizung,
AufwandsZahlVerteilungHeizung: AufwandsZahlVerteilungHeizung,
flaechenbezogeneLeistungVerteilungHeizung: flaechenbezogeneLeistungVerteilungHeizung,
mittlereBelastungSpeicherungHeizung: mittlereBelastungSpeicherungHeizung,
AufwandsZahlSpeicherungHeizung: AufwandsZahlSpeicherungHeizung,
flaechenbezogeneLeistungSpeicherungHeizung: flaechenbezogeneLeistungSpeicherungHeizung,
mittlereBelastungErzaegungHeizung: mittlereBelastungErzaegungHeizung,
AufwandsZahlErzeugungHeizung: AufwandsZahlErzeugungHeizung,
KorrekturFaktorBaujahrErzeugungHeizung: KorrekturFaktorBaujahrErzeugungHeizung,
flaechenbezogeneLeistungErzeugungHeizung: flaechenbezogeneLeistungErzeugungHeizung
};
});
// Tabelle 42
let AufwandsZahlTrinkwarmWasserUebergabe: number;
let AufwandsZahlTrinkwarmWasserVerteilung: number;
let WaermeVerlustTrinkwarmwasserSpeicher: number;
let AufwandsZahlTrinkwarmWasserSpeicherung: number;
let AufwandsZahlTrinkwarmWasserErzeugungBasiswert: number;
let KorrekturFaktorBaujahrTrinkwarmWasserErzeugung: any;
let KorrekturFaktorVorlaufLageBrennstoffTrinkwarmWasserErzeugung: any;
let AufwandsZahlTrinkwarmWasserErzeugung: number;
let KorrekturFaktorTrinkwarmWasserErzeugung: number;
const PlanungswerteUebergabeVerteilungWarmwasser = [
{
Anlage: "Brennwertkessel - Gas- und Heizöl - von 1987 bis 1994",
Anteil: 1,
EnergieTraeger: "Erdgas",
Heizungsart: "Brennwertkessel",
rohrnetztyp: "II (Ebenentyp)",
verteiltyp: "Verteilung im beheizten Bereich mit Zirkulation",
LageVorlauf: "55°C/45°C - unbeheizt",
AufwandsZahlTrinkwarmWasserVerteilung: 2.391,
AufwandsZahlTrinkwarmWasserUebergabe: 1,
Pufferspeicher: "elektrisch beheizt - Aufstellort beheizt - mit Zirkulation",
BaujahrSpeicher: 1995,
Speichervolumen: 500
},
{
Anlage: "elektrischer_Durchlauferhitzer - von 1987 bis 1994",
Anteil: 0,
EnergieTraeger: "Strommix",
Heizungsart: "elektrischer_Durchlauferhitzer",
rohrnetztyp: "III (Dezentrale Versorgung)",
verteiltyp: "keine Verteilung",
AufwandsZahlTrinkwarmWasserVerteilung: 1.193,
AufwandsZahlTrinkwarmWasserUebergabe: 1,
Pufferspeicher: "nicht_vorhanden",
Speichervolumen: 0
}
];
const ErgebnisseAufwandsZahlenBelastungWarmwasser = PlanungswerteUebergabeVerteilungWarmwasser.map((system: any) => {
AufwandsZahlTrinkwarmWasserVerteilung = 1 + (system.AufwandsZahlTrinkwarmWasserVerteilung - 1) * (12.5 / flaechenBezogenerWaermebedarf);
AufwandsZahlTrinkwarmWasserUebergabe = system.AufwandsZahlTrinkwarmWasserUebergabe;
if (system.Pufferspeicher === "bivalenter_speicher") {
WaermeVerlustTrinkwarmwasserSpeicher; // Noch zu vervollständigen
}
else if (system.Pufferspeicher === "nicht_vorhanden") {
AufwandsZahlTrinkwarmWasserSpeicherung = 1;
}
else {
WaermeVerlustTrinkwarmwasserSpeicher = funktionWaermeVerlusteTrinkwarmwasserSpeicherT55T56(system.Pufferspeicher, system.Speichervolumen, system.BaujahrSpeicher);
AufwandsZahlTrinkwarmWasserSpeicherung = 1 + (WaermeVerlustTrinkwarmwasserSpeicher / (trinkwasserWaermebedarfJahr * AufwandsZahlTrinkwarmWasserVerteilung * AufwandsZahlTrinkwarmWasserUebergabe));
}
if (system.Heizungsart === "Standardkessel" || system.Heizungsart === "Niedertemperaturkessel" || system.Heizungsart === "Brennwertkessel") {
AufwandsZahlTrinkwarmWasserErzeugungBasiswert = funktionAufwandszahlErzeugungHeizungT77(NennleistungWaermeerzeugerWarmwasser, 1); // mittlere Belastung bei Trinkwarmwasser immer 1
// Hier müsste man noch den Anteil berücksichtigen neue NGF = NGF * Anteil
KorrekturFaktorBaujahrTrinkwarmWasserErzeugung = funktionKorrekturfaktorAufwandszahlenErzeugungHeizungT78(system.Anlage, 1); // mittlere Belastung bei Trinkwarmwasser immer 1
if (system.EnergieTraeger === "Erdgas" && system.Heizungsart === "Brennwertkessel") {
KorrekturFaktorVorlaufLageBrennstoffTrinkwarmWasserErzeugung =
funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtBrennwertT79(system.LageVorlauf, 1); // mittlere Belastung bei Trinkwarmwasser immer 1
}
else if (system.EnergieTraeger === "Heizoel" && system.Heizungsart === "Brennwertkessel") {
KorrekturFaktorVorlaufLageBrennstoffTrinkwarmWasserErzeugung =
funktionKorrekturfaktorAufwandszahlenErzeugungHeizoelBrennwertT80(system.LageVorlauf, 1);
}
else if (system.Heizungsart !== "Brennwertkessel" && (system.EnergieTraeger === "Heizoel" || system.EnergieTraeger === "Erdgas")) {
KorrekturFaktorVorlaufLageBrennstoffTrinkwarmWasserErzeugung =
funktionKorrekturfaktorAufwandszahlenErzeugungTemperaturOrtkeinBrennwertT81(system.LageVorlauf, 1);
}
else if (system.EnergieTraeger === "Brennholz") {
KorrekturFaktorVorlaufLageBrennstoffTrinkwarmWasserErzeugung = 1;
}
AufwandsZahlTrinkwarmWasserErzeugung =
((AufwandsZahlTrinkwarmWasserErzeugungBasiswert * KorrekturFaktorBaujahrTrinkwarmWasserErzeugung * KorrekturFaktorVorlaufLageBrennstoffTrinkwarmWasserErzeugung) - 1)
* (8760 / rechnerischeLaufzeitGesamt) + 1;
}
else if (system.Heizungsart === "Umlaufwasserheizer") {
AufwandsZahlTrinkwarmWasserErzeugungBasiswert = funktionAufwandszahlErzeugungHeizungUmlaufWasserheizerT82(NennleistungWaermeerzeugerWarmwasser, 1);
KorrekturFaktorTrinkwarmWasserErzeugung = funktionKorrekturfaktorAufwandszahlenErzeugungHeizungUmlaufWasserheizerT82(system.Anlage, 1);
AufwandsZahlTrinkwarmWasserErzeugung = AufwandsZahlTrinkwarmWasserErzeugungBasiswert * KorrekturFaktorTrinkwarmWasserErzeugung;
}
else if (system.Heizungsart === "Waermepumpe") {
AufwandsZahlTrinkwarmWasserErzeugung = 1;
}
else if (system.Heizungsart === "elektrischer_Durchlauferhitzer") {
AufwandsZahlTrinkwarmWasserErzeugung = 1;
}
else {
AufwandsZahlTrinkwarmWasserErzeugung = 1;
}
return {
Bezeichnung: system.rohrnetztyp + " - " + system.Anteil * 100 + " % Anteil - " + system.verteiltyp,
AufwandsZahlTrinkwarmWasserUebergabe: AufwandsZahlTrinkwarmWasserUebergabe,
AufwandsZahlTrinkwarmWasserVerteilung: AufwandsZahlTrinkwarmWasserVerteilung,
AufwandsZahlTrinkwarmWasserSpeicherung: AufwandsZahlTrinkwarmWasserSpeicherung,
AufwandsZahlTrinkwarmWasserErzeugung: AufwandsZahlTrinkwarmWasserErzeugung,
Anteil: system.Anteil
};
});
// Ergebnisse Beispielwerte
const co2EmissionenGesamt = 39.1;
const endEnergieBedarfGesamt = 158.1;
const primaerEnergieBedarfGesamt = 176.5;
const energieEffizienzKlasse = "E";
// Ende - Berechnung Aufwandszahlen mittlere Belastung
//
return {
ObjektBruttoVolumen,
NettoGrundflaeche,
maximaleTemperaturDifferenz,
innenTemperatur,
minimaleAussentemperatur,
LichteRaumHoehe,
ObjektNettoVolumen,
ObjektNettoVolumenAlternativ,
FaktorNettoVolumen,
GesamtHuellFlaeche,
ErgebnisseBauteile,
WaermeBrueckenZuschlag,
WaermeTransferKoeffizientWaeremebruecken,
maximalerWaermestromWaermebruecken,
WaermeTransferKoeffizientBauteile,
maximalerWaermestromBauteile,
HuellFlaechenVolumenVerhaeltnis,
GesamtLuftwechselN,
WaermeTransferKoeffizientLueftungN,
maximalerWaermestromLueftungN0,
maximalerWaermestromLueftungN,
WaermeTransferKoeffizientGesamt,
maximalerWaermestromGesamtN0,
maximalerWaermestromGesamt,
mechanischeLueftung,
maximaleHeizlast,
FlaechgenbezogeneHeizlast,
ZeitKonstante,
GesamtLuftwechselN0,
LuftwechselAnlage,
LuftDichtheit,
LueftungsArt,
LueftungsAnlage,
LueftungBedarfsgefuehrt,
WaermeKapazitaet,
planungswerte_bauteil,
ErgebnisseJanuar,
ErgebnisseMonatsWerteJanuar,
ErgebnisseFebruar,
ErgebnisseMonatsWerteFebruar,
ErgebnisseMaerz,
ErgebnisseMonatsWerteMaerz,
ErgebnisseApril,
ErgebnisseMonatsWerteApril,
ErgebnisseMai,
ErgebnisseMonatsWerteMai,
ErgebnisseJuni,
ErgebnisseMonatsWerteJuni,
ErgebnisseJuli,
ErgebnisseMonatsWerteJuli,
ErgebnisseAugust,
ErgebnisseMonatsWerteAugust,
ErgebnisseSeptember,
ErgebnisseMonatsWerteSeptember,
ErgebnisseOktober,
ErgebnisseMonatsWerteOktober,
ErgebnisseNovember,
ErgebnisseMonatsWerteNovember,
ErgebnisseDezember,
ErgebnisseMonatsWerteDezember,
summeErgebnisseJanuar,
summeErgebnisseFebruar,
summeErgebnisseMaerz,
summeErgebnisseApril,
summeErgebnisseMai,
summeErgebnisseJuni,
summeErgebnisseJuli,
summeErgebnisseAugust,
summeErgebnisseSeptember,
summeErgebnisseOktober,
summeErgebnisseNovember,
summeErgebnisseDezember,
ErgebnisseWirksamerGesamtEnergieDurchlassGrad,
summeWaermeQuellenSolarGesamt,
summeFlaeche,
PlanungswerteFenster,
TageMonat,
waermeSenken,
WaermeQuellenGesamtJanuar,
WaermeQuellenGesamtFebruar,
WaermeQuellenGesamtMaerz,
WaermeQuellenGesamtApril,
WaermeQuellenGesamtMai,
WaermeQuellenGesamtJuni,
WaermeQuellenGesamtJuli,
WaermeQuellenGesamtAugust,
WaermeQuellenGesamtSeptember,
WaermeQuellenGesamtOktober,
WaermeQuellenGesamtNovember,
WaermeQuellenGesamtDezember,
waermeSenkenBereinigtJanuar,
waermeSenkenBereinigtFebruar,
waermeSenkenBereinigtMaerz,
waermeSenkenBereinigtApril,
waermeSenkenBereinigtMai,
waermeSenkenBereinigtJuni,
waermeSenkenBereinigtJuli,
waermeSenkenBereinigtAugust,
waermeSenkenBereinigtSeptember,
waermeSenkenBereinigtOktober,
waermeSenkenBereinigtNovember,
waermeSenkenBereinigtDezember,
belastungsgrade,
maxBelastungsgrad,
belastungsgradeBereinigt,
WaermeQuellenAnlagentechnikHeizungJanuar,
WaermeQuellenAnlagentechnikHeizungFebruar,
WaermeQuellenAnlagentechnikHeizungMaerz,
WaermeQuellenAnlagentechnikHeizungApril,
WaermeQuellenAnlagentechnikHeizungMai,
WaermeQuellenAnlagentechnikHeizungJuni,
WaermeQuellenAnlagentechnikHeizungJuli,
WaermeQuellenAnlagentechnikHeizungAugust,
WaermeQuellenAnlagentechnikHeizungSeptember,
WaermeQuellenAnlagentechnikHeizungOktober,
WaermeQuellenAnlagentechnikHeizungNovember,
WaermeQuellenAnlagentechnikHeizungDezember,
FaktorNutzbareWaerme,
trinkwasserWaermebedarf,
flaechenBezogenerWaermebedarf,
trinkwasserWaermebedarfJahr,
FaktorNutzbareWaermeTrinkwarmwasser,
WaermeQuellenAnlagentechnikTrinkwarmwasser,
interneWaermeQuellenProMonat,
WaermeQuellenBewohner,
WaermeQuellenAnlagentechnikGesamt,
WaermeQuellenGesamt,
WaermeQuellenGesamtLeistung,
interneWaermeQuellenGesamt,
summeWaermeQuellenAnlagentechnikGesamt,
summeWaermeQuellenGesamt,
summeWaermeQuellenGesamtLeistung,
bilanzInnenTemperaturen,
nutzenergieHeizungJanuar,
nutzenergieHeizungFebruar,
nutzenergieHeizungMaerz,
nutzenergieHeizungApril,
nutzenergieHeizungMai,
nutzenergieHeizungJuni,
nutzenergieHeizungJuli,
nutzenergieHeizungAugust,
nutzenergieHeizungSeptember,
nutzenergieHeizungOktober,
nutzenergieHeizungNovember,
nutzenergieHeizungDezember,
waermequellensenkenverhaeltnisJanuar,
waermequellensenkenverhaeltnisFebruar,
waermequellensenkenverhaeltnisMaerz,
waermequellensenkenverhaeltnisApril,
waermequellensenkenverhaeltnisMai,
waermequellensenkenverhaeltnisJuni,
waermequellensenkenverhaeltnisJuli,
waermequellensenkenverhaeltnisAugust,
waermequellensenkenverhaeltnisSeptember,
waermequellensenkenverhaeltnisOktober,
waermequellensenkenverhaeltnisNovember,
waermequellensenkenverhaeltnisDezember,
ausnutzungsgradJanuar,
ausnutzungsgradFebruar,
ausnutzungsgradMaerz,
ausnutzungsgradApril,
ausnutzungsgradMai,
ausnutzungsgradJuni,
ausnutzungsgradJuli,
ausnutzungsgradAugust,
ausnutzungsgradSeptember,
ausnutzungsgradOktober,
ausnutzungsgradNovember,
ausnutzungsgradDezember,
gesamtHeizstunden,
gesamtNutzenergieHeizung,
faktorBelastungJanuar,
faktorBelastungFebruar,
faktorBelastungMaerz,
faktorBelastungApril,
faktorBelastungMai,
faktorBelastungJuni,
faktorBelastungJuli,
faktorBelastungAugust,
faktorBelastungSeptember,
faktorBelastungOktober,
faktorBelastungNovember,
faktorBelastungDezember,
monatlicheBelastungJanuar,
monatlicheBelastungFebruar,
monatlicheBelastungMaerz,
monatlicheBelastungApril,
monatlicheBelastungMai,
monatlicheBelastungJuni,
monatlicheBelastungJuli,
monatlicheBelastungAugust,
monatlicheBelastungSeptember,
monatlicheBelastungOktober,
monatlicheBelastungNovember,
monatlicheBelastungDezember,
heizstundenJanuar,
heizstundenFebruar,
heizstundenMaerz,
heizstundenApril,
heizstundenMai,
heizstundenJuni,
heizstundenJuli,
heizstundenAugust,
heizstundenSeptember,
heizstundenOktober,
heizstundenNovember,
heizstundenDezember,
rechnerischeLaufzeitGesamt,
rechnerischeLaufzeiten,
heizstunden,
heizstundenGesamt,
ErgebnisseAufwandsZahlenBelastungHeizung,
NennleistungWaermeerzeuger,
ErgebnisseAufwandsZahlenBelastungWarmwasser,
co2EmissionenGesamt,
endEnergieBedarfGesamt,
primaerEnergieBedarfGesamt,
energieEffizienzKlasse
}
}