export function A5BerechnungWaermeTransferMaxStroemeBauteile() {

    // Definition Variablen (Beispielwerte Planung)
    let ObjektAdresse = "";
    let ObjektBruttoVolumen = 0;
    let ObjektNettoVolumenAlternativ = 0;
    let WohnEinheiten = 0;
    let NettoGrundflaeche = 0;
    let GeschossHoehe = 0;
    
    // Definition Variablen (Konstanten)
    let minimaleAussentemperatur = 0;
    let innenTemperatur = 0;
    let DeckenStaerke = 0;
    let WaermeBrueckenZuschlag = 0;

    // Definition Variablen (Berechnung)
    let FaktorNettoVolumen = 0;
    let ObjektNettoVolumen = 0;
    let maximaleTemperaturDifferenz = 0;
    let LichteRaumHoehe = 0;

    let WaermeTransferKoeffizientWaeremebruecken = 0;
    let maximalerWaermestromWaermebruecken = 0;
    let maximalerWaermestromBauteile = 0;

    let HuellFlaechenVolumenVerhaeltnis = 0;


     // Beispielwerte Planung werden aus Eingabe geholt
     ObjektAdresse = "EFH Normbeispiel";
     ObjektBruttoVolumen = 525.6;
     WohnEinheiten = 1;
     NettoGrundflaeche = 154.2;
     GeschossHoehe = 2.83;
     DeckenStaerke = 0.24;

     const PlanungswerteBauteil = [
        {
            Art: "Fenster",
            Flaeche: 18.91,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "West"
        },
        {
            Art: "Fenster",
            Flaeche: 19.62,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Süd"
        },
        {
            Art: "Fenster",
            Flaeche: 2.97,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Nord"
        },
        {
            Art: "Fenster",
            Flaeche: 4.3,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Ost"
        },
        {
            Art: "Außenwand",
            Flaeche: 32.27,
            WaermeDurchgangsKoeffizient: 0.2,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "West"
        },
        {
            Art: "Außenwand",
            Flaeche: 40.97,
            WaermeDurchgangsKoeffizient: 0.2,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Süd"
        },
        {
            Art: "Außenwand",
            Flaeche: 57.63,
            WaermeDurchgangsKoeffizient: 0.2,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Nord"
        },
        {
            Art: "Außenwand",
            Flaeche: 44.52,
            WaermeDurchgangsKoeffizient: 0.2,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Ost"
        },
        {
            Art: "Haustür",
            Flaeche: 2.35,
            WaermeDurchgangsKoeffizient: 1.3,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "West"
        },
        {
            Art: "Flachdach",
            Flaeche: 89.09,
            WaermeDurchgangsKoeffizient: 0.13,
            Neigung: 0,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Horizontal"
        },
        {
            Art: "Bodenplatte",
            Flaeche: 89.09,
            WaermeDurchgangsKoeffizient: 0.21,
            Neigung: 0,
            GesamtEnergieDurchlassGrad: 0,
            RahmenAnteil: 0,
            StrahlungsEinfluss: 0,
            Verschattung: 0,
            TemperaturKorrekturFaktor: 0.8,
            Orientierung: "Horizontal"
        }
    ];

 
     // Konstanten werden aus Eingabe geholt
     minimaleAussentemperatur = -12;
     innenTemperatur = 20;
     WaermeBrueckenZuschlag = 0.03;
 
     // Berechnung

     maximaleTemperaturDifferenz = innenTemperatur - minimaleAussentemperatur;
     LichteRaumHoehe = GeschossHoehe - DeckenStaerke;
     ObjektNettoVolumen = NettoGrundflaeche * LichteRaumHoehe;
 
     if (WohnEinheiten < 3) {FaktorNettoVolumen = 0.76;} else {FaktorNettoVolumen = 0.8;}
     ObjektNettoVolumenAlternativ = ObjektBruttoVolumen * FaktorNettoVolumen;

    const ErgebnisseBauteile = PlanungswerteBauteil.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 = PlanungswerteBauteil.reduce((sum, bauteil) => sum + bauteil.Flaeche, 0);

     HuellFlaechenVolumenVerhaeltnis = GesamtHuellFlaeche / ObjektNettoVolumenAlternativ;
     
     WaermeTransferKoeffizientWaeremebruecken = GesamtHuellFlaeche * WaermeBrueckenZuschlag;
     maximalerWaermestromWaermebruecken = WaermeTransferKoeffizientWaeremebruecken * maximaleTemperaturDifferenz;

    const WaermeTransferKoeffizientBauteile = 
    (ErgebnisseBauteile.reduce((sum, bauteil) => sum + bauteil.WaermeTransferKoeffizientKorrektur, 0)) 
    + WaermeTransferKoeffizientWaeremebruecken;

     maximalerWaermestromBauteile = WaermeTransferKoeffizientBauteile * maximaleTemperaturDifferenz;

     return {

        ObjektAdresse,
        ObjektBruttoVolumen,
        NettoGrundflaeche,
        maximaleTemperaturDifferenz,
        innenTemperatur,
        minimaleAussentemperatur,
        LichteRaumHoehe,
        ObjektNettoVolumen,
        FaktorNettoVolumen,
        ObjektNettoVolumenAlternativ,
        GesamtHuellFlaeche,
        ErgebnisseBauteile,
        WaermeBrueckenZuschlag,
        WaermeTransferKoeffizientWaeremebruecken,
        maximalerWaermestromWaermebruecken,
        WaermeTransferKoeffizientBauteile,
        maximalerWaermestromBauteile,
        HuellFlaechenVolumenVerhaeltnis,
	}
}