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 = [17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17]; const zeitkonstanteRechnerischeLaufzeitMehrfamilienhaus: FixedLengthArray = [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 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 } }