Zum Hauptinhalt springen

Treibhausgas GFM

Das Treibhausgas Gap Filling Module berechnet Treibhausgasemissionen aus beheiztem Gewächshausanbau von Gemüse. Gewächshausproduktion kann die Klimaauswirkung im Vergleich zu Freilandanbau um das bis zu 10-fache erhöhen, weshalb dieses Modul für genaue Umweltbewertungen von Frischprodukten entscheidend ist.

Kurzreferenz

EigenschaftBeschreibung
Läuft aufModeledActivityNode mit FoodProductFlowNode-Elternknoten, der gematchte Gemüsebegriffe enthält
AbhängigkeitenOriginGapFillingWorker, AttachFoodTagsGapFillingWorker, ConservationGapFillingWorker
SchlüsseleingabeProduktionsdatum, Herkunftsland, gematchter Gemüsetyp
AusgabeHeizungsemissionen, Infrastrukturemissionen, Stroemissionen
AuslöserProdukt gematcht mit einem der 7 Gewächshausgemüse

Wann es läuft

Das Modul wird ausgelöst, wenn:

  1. Ein Produkt einem abgedeckten Gemüsebegriff zugeordnet ist
  2. Das Produkt ein gültiges Herkunftsland mit Meteonorm-Klimadaten hat
  3. Das Produkt KEIN Ausschluss-Tag hat (gefroren, konserviert, getrocknet)
  4. Heizung erforderlich ist (basierend auf Klimaberechnungen)

Schlüsselausgabe

Das Modul fügt drei Arten von Emissionen zum Berechnungsgraphen hinzu:

  • Heizung: Basierend auf Landesklima, Gemüseanforderungen und Produktionsdatum
  • Infrastruktur: Glas- und Kunststoff-Gewächshausmaterialien
  • Strom: Gemüsespezifischer Energieverbrauch

Wissenschaftliche Methodik

Das Gewächshausmodell berechnet Emissionen mit der Formel:

Gesamtemissionen = Heizung + Infrastruktur + Strom

Jede Komponente wird pro Kilogramm produziertem Gemüse berechnet.

Heizbedarfsmodell

Das Heizbedarfsmodell basiert auf Stössel et al. (2012) und verwendet einen Wärmebilanzansatz:

Q_heating = (Q_trans + Q_air) * (T_in - T_out) - Q_solar * G

Wobei:

  • Q_trans: Wärmeübertragung durch Gewächshaushülle
  • Q_air: Wärmeverlust durch Luftaustausch
  • T_in: Erforderliche Innentemperatur für das Gemüse (Kelvin)
  • T_out: Monatliche Durchschnitts-Außentemperatur (von Meteonorm)
  • Q_solar: Solare Wärmezugewinn-Faktor
  • G: Monatliche durchschnittliche Sonneneinstrahlung (von Meteonorm)

Wärmeübertragungsfaktor (Q_trans)

U_VALUE = 3.4  # W/m2/K - Wärmedämmwert
CLADDING_AREA = 54_978.2 # m2 - Gewächshaushüllenfläche

Q_TRANS_FACTOR = U_VALUE * CLADDING_AREA # = 186,925.88 W/K

Der U-Wert von 3,4 W/m2/K repräsentiert einen gewichteten Durchschnitt für konventionelle Gewächshäuser gemäß Scharfy et al. (2017).

Luftaustauschfaktor (Q_air)

AIR_EXCHANGE_NUMBER = 0.24  # Luftwechsel pro Stunde
BUILDING_VOLUME = 259_506.0 # m3
SPEC_VOLUMETRIC_ENERGY_CONSTANT_FOR_AIR = 0.32 # Wh/m3/K

Q_AIR_FACTOR = AIR_EXCHANGE_NUMBER * BUILDING_VOLUME * SPEC_VOLUMETRIC_ENERGY_CONSTANT_FOR_AIR
# = 19,924.46 W/K

Solarer Wärmezugewinn-Faktor (Q_solar)

Q_SOLAR_FACTOR = 0.609 * 46_800.0 * 0.99 * 0.9 * 0.7
# = 17,849.82 W/(W/m2)

Komponenten:

  • 0,609: Solartransmissionsgrad der Gewächshausabdeckung
  • 46.800 m2: Der Sonne ausgesetzte Bodenfläche
  • 0,99: Anteil der Sonnenstrahlung, der die Pflanzen erreicht
  • 0,9: Nutzungsfaktor
  • 0,7: Umwandlungseffizienz

Heizungsemissionsberechnung

Heizung [kg CO2eq/kg] = Heizbedarf [MJ/kg] * Heizmix [kg CO2eq/MJ]

Der Heizmix hängt vom Land ab und repräsentiert den durchschnittlichen Mix aus Erdgas, Heizöl und erneuerbaren Energien, der für Gewächshausheizung verwendet wird.

Infrastrukturberechnung

Infrastrukturemissionen berücksichtigen die Gewächshaus-Baumaterialien über ihre 30-jährige Lebensdauer:

FRACTION_OF_GLASS_IN_BUILDING_MATERIAL = 0.604  # 60,4%
FRACTION_OF_PLASTIC_IN_BUILDING_MATERIAL = 0.396 # 39,6%
AREA_OF_THE_WINDOWS_EXPOSED_TO_THE_SUN = 46_800 # m2

Der Infrastrukturmix (60,4% Glas, 39,6% Folientunnel) basiert auf Schweizer Gewächshausstatistiken von Scharfy et al. (2017).

Berechnung:

# m2*Jahr Gewächshaus benötigt pro kg Gemüse
building_material_per_kg = greenhouse_area / total_yield_per_year * production_amount

# Aufteilung zwischen Glas und Kunststoff
glass_material = building_material_per_kg * 0.604
plastic_material = building_material_per_kg * 0.396

Stromberechnung

Der Stromverbrauch ist gemüsespezifisch und wird mit dem Strommix des Landes multipliziert:

Strom [kg CO2eq/kg] = Energieeinsatz [kWh/kg] * Strommix [kg CO2eq/kWh]

Der Strommix verwendet Ecoinvents "market for electricity, low voltage" für jedes Land.


Implementierungsdetails

Abgedeckte Produkte

Das Modul läuft, wenn ein Produkt einem dieser FoodEx2-Begriffe zugeordnet ist:

FoodEx2-CodeGemüseModelltypBeschreibung
B1458AubergineeggplantAubergine
A00JDAubergineeggplantAuberginen
A00JMGurkecucumberGurken
A00JRGurkecucumberZucchini
A00KYSalatlettuceKopfsalat
A00MJSalatlettuceSpinat
B4946SalatlettuceBatavia-Salat
A00KXSalatlettuceSalate generisch
A1563SalatlettuceEisbergsalat
A0DLBSalatlettuceSalate und ähnliche
A1612SalatlettuceEichblattsalat
A00LBSalatlettuceLollo Rosso
A00JAPaprikabell pepperGemüsepaprika
A00QVRadieschenradishRadieschen
A00LMRadieschenradishRauke und ähnliche
B2474RadieschenradishRucola
A0DMXTomatetomatoTomaten
A00HYRispentomatevine tomatoCherrytomaten

Gemüseparameter

Jeder Gemüsetyp hat spezifische Anbauparameter:

GemüseWachstumstageInnentemp. (K)Ertrag (kg/m2/Monat)Strom (kWh/kg)
Aubergine50291,15 (18°C)3,150,5492
Gurke32291,15 (18°C)4,360,1982
Salat60281,15 (8°C)1,740,4636
Paprika41293,15 (20°C)1,970,5746
Radieschen51279,15 (6°C)1,360,33798
Tomate127291,15 (18°C)4,660,2207
Rispentomate127291,15 (18°C)4,720,2099

Datenquellen: ProfiCost-Tool (Chollet et al., 2012), technisches Handbuch des Schweizer Gemüseproduzentenverbands.

Abgedeckte Länder

Das Modul hat Meteonorm-Klimadaten für 28 europäische Länder:

CodeLandCodeLand
ATÖsterreichITItalien
BEBelgienLTLitauen
BGBulgarienLULuxemburg
CHSchweizLVLettland
CZTschechienNLNiederlande
DEDeutschlandPLPolen
DKDänemarkPTPortugal
EEEstlandRORumänien
ESSpanienSESchweden
FIFinnlandSISlowenien
FRFrankreichSKSlowakei
GBGroßbritannienTRTürkei
GRGriechenlandHRKroatien
HUUngarnIEIrland

Fehlende EU-Länder: Zypern, Malta

Ausschlussregeln

Das Gewächshausmodell läuft NICHT, wenn das Produkt eines dieser Konservierungs-Tags hat:

Term XIDBeschreibung
J0001Generisch konserviert
J0136Gefroren
J0111Konserviert (Dose)
J0116Getrocknet

Diese Produkte werden ausgeschlossen, weil konservierte Produkte zum Zeitpunkt des Verbrauchs keine Gewächshausproduktion erfordern - sie wurden wahrscheinlich während der regulären Wachstumssaison produziert.

Hinweis: J0003 (Nicht konserviert) und J0131 (Gekühlt) schließen Produkte NICHT vom Gewächshausmodell aus.

Behandlung des Produktionsdatums

Das Produktionsdatum bestimmt, welche Monatsklimdaten für Heizungsberechnungen verwendet werden:

  1. Wenn activity_date auf dem Produkt oder einem Elternknoten angegeben ist, wird es verwendet
  2. Das Erntedatum wird als Produktionsdatum - 3 Tage berechnet
  3. Wachstumstage werden vom Erntedatum basierend auf dem Gemüsetyp zurückgerechnet
  4. Monatliche Heizungsanforderungen werden für jeden Monat in der Wachstumsperiode berechnet

Beispiel: Tomaten mit Produktionsdatum 15. März:

  • Erntedatum: 12. März
  • Wachstumsperiode: 127 Tage (6. Oktober bis 12. März)
  • Monate mit Wachstumstagen: Oktober (teilweise), November, Dezember, Januar, Februar, März (teilweise)

Vollständige Codereferenz

Heizungsberechnung

Die Methode compute_required_heating berechnet den Heizbedarf in MJ pro kg Gemüse:

def compute_required_heating(
self,
flow_country_code: str,
flow_processing_date: datetime,
vegetable_name: str,
) -> float:
"""Notwendige Heizmenge berechnen."""
days_between_harvest_and_production_date = 3

harvest_date = flow_processing_date - timedelta(days=days_between_harvest_and_production_date)

# Wachstumstage pro Monat basierend auf Erntedatum und Gemüse-Wachstumsdauer ermitteln
monthly_growing_days = np.array(days_in_each_month(NUMBER_OF_GROWING_DAYS[vegetable_name], harvest_date))

# Länderspezifische Klimadaten laden
monthly_avg_outside_temp = np.array(
self.gfm_factory.aggregated_meteonorm_data[flow_country_code]["average_temperature"]
)
monthly_avg_solar_radiation = np.array(
self.gfm_factory.aggregated_meteonorm_data[flow_country_code]["average_solar_radiation"]
)

# Wärmebilanz berechnen
monthly_temp_difference = REQUIRED_INSIDE_TEMPERATURE[vegetable_name] - monthly_avg_outside_temp
monthly_required_heating_power_watts = (
Q_TRANS_FACTOR + Q_AIR_FACTOR
) * monthly_temp_difference - Q_SOLAR_FACTOR * monthly_avg_solar_radiation

# Keine negative Heizung (keine Kühlung modelliert)
monthly_required_heating_power_watts = np.array(
[val if val >= 0.0 else 0.0 for val in monthly_required_heating_power_watts]
)

# Leistung in Energie umrechnen
monthly_required_heating_energy_wh = monthly_required_heating_power_watts * monthly_growing_days * 24
monthly_required_heating_energy_kwh = monthly_required_heating_energy_wh / 1000

# Ertrag während der Wachstumsperiode berechnen
average_yield_kg_per_day = (
AVG_YIELD_PER_M2_PER_MONTH[vegetable_name] * AREA_OF_THE_WINDOWS_EXPOSED_TO_THE_SUN * 12 / 365
)
yield_in_growing_days_kg = average_yield_kg_per_day * sum(monthly_growing_days)

# In MJ pro kg umrechnen
mj_in_kwh = 3.6
monthly_required_heating_energy_mj = monthly_required_heating_energy_kwh * mj_in_kwh

required_heating_energy_mj_for_kg_of_vegetable = (
np.sum(monthly_required_heating_energy_mj) / yield_in_growing_days_kg
)

return required_heating_energy_mj_for_kg_of_vegetable

Infrastruktur-Bilanzierung

async def account_for_infrastructure(
self, calc_graph: CalcGraph, greenhouse_activity: FoodProcessingActivityNode, vegetable_name: str
) -> None:
"""Infrastruktur des Gewächshauses bilanzieren."""
size_of_greenhouse_in_m2 = AREA_OF_THE_WINDOWS_EXPOSED_TO_THE_SUN
average_yield_in_kg_per_m2_and_month = AVG_YIELD_PER_M2_PER_MONTH[vegetable_name]
total_yield_per_year = average_yield_in_kg_per_m2_and_month * 12 * size_of_greenhouse_in_m2

# m2*Jahr Baumaterial pro kg Ernte berechnen
area_and_time_of_greenhouse_building_material = (
size_of_greenhouse_in_m2 / total_yield_per_year * self.node.production_amount.value
)

# Aufteilen zwischen Glas (60,4%) und Kunststoff (39,6%)
glass_building_material = (
area_and_time_of_greenhouse_building_material * FRACTION_OF_GLASS_IN_BUILDING_MATERIAL
)
plastic_building_material = (
area_and_time_of_greenhouse_building_material * FRACTION_OF_PLASTIC_IN_BUILDING_MATERIAL
)

# Glas- und Kunststoff-Flussknoten zum Graphen hinzufügen
# Verbunden mit Ecoinvent-Prozessen für Gewächshaus-Infrastruktur

Strom-Bilanzierung

async def account_for_electrical_energy(
self,
calc_graph: CalcGraph,
greenhouse_activity: FoodProcessingActivityNode,
country_code: str,
vegetable_name: str,
) -> None:
"""Stromverbrauch des Gewächshauses bilanzieren."""
energy_needed_per_kg = REQUIRED_ELECTRICITY_KWH_PER_KG[vegetable_name]

# Stromverbrauchs-Fluss erstellen
electricity_consumption_flow = FlowNode(
uid=UuidStr(uuid4()),
amount=QuantityProp(
value=energy_needed_per_kg * self.node.production_amount.value,
unit_term_uid=self.gfm_factory.kWh_term.uid,
),
)

# Mit länderspezifischem Strommarkt aus Cache verbinden
electrical_energy_node = self.gfm_factory.electricity_markets_cache.get(country_code)

Datenquellen

Meteonorm-Klimadaten

Klimadaten stammen aus der Meteonorm-Software (Daten von 2016):

  • Temperatur: Monatliche Durchschnitts-Außentemperatur in Kelvin
  • Sonneneinstrahlung: Monatliche durchschnittliche globale Sonneneinstrahlung in W/m2

Die Daten werden im GFM-Cache gespeichert und beim Servicestart geladen:

  • meteonorm_average_temperature_{country_code}: Array von 12 Monatswerten
  • meteonorm_average_solar_radiation_{country_code}: Array von 12 Monatswerten

Heizmixe

Länderspezifische Heizmixe für Gewächshausheizung:

LandBrightway XIDZusammensetzung
CH (Schweiz)EDB_4220cbaabca343c09b19415d5ab4079f_copy141,3% Erdgas, 35,2% Heizöl, 23,5% Erneuerbare
DE (Deutschland)EDB_4220cbaabca343c09b19415d5ab4079f_copy228% Kohle, 21% Erdgas, 15% Heizöl, 20% Erneuerbare, 16% Sonstige
NL (Niederlande)EDB_4220cbaabca343c09b19415d5ab4079f86,2% Erdgas, 0,1% Heizöl, 13,7% Erneuerbare
EU sonstigeEDB_4220cbaabca343c09b19415d5ab4079f_copy354% Erdgas, 46% Heizöl

Infrastrukturmaterialien

Ecoinvent-Prozesse für Gewächshaus-Baumaterialien:

MaterialEcoinvent IDEinheit
Glasgewächshausecoinvent 3.6 cutoff_0ce659c3cfd443a38761058ee62e3f10m2*Jahr
Folientunnelecoinvent 3.6 cutoff_fddfe51c6959f41ac044089c3a892af7m2*Jahr

Berechnungsbeispiel

Szenario: 1 kg Tomaten, produziert in Schweden am 15. März

Schritt 1: Wachstumsperiode bestimmen

  • Produktionsdatum: 15. März
  • Erntedatum: 12. März (3 Tage vor Produktion)
  • Wachstumsdauer: 127 Tage
  • Startdatum: 5. November (Vorjahr)

Schritt 2: Monatliche Wachstumstage berechnen

MonatTage
November25
Dezember31
Januar31
Februar28
März12
Gesamt127

Schritt 3: Heizbedarf berechnen

Mit schwedischen Klimadaten und Tomatenanforderungen (18°C Innentemperatur):

  • Monatliche Temperaturdifferenzen berechnet
  • Sonneneinstrahlungs-Offset angewendet
  • Negative Werte auf null begrenzt

Ergebnis: ~32,3 MJ/kg Heizbedarf

Schritt 4: Infrastruktur berechnen

Gesamtertrag/Jahr = 4,66 kg/m2/Monat * 12 * 46.800 m2 = 2.616.576 kg/Jahr
Baumaterial pro kg = 46.800 / 2.616.576 = 0,0179 m2*Jahr/kg

Glas: 0,0179 * 0,604 = 0,0108 m2*Jahr
Kunststoff: 0,0179 * 0,396 = 0,0071 m2*Jahr

Schritt 5: Strom berechnen

Strom = 0,2207 kWh/kg * Schwedischer Strommix-Emissionen

Endausgabe

Das Modul fügt drei Flussknoten zum Berechnungsgraphen hinzu:

  1. Heizungsfluss (32,3 MJ) verbunden mit schwedischem Heizmix-Prozess
  2. Glas-Infrastrukturfluss (0,0108 m2*Jahr) verbunden mit Ecoinvent-Glasprozess
  3. Kunststoff-Infrastrukturfluss (0,0071 m2*Jahr) verbunden mit Ecoinvent-Kunststoffprozess
  4. Stromfluss (0,2207 kWh) verbunden mit schwedischem Strommarkt

Bekannte Einschränkungen

Geografische Abdeckung

  • Nur 28 europäische Länder haben Meteonorm-Daten
  • Keine Abdeckung für USA, Kanada oder andere große Erzeugerregionen
  • Keine subnationale regionale Differenzierung (wichtig für große Länder)

Pflanzenabdeckung

  • Nur 7 Gemüsetypen sind modelliert (Tomate, Gurke, Salat, Paprika, Aubergine, Radieschen, Rispentomate)
  • Kräuter, Chilis, Erdbeeren und andere Gewächshauskulturen sind nicht abgedeckt
  • Einige Kulturen wie Feldsalat haben verfügbare Daten, sind aber nicht implementiert

Modellannahmen

  • Keine Heizung erforderlich = kein Gewächshaus angenommen (kann Emissionen für unbeheizte Gewächshäuser unterschätzen)
  • Gleicher Infrastrukturmix für alle Länder verwendet (basierend auf Schweizer Daten)
  • Bio-Produktion nicht differenziert (minimaler Auswirkungsunterschied festgestellt)
  • Keine länderspezifischen Gewächshaus-Anbausaisons durchgesetzt

Datenalter

  • Meteonorm-Klimadaten sind von 2016
  • Heizmixe spiegeln möglicherweise nicht die aktuelle Energiewende wider

Referenzen

  1. Stössel, F., Juraske, R., Pfister, S., & Hellweg, S. (2012). Life cycle inventory and carbon and water footprint of fruits and vegetables: application to a Swiss retailer. The International Journal of Life Cycle Assessment, 17(9), 1191-1202.

  2. Eymann, L., et al. (2014). Gewächshausmodell v1.0. ZHAW-Bericht für Eaternity.

  3. Scharfy, D., et al. (2017). OFP Report - New Data ZHAW v1.3. Organic Food Print Projektbericht.

  4. Chollet, D., et al. (2012). ProfiCost-Tool. Schweizer Gemüseproduzentenverband.

  5. Meteonorm Software. https://meteonorm.com/