Berechnung A14 Teil 1 fertig, Interpolationen erstellt, aufgeräumt
This commit is contained in:
@@ -8,8 +8,8 @@ export const createCaller = createCallerFactory({
|
||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
||||
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { A14BerechnungAufwandszahlenMittlereBelastung } from "#lib/Berechnungen/BedarfsausweisWohnen/A14BerechnungAufwandszahlenMittlereBelastung.js";
|
||||
import { funktionNennleistungWaermeerzeugerWarmwasserA14 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionNennleistungWaermeerzeugerWarmwasserA14.js";
|
||||
import { SystemModule } from "@faker-js/faker";
|
||||
|
||||
$: result = A14BerechnungAufwandszahlenMittlereBelastung();
|
||||
|
||||
@@ -28,7 +30,7 @@ $: result = A14BerechnungAufwandszahlenMittlereBelastung();
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center">Q<sub>h,b</sub> [kWh/a]<br>aus Tabelle A.12:</th>
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center bg-yellow-100">{Math.round(result.gesamtNutzenergieHeizung)}</th>
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center">t<sub>h,m</sub> [h/a]<br>aus Tabelle A.12:</th>
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center bg-yellow-100">{Math.round(result.heizstundenGesamt)}</th>
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center bg-yellow-100">{Math.round(result.gesamtHeizstunden)}</th>
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center">Φ<sub>h,max</sub> [W]<br>aus Tabelle A.6:</th>
|
||||
<th colspan="1" class="border border-gray-300 px-4 py-2 text-center bg-yellow-100">{Math.round(result.maximaleHeizlast)}</th>
|
||||
</tr>
|
||||
@@ -41,7 +43,7 @@ $: result = A14BerechnungAufwandszahlenMittlereBelastung();
|
||||
<th colspan="2" class="border border-gray-300 px-4 py-2 text-center">Übergabe</th>
|
||||
<th colspan="2" class="border border-gray-300 px-4 py-2 text-center">Verteilung</th>
|
||||
<th colspan="2" class="border border-gray-300 px-4 py-2 text-center">Speicherung</th>
|
||||
<th colspan="2" class="border border-gray-300 px-4 py-2 text-center">Erzeugung</th>
|
||||
<th colspan="2" class="border border-gray-300 px-4 py-2 text-center">Erzeugung {Math.round(result.NennleistungWaermeerzeuger*100)/100}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="border border-gray-300 px-4 py-2"></th>
|
||||
@@ -58,17 +60,24 @@ $: result = A14BerechnungAufwandszahlenMittlereBelastung();
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each result.ErgebnisseAufwandsZahlenBelastungHeizung as system, index}
|
||||
<tr class="text-center">
|
||||
<td colspan="2" class="text-left border border-gray-300 px-4 py-2">flächenbezogene Heizlast [W/m²]</td>
|
||||
<td colspan="2" class="border-2 border-gray-600 px-4 py-2">{Math.round(system.flaechenbezogeneLeistungUebergabeHeizung*100)/100}</td>
|
||||
<td colspan="2" class="border-2 border-gray-600 px-4 py-2">{Math.round(system.flaechenbezogeneLeistungVerteilungHeizung*100)/100}</td>
|
||||
<td colspan="2" class="border-2 border-gray-600 px-4 py-2">{Math.round(system.flaechenbezogeneLeistungSpeicherungHeizung*100)/100}</td>
|
||||
<td colspan="2" class="border-2 border-gray-600 px-4 py-2"></td>
|
||||
</tr>
|
||||
<tr class="text-center">
|
||||
<td class="border border-gray-300 px-4 py-2">{system.Bezeichnung}</td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-yellow-100">{Math.round(system.VersorgteFlaeche*100)/100}</td>
|
||||
<td class="border-2 border-gray-600 px-4 py-2">{Math.round(system.mittlereBelastungUebergabeHeizung*1000)/1000}</td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100">{Math.round(system.AufwandsZahlUebergabeHeizung*1000)/1000}</td>
|
||||
<td class="border-2 border-gray-600 px-4 py-2">{Math.round(system.mittlereBelastungVerteilungHeizung*1000)/1000}</td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100"></td>
|
||||
<td class="border-2 border-gray-600 px-4 py-2"></td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100"></td>
|
||||
<td class="border-2 border-gray-600 px-4 py-2"></td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100"></td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100">{Math.round(system.AufwandsZahlVerteilungHeizung*1000)/1000}</td>
|
||||
<td class="border-2 border-gray-600 px-4 py-2">{Math.round(system.mittlereBelastungSpeicherungHeizung*1000)/1000}</td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100">{Math.round(system.AufwandsZahlSpeicherungHeizung*1000)/1000}</td>
|
||||
<td class="border-2 border-gray-600 px-4 py-2">{Math.round(system.mittlereBelastungErzaegungHeizung*1000)/1000}</td>
|
||||
<td class="border border-gray-300 px-4 py-2 bg-blue-100">{Math.round(system.AufwandsZahlErzeugungHeizung*1000)/1000}</td>
|
||||
</tr>
|
||||
{/each}
|
||||
<tr>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { funktionAusnutzungsgrad } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgrad.js";
|
||||
import { funktionWaermesenken } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionWaermesenken.js";
|
||||
import { funktionAusnutzungsgradT18 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionAusnutzungsgradT18.js";
|
||||
import { funktionWaermesenkenA8A12 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionWaermesenkenA8A12.js";
|
||||
import { A11BerechnungWaermequellenZusammenstellung } from "#lib/Berechnungen/BedarfsausweisWohnen/A11BerechnungWaermequellenZusammenstellung.js";
|
||||
|
||||
export function A12BerechnungNutzenergiebedarfHeizung() {
|
||||
|
||||
const result = funktionWaermesenken();
|
||||
const result = funktionWaermesenkenA8A12();
|
||||
const belastungsgrade = result.belastungsgrade;
|
||||
const bilanzInnenTemperaturen = result.bilanzInnenTemperaturen;
|
||||
const waermeSenken = result.waermeSenken;
|
||||
@@ -107,18 +107,18 @@ let monatlicheBelastungDezember = 0;
|
||||
waermequellensenkenverhaeltnisNovember = waermeQuellen.November / waermeSenken.November;
|
||||
waermequellensenkenverhaeltnisDezember = waermeQuellen.Dezember / waermeSenken.Dezember;
|
||||
|
||||
ausnutzungsgradJanuar = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisJanuar, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradFebruar = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisFebruar, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradMärz = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisMärz, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradApril = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisApril, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradMai = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisMai, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradJuni = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisJuni, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradJuli = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisJuli, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradAugust = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisAugust, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradSeptember = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisSeptember, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradOktober = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisOktober, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradNovember = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisNovember, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradDezember = funktionAusnutzungsgrad(waermequellensenkenverhaeltnisDezember, ZeitKonstante, "alleMonate");
|
||||
ausnutzungsgradJanuar = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisJanuar);
|
||||
ausnutzungsgradFebruar = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisFebruar);
|
||||
ausnutzungsgradMärz = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisMärz);
|
||||
ausnutzungsgradApril = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisApril);
|
||||
ausnutzungsgradMai = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisMai);
|
||||
ausnutzungsgradJuni = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisJuni);
|
||||
ausnutzungsgradJuli = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisJuli);
|
||||
ausnutzungsgradAugust = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisAugust);
|
||||
ausnutzungsgradSeptember = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisSeptember);
|
||||
ausnutzungsgradOktober = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisOktober);
|
||||
ausnutzungsgradNovember = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisNovember);
|
||||
ausnutzungsgradDezember = funktionAusnutzungsgradT18(ZeitKonstante, waermequellensenkenverhaeltnisDezember);
|
||||
|
||||
faktorBelastungJanuar = Math.max(1 - (waermequellensenkenverhaeltnisJanuar * ausnutzungsgradJanuar), 0);
|
||||
faktorBelastungFebruar = Math.max(1 - (waermequellensenkenverhaeltnisFebruar * ausnutzungsgradFebruar), 0);
|
||||
|
||||
@@ -1,101 +1,162 @@
|
||||
import { A6BerechnungWaermeTransferMaxStroemeLueftungGesamt } from "#lib/Berechnungen/BedarfsausweisWohnen/A6BerechnungWaermeTransferMaxStroemeLueftungGesamt.js";
|
||||
import { A9BerechnungNutzenergiebedarfTrinkwarmwasser } from "#lib/Berechnungen/BedarfsausweisWohnen/A9BerechnungNutzenergiebedarfTrinkwarmwasser.js";
|
||||
import { A12BerechnungNutzenergiebedarfHeizung } from "#lib/Berechnungen/BedarfsausweisWohnen/A12BerechnungNutzenergiebedarfHeizung.js";
|
||||
import { A13BerechnungRechnerischeLaufzeitHeizung } from "#lib/Berechnungen/BedarfsausweisWohnen/A13BerechnungRechnerischeLaufzeitHeizung.js";
|
||||
import { funktionKorrekturfaktorMittlereBelastungT32 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionKorrekturfaktorMittlereBelastungT32.js";
|
||||
import { funktionNennleistungWaermeerzeugerWarmwasserA14 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionNennleistungWaermeerzeugerWarmwasserA14.js";
|
||||
import { funktionAufwandszahlErzeugungHeizungT77 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionAufwandszahlErzeugungHeizungT77.js";
|
||||
|
||||
|
||||
export function A14BerechnungAufwandszahlenMittlereBelastung() {
|
||||
|
||||
const result = A12BerechnungNutzenergiebedarfHeizung();
|
||||
const heizstunden = {
|
||||
Januar: result.heizstundenJanuar,
|
||||
Februar: result.heizstundenFebruar,
|
||||
Maerz: result.heizstundenMärz,
|
||||
April: result.heizstundenApril,
|
||||
Mai: result.heizstundenMai,
|
||||
Juni: result.heizstundenJuni,
|
||||
Juli: result.heizstundenJuli,
|
||||
August: result.heizstundenAugust,
|
||||
September: result.heizstundenSeptember,
|
||||
Oktober: result.heizstundenOktober,
|
||||
November: result.heizstundenNovember,
|
||||
Dezember: result.heizstundenDezember
|
||||
};
|
||||
const heizstundenGesamt = Object.values(heizstunden).reduce((acc, value) => acc + value, 0);
|
||||
const gesamtHeizstunden = result.gesamtHeizstunden;
|
||||
const gesamtNutzenergieHeizung = result.gesamtNutzenergieHeizung;
|
||||
|
||||
const resultMaximaleHeizlast = A6BerechnungWaermeTransferMaxStroemeLueftungGesamt();
|
||||
const maximaleHeizlast = resultMaximaleHeizlast.maximaleHeizlast;
|
||||
|
||||
// Planungswerte aus Eingabe
|
||||
const resultRechnerischeLaufzeitHeizung = A13BerechnungRechnerischeLaufzeitHeizung();
|
||||
const rechnerischeLaufzeitGesamt = resultRechnerischeLaufzeitHeizung.rechnerischeLaufzeitGesamt;
|
||||
|
||||
const resultNutzenergiebedarfTrinkwarmwasser = A9BerechnungNutzenergiebedarfTrinkwarmwasser();
|
||||
const flaechenBezogenerWaermebedarf = resultNutzenergiebedarfTrinkwarmwasser.flaechenBezogenerWaermebedarf;
|
||||
|
||||
// Planungswerte aus Eingabe, Tabellen 20, 21, 22, C12, 30, 31, 41, 49, 50, 51, 52, 53
|
||||
|
||||
let NettoGrundflaeche = 154.2;
|
||||
let anlass = "Neubau";
|
||||
let ZuschlagsFaktorErzeugung = 0;
|
||||
|
||||
const PlanungswerteUebergabeVerteilungHeizung = [
|
||||
{
|
||||
Bezeichnung: "Übergabe Verteilung 1 - Heizung",
|
||||
VersorgteFlaeche: 0.5,
|
||||
Anlage: "Erzeuger 1 - zentral",
|
||||
VersorgteFlaeche: 0.7,
|
||||
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: "30 K (55°C/45°C)",
|
||||
ueberTemperatur: "55°C/45°C",
|
||||
waermeverlustAußenbauteile: "Radiatorposition Außenwand",
|
||||
intermittierenderBetrieb: "-",
|
||||
einzelraumregelSysteme: "-",
|
||||
verteilung: "Verteilleitungen im beheizten Bereich",
|
||||
PufferSpeicherHeizung: 0,
|
||||
ehs0: 1,
|
||||
ehce0: 1.042,
|
||||
Δehce1: 0.015,
|
||||
Δehce2: 0.009,
|
||||
Δehce3: 0,
|
||||
Δehce5: 0,
|
||||
Δehcehydr: 0.018,
|
||||
fhydr: 1.02
|
||||
fhydr: 1.02,
|
||||
ehd0: 1.049
|
||||
|
||||
},
|
||||
{
|
||||
Bezeichnung: "Übergabe Verteilung 2 - Heizung",
|
||||
VersorgteFlaeche: 0.5,
|
||||
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: "30 K (55°C/45°C)",
|
||||
waermeverlustAußenbauteile: "Radiatorposition Außenwand",
|
||||
Anlage: "Erzeuger 1 - zentral",
|
||||
VersorgteFlaeche: 0.2,
|
||||
UebergabeSystem: "Fußbodenheizung Nasssystem",
|
||||
rohrnetztyp: "IIb (Etagenverteilertyp Fußbodenheizung)",
|
||||
raumtemperaturRegelung: "ungeregelt, mit zentraler Vorlauftemperaturregelung",
|
||||
ueberTemperatur: "35°C/28°C",
|
||||
waermeverlustAngrenzendeBauteile: "integrierte Heizfläche mit Mindestdämmung nach DIN EN 1264 (alle Teile)",
|
||||
intermittierenderBetrieb: "-",
|
||||
einzelraumregelSysteme: "-",
|
||||
verteilung: "Verteilleitungen im beheizten Bereich",
|
||||
PufferSpeicherHeizung: 0,
|
||||
ehs0: 1,
|
||||
ehce0: 1.149,
|
||||
Δehce1: 0.021,
|
||||
Δehce2: 0.015,
|
||||
Δehce3: 0,
|
||||
Δehce5: 0,
|
||||
Δehcehydr: 0,
|
||||
fhydr: 1,
|
||||
ehd0: 1.004
|
||||
|
||||
},
|
||||
{
|
||||
Anlage: "Erzeuger 2 - dezentral",
|
||||
VersorgteFlaeche: 0.1,
|
||||
Heizungsart: "Elektro-Direktheizung, PI-Regler (mit Optimierung)",
|
||||
Bereich: "Außenwandbereich",
|
||||
intermittierenderBetrieb: "Nein",
|
||||
ehs0: 1,
|
||||
ehce0: 1.042,
|
||||
Δehce1: 0.015,
|
||||
Δehce2: 0.009,
|
||||
Δehce3: 0,
|
||||
Δehce5: 0,
|
||||
Δehcehydr: 0.018,
|
||||
fhydr: 1.02
|
||||
Δehce1: 0,
|
||||
Δehce2: 0,
|
||||
Δehce3: 0,
|
||||
Δehce5: 0,
|
||||
Δehcehydr: 0,
|
||||
fhydr: 1,
|
||||
ehd0: 1
|
||||
|
||||
}
|
||||
];
|
||||
|
||||
const ErgebnisseAufwandsZahlenBelastungHeizung = PlanungswerteUebergabeVerteilungHeizung.map(system => {
|
||||
const mittlereBelastungUebergabeHeizung = (gesamtNutzenergieHeizung / (heizstundenGesamt * maximaleHeizlast)) * 1000 * system.VersorgteFlaeche;
|
||||
const resultfunktionNennleistungWaermeerzeugerWarmwasserA14 = funktionNennleistungWaermeerzeugerWarmwasserA14(NettoGrundflaeche, flaechenBezogenerWaermebedarf);
|
||||
const NennleistungWaermeerzeugerWarmwasser = resultfunktionNennleistungWaermeerzeugerWarmwasserA14;
|
||||
|
||||
|
||||
if (anlass === "Neubau") {
|
||||
ZuschlagsFaktorErzeugung = 1.1;
|
||||
}
|
||||
else {
|
||||
ZuschlagsFaktorErzeugung = 1.5;
|
||||
}
|
||||
|
||||
const NennleistungWaermeerzeugerHeizung = resultMaximaleHeizlast.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;
|
||||
const AufwandsZahlVerteilungHeizungKorrekturZwei = 1 + (AufwandsZahlVerteilungHeizungKorrektur - 1) * (50/flaechenbezogeneLeistungUebergabeHeizung);
|
||||
const AufwandsZahlVerteilungHeizung = (AufwandsZahlVerteilungHeizungKorrekturZwei - 1) * (8760/rechnerischeLaufzeitGesamt) + 1;
|
||||
const flaechenbezogeneLeistungVerteilungHeizung = flaechenbezogeneLeistungUebergabeHeizung * AufwandsZahlVerteilungHeizung;
|
||||
|
||||
const mittlereBelastungSpeicherungHeizung = mittlereBelastungVerteilungHeizung * AufwandsZahlVerteilungHeizung;
|
||||
const AufwandsZahlSpeicherungHeizung = system.ehs0;
|
||||
const flaechenbezogeneLeistungSpeicherungHeizung = flaechenbezogeneLeistungVerteilungHeizung * AufwandsZahlSpeicherungHeizung;
|
||||
|
||||
const mittlereBelastungErzaegungHeizung = mittlereBelastungSpeicherungHeizung * AufwandsZahlSpeicherungHeizung;
|
||||
|
||||
const AufwandsZahlErzeugungHeizung = funktionAufwandszahlErzeugungHeizungT77(NennleistungWaermeerzeuger, mittlereBelastungErzaegungHeizung);
|
||||
|
||||
return {
|
||||
Bezeichnung: system.Bezeichnung,
|
||||
Bezeichnung: system.Anlage + " - " + system.VersorgteFlaeche * 100 + " % versorgte Fläche - " + (system.UebergabeSystem ? system.UebergabeSystem : system.Heizungsart),
|
||||
mittlereBelastungUebergabeHeizung: mittlereBelastungUebergabeHeizung,
|
||||
VersorgteFlaeche: system.VersorgteFlaeche,
|
||||
AufwandsZahlUebergabeHeizung: AufwandsZahlUebergabeHeizung,
|
||||
mittlereBelastungVerteilungHeizung: mittlereBelastungVerteilungHeizung
|
||||
|
||||
|
||||
|
||||
mittlereBelastungVerteilungHeizung: mittlereBelastungVerteilungHeizung,
|
||||
flaechenbezogeneLeistungUebergabeHeizung: flaechenbezogeneLeistungUebergabeHeizung,
|
||||
AufwandsZahlVerteilungHeizung: AufwandsZahlVerteilungHeizung,
|
||||
flaechenbezogeneLeistungVerteilungHeizung: flaechenbezogeneLeistungVerteilungHeizung,
|
||||
mittlereBelastungSpeicherungHeizung: mittlereBelastungSpeicherungHeizung,
|
||||
AufwandsZahlSpeicherungHeizung: AufwandsZahlSpeicherungHeizung,
|
||||
flaechenbezogeneLeistungSpeicherungHeizung: flaechenbezogeneLeistungSpeicherungHeizung,
|
||||
mittlereBelastungErzaegungHeizung: mittlereBelastungErzaegungHeizung,
|
||||
AufwandsZahlErzeugungHeizung: AufwandsZahlErzeugungHeizung
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
return {
|
||||
|
||||
heizstundenGesamt,
|
||||
gesamtHeizstunden,
|
||||
maximaleHeizlast,
|
||||
gesamtNutzenergieHeizung,
|
||||
ErgebnisseAufwandsZahlenBelastungHeizung
|
||||
ErgebnisseAufwandsZahlenBelastungHeizung,
|
||||
NennleistungWaermeerzeuger
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import FensterImage from "#components/Ausweis/FensterImage.svelte";
|
||||
import { funktionSolareBestrahlungsEnergie } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionSolareBestrahlungsEnergie.js";
|
||||
import { funktionSolareBestrahlungsEnergieT17 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionSolareBestrahlungsEnergieT17.js";
|
||||
|
||||
export function A7A2BerechnungWaermequellenSolareEinstrahlung() {
|
||||
|
||||
@@ -85,7 +85,7 @@ export function A7A2BerechnungWaermequellenSolareEinstrahlung() {
|
||||
// Berechnung der solaren Wärmequellen pro Fenster und Monat
|
||||
|
||||
PlanungswerteBauteil.forEach(item => {
|
||||
const MonatsWerte = funktionSolareBestrahlungsEnergie(item.Neigung, item.Orientierung);
|
||||
const MonatsWerte = funktionSolareBestrahlungsEnergieT17(item.Neigung, item.Orientierung);
|
||||
if (MonatsWerte) {
|
||||
const SolareWaermequelleJanuar = MonatsWerte.jan * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
|
||||
const MonatsWerteJanuar = MonatsWerte.jan;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { funktionWaermesenken } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionWaermesenken.js";
|
||||
import { funktionWaermesenkenA8A12 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionWaermesenkenA8A12.js";
|
||||
import { A7A2BerechnungWaermequellenSolareEinstrahlung } from "#lib/Berechnungen/BedarfsausweisWohnen/A7A2BerechnungWaermequellenSolareEinstrahlung.js";
|
||||
import { funktionInterneWaermequellen } from "./funktionInterneWaermequellen.js";
|
||||
import { funktionInterneWaermequellenA8 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionInterneWaermequellenA8.js";
|
||||
|
||||
export function A8BerechnungWaermequellenAusAnlagentechnikHeizung() {
|
||||
|
||||
const result = funktionWaermesenken();
|
||||
const result = funktionWaermesenkenA8A12();
|
||||
const waermeSenken = result.waermeSenken;
|
||||
const belastungsgrade = result.belastungsgrade;
|
||||
|
||||
@@ -22,7 +22,7 @@ const einstrahlung = A7A2BerechnungWaermequellenSolareEinstrahlung();
|
||||
const summeErgebnisseNovember = einstrahlung.summeErgebnisseNovember;
|
||||
const summeErgebnisseDezember = einstrahlung.summeErgebnisseDezember;
|
||||
|
||||
const resultInterneWaermeQuellen = funktionInterneWaermequellen();
|
||||
const resultInterneWaermeQuellen = funktionInterneWaermequellenA8();
|
||||
const interneWaermeQuellenProMonat = resultInterneWaermeQuellen.interneWaermeQuellenProMonat;
|
||||
|
||||
let TageMonat = {
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
import { BedarfsausweisWohnenClient, AufnahmeClient } from "#components/Ausweis/types.js";
|
||||
import { linearInterpolation } from "js-interpolate"
|
||||
|
||||
|
||||
/**
|
||||
* Implementierung Tabelle E.7 — Tabelle A.9 - Trinkwassererwärmung - Berechnung des Wärmebedarfs zur Trinkwassererwärmung
|
||||
*
|
||||
* @see 18599-Tabellenverfahren-Wohngebaeude.pdf
|
||||
* @export
|
||||
* @param {BedarfsausweisWohnenClient} ausweis
|
||||
* @param {AufnahmeClient} gebaeude_aufnahme
|
||||
*/
|
||||
export function A9BerechnungNutzenergiebedarfTrinkwarmwasser(ausweis: BedarfsausweisWohnenClient, gebaeude_aufnahme: AufnahmeClient) {
|
||||
export function A9BerechnungNutzenergiebedarfTrinkwarmwasser() {
|
||||
// A_NGF aus Eingabe
|
||||
const bezugsflaeche = 154.2;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js";
|
||||
|
||||
export function funktionAufwandszahlErzeugungHeizungHilfsenergieT83(suchSpalte: number, datenZeile: number) {
|
||||
|
||||
const dataBox = [
|
||||
{ SuchSpalte: [5], DatenSpalte: [0.0208, 0.0267, 0.0325, 0.0418, 0.0510, 0.0603, 0.0696, 0.0789, 0.0882, 0.0974] },
|
||||
{ SuchSpalte: [10], DatenSpalte: [0.0251, 0.0352, 0.0453, 0.0582, 0.0712, 0.0841, 0.0971, 0.1100, 0.1230, 0.1359] },
|
||||
{ SuchSpalte: [20], DatenSpalte: [0.0311, 0.0471, 0.0632, 0.0812, 0.0993, 0.1173, 0.1354, 0.1534, 0.1715, 0.1895] },
|
||||
{ SuchSpalte: [30], DatenSpalte: [0.0356, 0.0562, 0.0768, 0.0987, 0.1206, 0.1425, 0.1645, 0.1864, 0.2083, 0.2303] },
|
||||
{ SuchSpalte: [40], DatenSpalte: [0.0394, 0.0637, 0.0881, 0.1133, 0.1385, 0.1637, 0.1888, 0.2140, 0.2392, 0.2644] },
|
||||
{ SuchSpalte: [50], DatenSpalte: [0.0427, 0.0704, 0.0981, 0.1261, 0.1541, 0.1822, 0.2102, 0.2382, 0.2662, 0.2943] },
|
||||
{ SuchSpalte: [60], DatenSpalte: [0.0457, 0.0764, 0.1071, 0.1376, 0.1682, 0.1988, 0.2294, 0.2600, 0.2906, 0.3212] },
|
||||
{ SuchSpalte: [70], DatenSpalte: [0.0484, 0.0819, 0.1153, 0.1482, 0.1811, 0.2141, 0.2470, 0.2800, 0.3129, 0.3458] },
|
||||
{ SuchSpalte: [80], DatenSpalte: [0.0510, 0.0869, 0.1229, 0.1580, 0.1931, 0.2283, 0.2634, 0.2985, 0.3336, 0.3687] },
|
||||
{ SuchSpalte: [90], DatenSpalte: [0.0534, 0.0917, 0.1301, 0.1672, 0.2044, 0.2415, 0.2787, 0.3158, 0.3530, 0.3902] },
|
||||
{ SuchSpalte: [100], DatenSpalte: [0.0556, 0.0962, 0.1368, 0.1759, 0.2150, 0.2541, 0.2931, 0.3322, 0.3713, 0.4104] },
|
||||
{ SuchSpalte: [120], DatenSpalte: [0.0598, 0.1045, 0.1493, 0.1920, 0.2346, 0.2773, 0.3200, 0.3626, 0.4053, 0.4479] },
|
||||
{ SuchSpalte: [140], DatenSpalte: [0.0636, 0.1122, 0.1608, 0.2067, 0.2527, 0.2986, 0.3445, 0.3905, 0.4364, 0.4823] },
|
||||
{ SuchSpalte: [160], DatenSpalte: [0.0671, 0.1193, 0.1714, 0.2204, 0.2694, 0.3184, 0.3673, 0.4163, 0.4653, 0.5143] },
|
||||
{ SuchSpalte: [180], DatenSpalte: [0.0705, 0.1259, 0.1814, 0.2332, 0.2850, 0.3369, 0.3887, 0.4405, 0.4924, 0.5442] },
|
||||
{ SuchSpalte: [200], DatenSpalte: [0.0736, 0.1322, 0.1908, 0.2453, 0.2998, 0.3543, 0.4089, 0.4634, 0.5179, 0.5724] },
|
||||
{ SuchSpalte: [250], DatenSpalte: [0.0808, 0.1466, 0.2124, 0.2731, 0.3337, 0.3944, 0.4551, 0.5158, 0.5764, 0.6371] },
|
||||
{ SuchSpalte: [300], DatenSpalte: [0.0873, 0.1595, 0.2318, 0.2980, 0.3643, 0.4305, 0.4967, 0.5629, 0.6292, 0.6954] },
|
||||
{ SuchSpalte: [350], DatenSpalte: [0.0932, 0.1714, 0.2496, 0.3209, 0.3922, 0.4635, 0.5349, 0.6062, 0.6775, 0.7488] },
|
||||
{ SuchSpalte: [400], DatenSpalte: [0.0987, 0.1824, 0.2661, 0.3422, 0.4182, 0.4942, 0.5703, 0.6463, 0.7223, 0.7984] }
|
||||
];
|
||||
|
||||
const dataZeile = [ { DatenZeile: [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0] } ];
|
||||
|
||||
|
||||
const AufwandszahlErzeugungHeizungHilfsenergie = funktionDoppelteInterpolation(suchSpalte, datenZeile, dataZeile, dataBox);
|
||||
|
||||
return AufwandszahlErzeugungHeizungHilfsenergie;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js";
|
||||
|
||||
export function funktionAufwandszahlErzeugungHeizungT77(suchSpalte: number, datenZeile: number) {
|
||||
|
||||
const dataBox = [
|
||||
{ SuchSpalte: [5], DatenSpalte: [1.013, 1.019, 1.024, 1.042, 1.061, 1.079, 1.098, 1.117, 1.135, 1.154] },
|
||||
{ SuchSpalte: [10], DatenSpalte: [1.011, 1.017, 1.023, 1.041, 1.059, 1.077, 1.096, 1.114, 1.132, 1.150] },
|
||||
{ SuchSpalte: [20], DatenSpalte: [1.010, 1.016, 1.022, 1.040, 1.057, 1.075, 1.093, 1.111, 1.129, 1.147] },
|
||||
{ SuchSpalte: [30], DatenSpalte: [1.009, 1.016, 1.021, 1.039, 1.056, 1.074, 1.092, 1.109, 1.127, 1.145] },
|
||||
{ SuchSpalte: [40], DatenSpalte: [1.009, 1.015, 1.021, 1.038, 1.056, 1.073, 1.091, 1.108, 1.126, 1.143] },
|
||||
{ SuchSpalte: [50], DatenSpalte: [1.009, 1.015, 1.020, 1.038, 1.055, 1.073, 1.090, 1.107, 1.125, 1.142] },
|
||||
{ SuchSpalte: [60], DatenSpalte: [1.008, 1.015, 1.020, 1.037, 1.055, 1.072, 1.089, 1.107, 1.124, 1.141] },
|
||||
{ SuchSpalte: [70], DatenSpalte: [1.008, 1.014, 1.020, 1.037, 1.054, 1.072, 1.089, 1.106, 1.123, 1.140] },
|
||||
{ SuchSpalte: [80], DatenSpalte: [1.008, 1.014, 1.020, 1.037, 1.054, 1.071, 1.088, 1.105, 1.122, 1.140] },
|
||||
{ SuchSpalte: [90], DatenSpalte: [1.008, 1.014, 1.020, 1.037, 1.054, 1.071, 1.088, 1.105, 1.122, 1.139] },
|
||||
{ SuchSpalte: [100], DatenSpalte: [1.008, 1.014, 1.019, 1.036, 1.053, 1.070, 1.087, 1.104, 1.121, 1.138] },
|
||||
{ SuchSpalte: [120], DatenSpalte: [1.008, 1.014, 1.019, 1.036, 1.053, 1.070, 1.087, 1.104, 1.121, 1.138] },
|
||||
{ SuchSpalte: [140], DatenSpalte: [1.008, 1.014, 1.019, 1.036, 1.053, 1.069, 1.086, 1.103, 1.120, 1.137] },
|
||||
{ SuchSpalte: [160], DatenSpalte: [1.007, 1.013, 1.019, 1.036, 1.052, 1.069, 1.086, 1.103, 1.119, 1.136] },
|
||||
{ SuchSpalte: [180], DatenSpalte: [1.007, 1.013, 1.019, 1.035, 1.052, 1.069, 1.085, 1.102, 1.119, 1.135] },
|
||||
{ SuchSpalte: [200], DatenSpalte: [1.007, 1.013, 1.019, 1.035, 1.052, 1.068, 1.085, 1.102, 1.118, 1.135] },
|
||||
{ SuchSpalte: [250], DatenSpalte: [1.007, 1.013, 1.018, 1.035, 1.051, 1.068, 1.084, 1.101, 1.117, 1.134] },
|
||||
{ SuchSpalte: [300], DatenSpalte: [1.007, 1.013, 1.018, 1.034, 1.051, 1.067, 1.084, 1.100, 1.117, 1.133] },
|
||||
{ SuchSpalte: [350], DatenSpalte: [1.007, 1.012, 1.018, 1.034, 1.050, 1.067, 1.083, 1.099, 1.116, 1.132] }
|
||||
];
|
||||
|
||||
const dataZeile = [ { DatenZeile: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] } ];
|
||||
|
||||
|
||||
const AufwandsZahlErzeugungHeizung = funktionDoppelteInterpolation(suchSpalte, datenZeile, dataZeile, dataBox);
|
||||
|
||||
return AufwandsZahlErzeugungHeizung;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js";
|
||||
|
||||
export function funktionAufwandszahlErzeugungHeizungUmlaufWasserheizerT82(suchSpalte: number, datenZeile: number) {
|
||||
|
||||
const dataBox = [
|
||||
{ SuchSpalte: [11], DatenSpalte: [1.038,1.069,1.098,1.122,1.145,1.169,1.192,1.216,1.240,1.263] },
|
||||
{ SuchSpalte: [18], DatenSpalte: [1.037,1.068,1.096,1.120,1.143,1.166,1.189,1.212,1.236,1.259] },
|
||||
{ SuchSpalte: [24], DatenSpalte: [1.037,1.067,1.096,1.118,1.141,1.164,1.187,1.210,1.233,1.256] }
|
||||
];
|
||||
|
||||
const dataZeile = [ { DatenZeile: [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1] } ];
|
||||
|
||||
|
||||
const AufwandszahlErzeugungHeizungUmlaufWasserheizer = funktionDoppelteInterpolation(suchSpalte, datenZeile, dataZeile, dataBox);
|
||||
|
||||
return AufwandszahlErzeugungHeizungUmlaufWasserheizer;
|
||||
|
||||
}
|
||||
@@ -1,156 +0,0 @@
|
||||
// Funktion zur Berechnung des Ausnutzungsgrades aus Tabelle 18
|
||||
|
||||
import { cubicSplineInterpolation, nevillePolynomialInterpolation } from "js-interpolate";
|
||||
|
||||
const dataset = {
|
||||
alleMonate: {
|
||||
30: [
|
||||
0.999, 0.992, 0.978, 0.956, 0.927, 0.893, 0.856, 0.818, 0.78, 0.742,
|
||||
0.706, 0.671, 0.638, 0.608, 0.579, 0.553, 0.528, 0.505, 0.483,
|
||||
0.463, 0.445, 0.428, 0.411, 0.396, 0.382, 0.369, 0.357, 0.345,
|
||||
0.334, 0.324, 0.314, 0.305, 0.296, 0.288, 0.28, 0.273, 0.266, 0.259,
|
||||
0.253, 0.246, 0.22, 0.198, 0.181, 0.166, 0.153, 0.142, 0.133, 0.125,
|
||||
0.117, 0.111, 0.105, 0.1,
|
||||
],
|
||||
40: [
|
||||
1.0, 0.997, 0.99, 0.975, 0.954, 0.926, 0.892, 0.855, 0.817, 0.778,
|
||||
0.739, 0.702, 0.667, 0.634, 0.603, 0.574, 0.547, 0.522, 0.498,
|
||||
0.477, 0.457, 0.438, 0.421, 0.405, 0.39, 0.376, 0.363, 0.351, 0.339,
|
||||
0.329, 0.318, 0.309, 0.3, 0.291, 0.283, 0.276, 0.268, 0.261, 0.255,
|
||||
0.249, 0.221, 0.199, 0.181, 0.166, 0.154, 0.143, 0.133, 0.125,
|
||||
0.118, 0.111, 0.105, 0.1,
|
||||
],
|
||||
50: [
|
||||
1.0, 0.999, 0.995, 0.986, 0.97, 0.948, 0.918, 0.883, 0.845, 0.805,
|
||||
0.765, 0.726, 0.688, 0.652, 0.619, 0.588, 0.559, 0.533, 0.508,
|
||||
0.485, 0.464, 0.445, 0.427, 0.41, 0.394, 0.38, 0.366, 0.354, 0.342,
|
||||
0.331, 0.321, 0.311, 0.301, 0.293, 0.285, 0.277, 0.269, 0.262,
|
||||
0.256, 0.249, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125,
|
||||
0.118, 0.111, 0.105, 0.1,
|
||||
],
|
||||
60: [
|
||||
1.0, 1.0, 0.998, 0.992, 0.981, 0.963, 0.937, 0.904, 0.867, 0.826,
|
||||
0.785, 0.743, 0.704, 0.666, 0.631, 0.598, 0.568, 0.54, 0.514, 0.491,
|
||||
0.469, 0.449, 0.43, 0.413, 0.397, 0.382, 0.368, 0.355, 0.343, 0.332,
|
||||
0.322, 0.312, 0.302, 0.293, 0.285, 0.277, 0.27, 0.263, 0.256, 0.25,
|
||||
0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111,
|
||||
0.105, 0.1,
|
||||
],
|
||||
70: [
|
||||
1.0, 1.0, 0.999, 0.996, 0.988, 0.973, 0.951, 0.921, 0.884, 0.843,
|
||||
0.8, 0.757, 0.716, 0.676, 0.639, 0.605, 0.574, 0.545, 0.518, 0.494,
|
||||
0.472, 0.451, 0.432, 0.414, 0.398, 0.383, 0.369, 0.356, 0.344,
|
||||
0.333, 0.322, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256,
|
||||
0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118,
|
||||
0.111, 0.105, 0.1,
|
||||
],
|
||||
80: [
|
||||
1.0, 1.0, 0.999, 0.998, 0.992, 0.981, 0.962, 0.934, 0.898, 0.857,
|
||||
0.813, 0.769, 0.725, 0.684, 0.646, 0.61, 0.578, 0.548, 0.521, 0.496,
|
||||
0.473, 0.452, 0.433, 0.415, 0.399, 0.384, 0.37, 0.357, 0.344, 0.333,
|
||||
0.322, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25,
|
||||
0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111,
|
||||
0.105, 0.1,
|
||||
],
|
||||
90: [
|
||||
1.0, 1.0, 1.0, 0.999, 0.995, 0.986, 0.97, 0.944, 0.91, 0.869, 0.824,
|
||||
0.778, 0.733, 0.69, 0.651, 0.614, 0.581, 0.55, 0.523, 0.497, 0.474,
|
||||
0.453, 0.434, 0.416, 0.4, 0.384, 0.37, 0.357, 0.345, 0.333, 0.322,
|
||||
0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222,
|
||||
0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105,
|
||||
0.1,
|
||||
],
|
||||
100: [
|
||||
1.0, 1.0, 1.0, 0.999, 0.997, 0.99, 0.976, 0.953, 0.92, 0.879, 0.833,
|
||||
0.786, 0.739, 0.695, 0.654, 0.617, 0.583, 0.552, 0.524, 0.498,
|
||||
0.475, 0.454, 0.434, 0.416, 0.4, 0.384, 0.37, 0.357, 0.345, 0.333,
|
||||
0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25,
|
||||
0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111,
|
||||
0.105, 0.1,
|
||||
],
|
||||
110: [
|
||||
1.0, 1.0, 1.0, 0.999, 0.998, 0.993, 0.981, 0.96, 0.928, 0.887,
|
||||
0.841, 0.792, 0.744, 0.699, 0.657, 0.619, 0.584, 0.553, 0.525,
|
||||
0.499, 0.475, 0.454, 0.435, 0.417, 0.4, 0.384, 0.37, 0.357, 0.345,
|
||||
0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256,
|
||||
0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118,
|
||||
0.111, 0.105, 0.1,
|
||||
],
|
||||
120: [
|
||||
1.0, 1.0, 1.0, 1.0, 0.999, 0.995, 0.985, 0.966, 0.935, 0.895, 0.847,
|
||||
0.798, 0.748, 0.702, 0.659, 0.621, 0.586, 0.554, 0.525, 0.5, 0.476,
|
||||
0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323,
|
||||
0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222,
|
||||
0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105,
|
||||
0.1,
|
||||
],
|
||||
130: [
|
||||
1.0, 1.0, 1.0, 1.0, 0.999, 0.996, 0.988, 0.971, 0.942, 0.901, 0.853,
|
||||
0.802, 0.752, 0.704, 0.661, 0.622, 0.587, 0.554, 0.526, 0.5, 0.476,
|
||||
0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323,
|
||||
0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222,
|
||||
0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105,
|
||||
0.1,
|
||||
],
|
||||
140: [
|
||||
1.0, 1.0, 1.0, 1.0, 0.999, 0.997, 0.991, 0.975, 0.947, 0.907, 0.858,
|
||||
0.806, 0.755, 0.706, 0.662, 0.623, 0.587, 0.555, 0.526, 0.5, 0.476,
|
||||
0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323,
|
||||
0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222,
|
||||
0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105,
|
||||
0.1,
|
||||
],
|
||||
150: [
|
||||
1.0, 1.0, 1.0, 1.0, 0.999, 0.998, 0.992, 0.979, 0.952, 0.912, 0.863,
|
||||
0.809, 0.757, 0.708, 0.663, 0.623, 0.588, 0.555, 0.526, 0.5, 0.476,
|
||||
0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323,
|
||||
0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222,
|
||||
0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105,
|
||||
0.1,
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
const waermeQuellenSenkenVerhaeltnis = [
|
||||
0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5,
|
||||
1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1,
|
||||
3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8,
|
||||
8.5, 9, 9.5, 10,
|
||||
];
|
||||
|
||||
export function funktionAusnutzungsgrad(
|
||||
waermequellensenkenverhaeltnis: number,
|
||||
zeitkonstane: number,
|
||||
monat: keyof typeof dataset
|
||||
) {
|
||||
const data = dataset[monat];
|
||||
|
||||
const interpolations: number[] = [];
|
||||
|
||||
for (const key in data) {
|
||||
const values = data[key as unknown as keyof typeof data];
|
||||
|
||||
const interpolated = cubicSplineInterpolation(
|
||||
values.map((value, i) => ({
|
||||
x: waermeQuellenSenkenVerhaeltnis[i],
|
||||
y: value,
|
||||
})),
|
||||
waermequellensenkenverhaeltnis
|
||||
);
|
||||
|
||||
|
||||
interpolations.push(interpolated);
|
||||
}
|
||||
|
||||
const interpolated = cubicSplineInterpolation(
|
||||
interpolations.map((interpolation, i) => {
|
||||
return {
|
||||
x: Object.keys(data)[i],
|
||||
y: interpolation,
|
||||
};
|
||||
}),
|
||||
zeitkonstane
|
||||
);
|
||||
|
||||
return interpolated;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import { funktionDoppelteInterpolation } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionDoppelteInterpolation.js";
|
||||
|
||||
export function funktionAusnutzungsgradT18(suchSpalte: number, datenZeile: number) {
|
||||
|
||||
const dataBox = [
|
||||
{ SuchSpalte: [30], DatenSpalte: [0.999, 0.992, 0.978, 0.956, 0.927, 0.893, 0.856, 0.818, 0.78, 0.742, 0.706, 0.671, 0.638, 0.608, 0.579, 0.553, 0.528, 0.505, 0.483, 0.463, 0.445, 0.428, 0.411, 0.396, 0.382, 0.369, 0.357, 0.345, 0.334, 0.324, 0.314, 0.305, 0.296, 0.288, 0.28, 0.273, 0.266, 0.259, 0.253, 0.246, 0.22, 0.198, 0.181, 0.166, 0.153, 0.142, 0.133, 0.125, 0.117, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [40], DatenSpalte: [1.0, 0.997, 0.99, 0.975, 0.954, 0.926, 0.892, 0.855, 0.817, 0.778, 0.739, 0.702, 0.667, 0.634, 0.603, 0.574, 0.547, 0.522, 0.498, 0.477, 0.457, 0.438, 0.421, 0.405, 0.39, 0.376, 0.363, 0.351, 0.339, 0.329, 0.318, 0.309, 0.3, 0.291, 0.283, 0.276, 0.268, 0.261, 0.255, 0.249, 0.221, 0.199, 0.181, 0.166, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [50], DatenSpalte: [1.0, 0.999, 0.995, 0.986, 0.97, 0.948, 0.918, 0.883, 0.845, 0.805, 0.765, 0.726, 0.688, 0.652, 0.619, 0.588, 0.559, 0.533, 0.508, 0.485, 0.464, 0.445, 0.427, 0.41, 0.394, 0.38, 0.366, 0.354, 0.342, 0.331, 0.321, 0.311, 0.301, 0.293, 0.285, 0.277, 0.269, 0.262, 0.256, 0.249, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [60], DatenSpalte: [1.0, 1.0, 0.998, 0.992, 0.981, 0.963, 0.937, 0.904, 0.867, 0.826, 0.785, 0.743, 0.704, 0.666, 0.631, 0.598, 0.568, 0.54, 0.514, 0.491, 0.469, 0.449, 0.43, 0.413, 0.397, 0.382, 0.368, 0.355, 0.343, 0.332, 0.322, 0.312, 0.302, 0.293, 0.285, 0.277, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [70], DatenSpalte: [1.0, 1.0, 0.999, 0.996, 0.988, 0.973, 0.951, 0.921, 0.884, 0.843, 0.8, 0.757, 0.716, 0.676, 0.639, 0.605, 0.574, 0.545, 0.518, 0.494, 0.472, 0.451, 0.432, 0.414, 0.398, 0.383, 0.369, 0.356, 0.344, 0.333, 0.322, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [80], DatenSpalte: [1.0, 1.0, 0.999, 0.998, 0.992, 0.981, 0.962, 0.934, 0.898, 0.857, 0.813, 0.769, 0.725, 0.684, 0.646, 0.61, 0.578, 0.548, 0.521, 0.496, 0.473, 0.452, 0.433, 0.415, 0.399, 0.384, 0.37, 0.357, 0.344, 0.333, 0.322, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [90], DatenSpalte: [1.0, 1.0, 1.0, 0.999, 0.995, 0.986, 0.97, 0.944, 0.91, 0.869, 0.824, 0.778, 0.733, 0.69, 0.651, 0.614, 0.581, 0.55, 0.523, 0.497, 0.474, 0.453, 0.434, 0.416, 0.4, 0.384, 0.37, 0.357, 0.345, 0.333, 0.322, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [100], DatenSpalte: [1.0, 1.0, 1.0, 0.999, 0.997, 0.99, 0.976, 0.953, 0.92, 0.879, 0.833, 0.786, 0.739, 0.695, 0.654, 0.617, 0.583, 0.552, 0.524, 0.498, 0.475, 0.454, 0.434, 0.416, 0.4, 0.384, 0.37, 0.357, 0.345, 0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [110], DatenSpalte: [1.0, 1.0, 1.0, 0.999, 0.998, 0.993, 0.981, 0.96, 0.928, 0.887, 0.841, 0.792, 0.744, 0.699, 0.657, 0.619, 0.584, 0.553, 0.525, 0.499, 0.475, 0.454, 0.435, 0.417, 0.4, 0.384, 0.37, 0.357, 0.345, 0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [120], DatenSpalte: [1.0, 1.0, 1.0, 1.0, 0.999, 0.995, 0.985, 0.966, 0.935, 0.895, 0.847, 0.798, 0.748, 0.702, 0.659, 0.621, 0.586, 0.554, 0.525, 0.5, 0.476, 0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [130], DatenSpalte: [1.0, 1.0, 1.0, 1.0, 0.999, 0.996, 0.988, 0.971, 0.942, 0.901, 0.853, 0.802, 0.752, 0.704, 0.661, 0.622, 0.587, 0.554, 0.526, 0.5, 0.476, 0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [140], DatenSpalte: [1.0, 1.0, 1.0, 1.0, 0.999, 0.997, 0.991, 0.975, 0.947, 0.907, 0.858, 0.806, 0.755, 0.706, 0.662, 0.623, 0.587, 0.555, 0.526, 0.5, 0.476, 0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] },
|
||||
{ SuchSpalte: [150], DatenSpalte: [1.0, 1.0, 1.0, 1.0, 0.999, 0.998, 0.992, 0.979, 0.952, 0.912, 0.863, 0.809, 0.757, 0.708, 0.663, 0.623, 0.588, 0.555, 0.526, 0.5, 0.476, 0.454, 0.435, 0.417, 0.4, 0.385, 0.37, 0.357, 0.345, 0.333, 0.323, 0.312, 0.303, 0.294, 0.286, 0.278, 0.27, 0.263, 0.256, 0.25, 0.222, 0.2, 0.182, 0.167, 0.154, 0.143, 0.133, 0.125, 0.118, 0.111, 0.105, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] }
|
||||
];
|
||||
|
||||
const dataZeile = [{ DatenZeile: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15] }];
|
||||
|
||||
|
||||
|
||||
const Ausnutzungsgrad = funktionDoppelteInterpolation(suchSpalte, datenZeile, dataZeile, dataBox);
|
||||
|
||||
return Ausnutzungsgrad;
|
||||
|
||||
}
|
||||
@@ -148,7 +148,7 @@ const HeizLast = [0, 5, 10, 25, 50, 75, 100, 125, 150];
|
||||
// jede einzeln interpolieren und dann zwischen den Tabellen interpolieren.
|
||||
// Falls wir also den Wert an Stelle Heizlast: 120, Zeitkonstante 100, Monat:
|
||||
// Januar haben wollen:
|
||||
export function funktionBilanzInnentemperatur(heizlast: number, zeitkonstane: number, monat: keyof typeof dataset): number {
|
||||
export function funktionBilanzInnentemperaturT8T10(heizlast: number, zeitkonstane: number, monat: keyof typeof dataset): number {
|
||||
const data = dataset[monat]
|
||||
|
||||
const interpolations: number[] = []
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
export function funktionDoppelteInterpolation(SuchSpalte: number, DatenZeile: number, dataZeile: any, dataBox: any): number {
|
||||
|
||||
function interpolate(x: number, x0: number, y0: number, x1: number, y1: number): number {
|
||||
return y0 + ((y1 - y0) * (x - x0)) / (x1 - x0);
|
||||
}
|
||||
|
||||
function findNearestPoints(data: any[], value: number, key: string): any[] {
|
||||
let lower = data[0];
|
||||
let upper = data[data.length - 1];
|
||||
|
||||
for (let i = 0; i < data.length - 1; i++) {
|
||||
if (data[i][key][0] <= value && data[i + 1][key][0] >= value) {
|
||||
lower = data[i];
|
||||
upper = data[i + 1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return [lower, upper];
|
||||
}
|
||||
|
||||
|
||||
const [lowerSuchSpalte, upperSuchSpalte] = findNearestPoints(dataBox, SuchSpalte, 'SuchSpalte');
|
||||
const lowerIndex = dataZeile[0].DatenZeile.findIndex((val: number) => val >= DatenZeile) - 1;
|
||||
const upperIndex = lowerIndex + 1;
|
||||
|
||||
const lowerDatenZeile = dataZeile[0].DatenZeile[lowerIndex];
|
||||
const upperDatenZeile = dataZeile[0].DatenZeile[upperIndex];
|
||||
|
||||
const lowerDatenSpalte = interpolate(DatenZeile, lowerDatenZeile, lowerSuchSpalte.DatenSpalte[lowerIndex], upperDatenZeile, lowerSuchSpalte.DatenSpalte[upperIndex]);
|
||||
const upperDatenSpalte = interpolate(DatenZeile, lowerDatenZeile, upperSuchSpalte.DatenSpalte[lowerIndex], upperDatenZeile, upperSuchSpalte.DatenSpalte[upperIndex]);
|
||||
|
||||
return interpolate(SuchSpalte, lowerSuchSpalte.SuchSpalte[0], lowerDatenSpalte, upperSuchSpalte.SuchSpalte[0], upperDatenSpalte);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
export function funktionInterneWaermequellen() {
|
||||
export function funktionInterneWaermequellenA8() {
|
||||
|
||||
// Beispielwerte Planung werden aus Eingabe geholt
|
||||
let NettoGrundflaeche = 154.2;
|
||||
@@ -0,0 +1,35 @@
|
||||
import { datasetKorrekturfaktorVerteilungT32 } from "#lib/Berechnungen/BedarfsausweisWohnen/datasetKorrekturfaktorVerteilungT32.js";
|
||||
|
||||
export function funktionKorrekturfaktorMittlereBelastungT32(verteilung: string, rohrnetztyp: string, auslegungsTemp: string, ßhd: number): number | null {
|
||||
const filteredData = datasetKorrekturfaktorVerteilungT32.filter(item =>
|
||||
item.verteilung === verteilung &&
|
||||
item.rohrnetztyp === rohrnetztyp &&
|
||||
item.auslegungsTemp === auslegungsTemp
|
||||
);
|
||||
|
||||
if (filteredData.length === 0) {
|
||||
const KorrekturfaktorMittlereBelastung = 1;
|
||||
return KorrekturfaktorMittlereBelastung;
|
||||
}
|
||||
|
||||
|
||||
const sortedData = filteredData.sort((a, b) => a.ßhd - b.ßhd);
|
||||
|
||||
for (let i = 0; i < sortedData.length - 1; i++) {
|
||||
const current = sortedData[i];
|
||||
const next = sortedData[i + 1];
|
||||
|
||||
if (ßhd >= current.ßhd && ßhd <= next.ßhd) {
|
||||
const t = (ßhd - current.ßhd) / (next.ßhd - current.ßhd);
|
||||
const KorrekturfaktorMittlereBelastung = current.fßd + t * (next.fßd - current.fßd);
|
||||
|
||||
return KorrekturfaktorMittlereBelastung;
|
||||
}
|
||||
}
|
||||
|
||||
const KorrekturfaktorMittlereBelastung = 1;
|
||||
return KorrekturfaktorMittlereBelastung;
|
||||
}
|
||||
|
||||
const result = funktionKorrekturfaktorMittlereBelastungT32("Verteilleitungen im beheizten Bereich", "IV (Strahlungs- und Luftheizung)", "35°C/28°C", 0.1);
|
||||
console.log(result);
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import { cubicSplineInterpolation } from "js-interpolate";
|
||||
|
||||
let wohneinheiten = 3;
|
||||
let WohnEinheiten = 3;
|
||||
|
||||
const datasetEinfamilienHausMittlereBelastung = {
|
||||
Januar: {
|
||||
@@ -15,7 +15,7 @@ const datasetEinfamilienHausMittlereBelastung = {
|
||||
90: [ 0.536, 0.532, 0.529, 0.522, 0.515, 0.512, 0.51, 0.51, 0.509 ],
|
||||
130: [ 0.54, 0.537, 0.533, 0.526, 0.52, 0.516, 0.515, 0.514, 0.513 ],
|
||||
},
|
||||
"März": {
|
||||
März: {
|
||||
50: [ 0.448, 0.445, 0.443, 0.437, 0.431, 0.427, 0.427, 0.426, 0.426 ],
|
||||
90: [ 0.453, 0.45, 0.447, 0.441, 0.436, 0.433, 0.431, 0.431, 0.43 ],
|
||||
130: [ 0.457, 0.454, 0.451, 0.445, 0.439, 0.435, 0.435, 0.434, 0.434 ],
|
||||
@@ -147,7 +147,7 @@ const HeizLast = [0, 5, 10, 25, 50, 75, 100, 125, 150];
|
||||
// jede einzeln interpolieren und dann zwischen den Tabellen interpolieren.
|
||||
// Falls wir also den Wert an Stelle Heizlast: 120, Zeitkonstante 100, Monat:
|
||||
// Januar haben wollen:
|
||||
export function funktionMonatlicherBelastungsgrad(heizlast: number, zeitkonstane: number, monat: keyof typeof dataset) {
|
||||
export function funktionMonatlicherBelastungsgradT9T11 (heizlast: number, zeitkonstane: number, monat: keyof typeof dataset) {
|
||||
const data = dataset[monat]
|
||||
|
||||
const interpolations: number[] = []
|
||||
@@ -0,0 +1,74 @@
|
||||
|
||||
// Interpolationsfunktion für Nennleistung des Wärmeerzeugers
|
||||
|
||||
interface DatasetNennleistung {
|
||||
flaeche: number[];
|
||||
Nennleistung: number[];
|
||||
}
|
||||
|
||||
interface DatasetNutzwaermeBedarf {
|
||||
NutzwaermeBedarf: number[];
|
||||
}
|
||||
|
||||
const datasetNennleistung: DatasetNennleistung[] = [
|
||||
{ flaeche: [50], Nennleistung: [7.5, 7.3, 7.1, 7, 6.8, 6.6, 6.4, 6.3, 6.1, 5.9, 5.7, 5.6, 5.4, 5.2, 5, 4.8] },
|
||||
{ flaeche: [100], Nennleistung: [12.1, 11.8, 11.6, 11.3, 11, 10.8, 10.5, 10.2, 9.9, 9.6, 9.3, 9, 8.7, 8.4, 8.1, 7.8] },
|
||||
{ flaeche: [150], Nennleistung: [16.1, 15.7, 15.4, 15, 14.6, 14.3, 13.9, 13.5, 13.1, 12.8, 12.4, 12, 11.6, 11.2, 10.8, 10.3] },
|
||||
{ flaeche: [200], Nennleistung: [19.7, 19.2, 18.8, 18.4, 17.9, 17.5, 17, 16.5, 16.1, 15.6, 15.1, 14.6, 14.2, 13.7, 13.1, 12.6] },
|
||||
{ flaeche: [300], Nennleistung: [26.1, 25.6, 25, 24.4, 23.8, 23.2, 22.6, 22, 21.4, 20.7, 20.1, 19.5, 18.8, 18.1, 17.5, 16.8] },
|
||||
{ flaeche: [400], Nennleistung: [32, 31.3, 30.5, 29.8, 29.1, 28.4, 27.6, 26.9, 26.1, 25.4, 24.6, 23.8, 23, 22.2, 21.4, 20.5] },
|
||||
{ flaeche: [500], Nennleistung: [37.4, 36.5, 35.7, 34.9, 34, 33.2, 32.3, 31.4, 30.5, 29.6, 28.7, 27.8, 26.9, 25.9, 25, 24] },
|
||||
{ flaeche: [600], Nennleistung: [42.4, 41.5, 40.6, 39.6, 38.7, 37.7, 36.7, 35.7, 34.7, 33.7, 32.7, 31.6, 30.5, 29.5, 28.4, 27.3] },
|
||||
{ flaeche: [700], Nennleistung: [47.3, 46.2, 45.2, 44.1, 43.1, 42, 40.9, 39.8, 38.7, 37.5, 36.4, 35.2, 34, 32.8, 31.6, 30.4] },
|
||||
{ flaeche: [800], Nennleistung: [51.9, 50.8, 49.6, 48.5, 47.3, 46.1, 44.9, 43.7, 42.4, 41.2, 39.9, 38.7, 37.4, 36, 34.7, 33.3] },
|
||||
{ flaeche: [900], Nennleistung: [56.4, 55.1, 53.9, 52.6, 51.3, 50.1, 48.7, 47.4, 46.1, 44.7, 43.4, 42, 40.6, 39.1, 37.7, 36.2] },
|
||||
{ flaeche: [1000], Nennleistung: [60.7, 59.4, 58, 56.6, 55.3, 53.9, 52.5, 51.1, 49.6, 48.2, 46.7, 45.2, 43.7, 42.1, 40.6, 39] },
|
||||
{ flaeche: [2000], Nennleistung: [98.6, 96.4, 94.2, 92, 89.8, 87.5, 85.3, 82.9, 80.6, 78.2, 75.8, 73.4, 71, 68.4, 65.9, 63.3] },
|
||||
{ flaeche: [3000], Nennleistung: [130.9, 128.1, 125.2, 122.2, 119.3, 116.3, 113.2, 110.2, 107.1, 103.9, 100.7, 97.5, 94.2, 90.9, 87.5, 84.1] },
|
||||
{ flaeche: [4000], Nennleistung: [160.2, 156.6, 153.1, 149.5, 145.9, 142.2, 138.5, 134.7, 130.9, 127.1, 123.2, 119.3, 115.3, 111.2, 107.1, 102.9] },
|
||||
{ flaeche: [5000], Nennleistung: [187.2, 183.1, 179, 174.8, 170.5, 166.2, 161.9, 157.5, 153.1, 148.6, 144, 139.4, 134.7, 130, 125.2, 120.3] }
|
||||
];
|
||||
|
||||
const datasetNutzwaermeBedarf: DatasetNutzwaermeBedarf[] = [
|
||||
{ NutzwaermeBedarf: [16, 15.5, 15, 14.5, 14, 13.5, 13, 12.5, 12, 11.5, 11, 10.5, 10, 9.5, 9, 8.5] }
|
||||
];
|
||||
|
||||
|
||||
export function funktionNennleistungWaermeerzeugerWarmwasserA14(flaeche: number, nutzwaermeBedarf: number): number {
|
||||
const findClosestDatasets = (flaeche: number) => {
|
||||
let lower = datasetNennleistung[0];
|
||||
let upper = datasetNennleistung[datasetNennleistung.length - 1];
|
||||
|
||||
for (let i = 0; i < datasetNennleistung.length - 1; i++) {
|
||||
if (datasetNennleistung[i].flaeche[0] <= flaeche && datasetNennleistung[i + 1].flaeche[0] >= flaeche) {
|
||||
lower = datasetNennleistung[i];
|
||||
upper = datasetNennleistung[i + 1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return { lower, upper };
|
||||
};
|
||||
|
||||
const interpolate = (x: number, x0: number, y0: number, x1: number, y1: number) => {
|
||||
return y0 + ((y1 - y0) * (x - x0)) / (x1 - x0);
|
||||
};
|
||||
|
||||
const { lower, upper } = findClosestDatasets(flaeche);
|
||||
const indexLower = datasetNutzwaermeBedarf[0].NutzwaermeBedarf.findIndex((value) => value <= nutzwaermeBedarf);
|
||||
const indexUpper = indexLower > 0 ? indexLower - 1 : indexLower;
|
||||
|
||||
const nennleistungLowerLower = lower.Nennleistung[indexLower];
|
||||
const nennleistungLowerUpper = lower.Nennleistung[indexUpper];
|
||||
const nennleistungUpperLower = upper.Nennleistung[indexLower];
|
||||
const nennleistungUpperUpper = upper.Nennleistung[indexUpper];
|
||||
|
||||
const interpolatedLower = interpolate(nutzwaermeBedarf, datasetNutzwaermeBedarf[0].NutzwaermeBedarf[indexUpper], nennleistungLowerUpper, datasetNutzwaermeBedarf[0].NutzwaermeBedarf[indexLower], nennleistungLowerLower);
|
||||
const interpolatedUpper = interpolate(nutzwaermeBedarf, datasetNutzwaermeBedarf[0].NutzwaermeBedarf[indexUpper], nennleistungUpperUpper, datasetNutzwaermeBedarf[0].NutzwaermeBedarf[indexLower], nennleistungUpperLower);
|
||||
|
||||
const NennleistungWaermeerzeugerWarmwasser = interpolate(flaeche, lower.flaeche[0], interpolatedLower, upper.flaeche[0], interpolatedUpper);
|
||||
|
||||
return NennleistungWaermeerzeugerWarmwasser;
|
||||
}
|
||||
|
||||
const result = funktionNennleistungWaermeerzeugerWarmwasserA14(154.2, 8.79);
|
||||
console.log(result);
|
||||
@@ -580,7 +580,7 @@ const dataset: DatasetEntry[] = [
|
||||
}
|
||||
];
|
||||
|
||||
export function funktionSolareBestrahlungsEnergie(neigung: number, orientierung: string): { [key: string]: number } | undefined {
|
||||
export function funktionSolareBestrahlungsEnergieT17(neigung: number, orientierung: string): { [key: string]: number } | undefined {
|
||||
const entry = dataset.find(item => item.neigung === neigung && item.orientierung.toLowerCase() === orientierung.toLowerCase());
|
||||
if (!entry) {
|
||||
return undefined;
|
||||
@@ -593,6 +593,6 @@ export function funktionSolareBestrahlungsEnergie(neigung: number, orientierung:
|
||||
|
||||
|
||||
// Beispielaufruf
|
||||
// const MonatsWerte = funktionSolareBestrahlungsEnergie(90, "West");
|
||||
// const MonatsWerte = funktionSolareBestrahlungsEnergieT17(90, "West");
|
||||
// console.log(MonatsWerte); // should return the monthly values for neigung=30 and orientierung="Süd"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { funktionMonatlicherBelastungsgrad } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgrad.js";
|
||||
import { funktionBilanzInnentemperatur } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperatur.js";
|
||||
import { funktionMonatlicherBelastungsgradT9T11 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionMonatlicherBelastungsgradT9T11.js";
|
||||
import { funktionBilanzInnentemperaturT8T10 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionBilanzInnentemperaturT8T10.js";
|
||||
import { A5BerechnungWaermeTransferMaxStroemeBauteile } from "#lib/Berechnungen/BedarfsausweisWohnen/A5BerechnungWaermeTransferMaxStroemeBauteile.js";
|
||||
import { A6BerechnungWaermeTransferMaxStroemeLueftungGesamt } from "#lib/Berechnungen/BedarfsausweisWohnen/A6BerechnungWaermeTransferMaxStroemeLueftungGesamt.js";
|
||||
|
||||
export function funktionWaermesenken() {
|
||||
export function funktionWaermesenkenA8A12() {
|
||||
|
||||
const resultBauteile = A5BerechnungWaermeTransferMaxStroemeBauteile();
|
||||
const minimaleAussentemperatur = resultBauteile.minimaleAussentemperatur;
|
||||
@@ -61,31 +61,31 @@ export function funktionWaermesenken() {
|
||||
};
|
||||
|
||||
|
||||
belastungsgrade.Januar = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Januar");
|
||||
belastungsgrade.Februar = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Februar");
|
||||
belastungsgrade.März = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "März");
|
||||
belastungsgrade.April = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "April");
|
||||
belastungsgrade.Mai = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Mai");
|
||||
belastungsgrade.Juni = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juni");
|
||||
belastungsgrade.Juli = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juli");
|
||||
belastungsgrade.August = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "August");
|
||||
belastungsgrade.September = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "September");
|
||||
belastungsgrade.Oktober = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Oktober");
|
||||
belastungsgrade.November = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "November");
|
||||
belastungsgrade.Dezember = funktionMonatlicherBelastungsgrad(FlaechgenbezogeneHeizlast, ZeitKonstante, "Dezember");
|
||||
belastungsgrade.Januar = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Januar");
|
||||
belastungsgrade.Februar = funktionMonatlicherBelastungsgradT9T11(FlaechgenbezogeneHeizlast, ZeitKonstante, "Februar");
|
||||
belastungsgrade.März = 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 = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Januar");
|
||||
bilanzInnenTemperaturen.Februar = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Februar");
|
||||
bilanzInnenTemperaturen.März = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "März");
|
||||
bilanzInnenTemperaturen.April = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "April");
|
||||
bilanzInnenTemperaturen.Mai = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Mai");
|
||||
bilanzInnenTemperaturen.Juni = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juni");
|
||||
bilanzInnenTemperaturen.Juli = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juli");
|
||||
bilanzInnenTemperaturen.August = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "August");
|
||||
bilanzInnenTemperaturen.September = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "September");
|
||||
bilanzInnenTemperaturen.Oktober = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Oktober");
|
||||
bilanzInnenTemperaturen.November = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "November");
|
||||
bilanzInnenTemperaturen.Dezember = funktionBilanzInnentemperatur(FlaechgenbezogeneHeizlast, ZeitKonstante, "Dezember");
|
||||
bilanzInnenTemperaturen.Januar = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Januar");
|
||||
bilanzInnenTemperaturen.Februar = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Februar");
|
||||
bilanzInnenTemperaturen.März = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "März");
|
||||
bilanzInnenTemperaturen.April = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "April");
|
||||
bilanzInnenTemperaturen.Mai = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Mai");
|
||||
bilanzInnenTemperaturen.Juni = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juni");
|
||||
bilanzInnenTemperaturen.Juli = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Juli");
|
||||
bilanzInnenTemperaturen.August = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "August");
|
||||
bilanzInnenTemperaturen.September = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "September");
|
||||
bilanzInnenTemperaturen.Oktober = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Oktober");
|
||||
bilanzInnenTemperaturen.November = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "November");
|
||||
bilanzInnenTemperaturen.Dezember = funktionBilanzInnentemperaturT8T10(FlaechgenbezogeneHeizlast, ZeitKonstante, "Dezember");
|
||||
|
||||
waermeSenken.Januar = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Januar - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Januar;
|
||||
waermeSenken.Februar = maximalerWaermestromGesamt * (bilanzInnenTemperaturen.Februar - minimaleAussentemperatur) / (innenTemperatur - minimaleAussentemperatur) * belastungsgrade.Februar;
|
||||
Reference in New Issue
Block a user