Aller au contenu principal

GFM Serre

Le Gap Filling Module Serre calcule les emissions de gaz a effet de serre de la culture de legumes sous serre chauffee. La production sous serre peut augmenter l'incidence climatique jusqu'a 10 fois par rapport aux equivalents cultives en plein champ, rendant ce module essentiel pour des evaluations environnementales precises des produits frais.

Reference rapide

ProprieteDescription
S'execute surModeledActivityNode avec parent FoodProductFlowNode contenant des termes de legumes correspondants
DependancesOriginGapFillingWorker, AttachFoodTagsGapFillingWorker, ConservationGapFillingWorker
Entree cleDate de production, pays d'origine, type de legume correspondant
SortieEmissions de chauffage, emissions d'infrastructure, emissions d'electricite
DeclencheurProduit correspondant a l'un des 7 legumes de serre

Quand il s'execute

Le module se declenche lorsque :

  1. Un produit correspond a un terme de legume couvert
  2. Le produit a un pays d'origine valide avec donnees climatiques Meteonorm
  3. Le produit N'a PAS d'etiquette d'exclusion (congele, en conserve, seche)
  4. Le chauffage est necessaire (base sur les calculs climatiques)

Sortie cle

Le module ajoute trois types d'emissions au graphe de calcul :

  • Chauffage : Base sur le climat du pays, les exigences du legume et la date de production
  • Infrastructure : Materiaux de serre en verre et plastique
  • Electricite : Consommation d'energie specifique au legume

Methodologie scientifique

Le modele de serre calcule les emissions selon la formule :

Emissions totales = Chauffage + Infrastructure + Electricite

Chaque composant est calcule par kilogramme de legume produit.

Modele de demande de chauffage

Le modele de demande de chauffage est base sur Stössel et al. (2012) et utilise une approche de bilan thermique :

Q_chauffage = (Q_trans + Q_air) * (T_int - T_ext) - Q_solaire * G

Ou :

  • Q_trans : Transmission de chaleur a travers l'enveloppe de la serre
  • Q_air : Perte de chaleur par echange d'air
  • T_int : Temperature interieure requise pour le legume (Kelvin)
  • T_ext : Temperature exterieure mensuelle moyenne (depuis Meteonorm)
  • Q_solaire : Facteur de gain de chaleur solaire
  • G : Rayonnement solaire mensuel moyen (depuis Meteonorm)

Facteur de transmission thermique (Q_trans)

VALEUR_U = 3.4  # W/m2/K - valeur d'isolation thermique
SURFACE_ENVELOPPE = 54_978.2 # m2 - surface d'enveloppe de la serre

FACTEUR_Q_TRANS = VALEUR_U * SURFACE_ENVELOPPE # = 186 925,88 W/K

La valeur U de 3,4 W/m2/K represente une moyenne ponderee pour les serres conventionnelles selon Scharfy et al. (2017).

Facteur d'echange d'air (Q_air)

TAUX_RENOUVELLEMENT_AIR = 0.24  # changements d'air par heure
VOLUME_BATIMENT = 259_506.0 # m3
CONSTANTE_ENERGIE_VOLUMETRIQUE_AIR = 0.32 # Wh/m3/K

FACTEUR_Q_AIR = TAUX_RENOUVELLEMENT_AIR * VOLUME_BATIMENT * CONSTANTE_ENERGIE_VOLUMETRIQUE_AIR
# = 19 924,46 W/K

Facteur de gain de chaleur solaire (Q_solaire)

FACTEUR_Q_SOLAIRE = 0.609 * 46_800.0 * 0.99 * 0.9 * 0.7
# = 17 849,82 W/(W/m2)

Composants :

  • 0,609 : Transmittance solaire de la couverture de serre
  • 46 800 m2 : Surface au sol exposee au soleil
  • 0,99 : Fraction du rayonnement solaire atteignant les plantes
  • 0,9 : Facteur d'utilisation
  • 0,7 : Efficacite de conversion

Calcul des emissions de chauffage

Chauffage [kg CO2eq/kg] = Demande de chauffage [MJ/kg] * Mix de chauffage [kg CO2eq/MJ]

Le mix de chauffage depend du pays et represente le melange moyen de gaz naturel, fioul de chauffage et energies renouvelables utilise pour le chauffage des serres.

Calcul de l'infrastructure

Les emissions d'infrastructure prennent en compte les materiaux de construction de la serre sur leur duree de vie de 30 ans :

FRACTION_VERRE_MATERIAUX = 0.604  # 60,4%
FRACTION_PLASTIQUE_MATERIAUX = 0.396 # 39,6%
SURFACE_FENETRES_EXPOSEES_SOLEIL = 46_800 # m2

Le mix d'infrastructure (60,4% verre, 39,6% tunnel plastique) est base sur les statistiques des serres suisses de Scharfy et al. (2017).

Calcul :

# m2*annee de serre necessaire par kg de legume
materiau_construction_par_kg = surface_serre / rendement_total_par_an * quantite_production

# Repartition entre verre et plastique
materiau_verre = materiau_construction_par_kg * 0.604
materiau_plastique = materiau_construction_par_kg * 0.396

Calcul de l'electricite

La consommation d'electricite est specifique au legume et multipliee par le mix electrique du pays :

Electricite [kg CO2eq/kg] = Apport energetique [kWh/kg] * Mix electrique [kg CO2eq/kWh]

Le mix electrique utilise le "marche de l'electricite, basse tension" d'Ecoinvent pour chaque pays.


Details d'implementation

Produits couverts

Le module s'execute lorsqu'un produit correspond a l'un de ces termes FoodEx2 :

Code FoodEx2LegumeType de modeleDescription
B1458aubergineaubergineAubergine
A00JDaubergineaubergineAubergines
A00JMconcombreconcombreConcombres
A00JRconcombreconcombreCourgettes
A00KYlaituelaitueLaitue pommee
A00MJlaituelaitueEpinards
B4946laituelaitueLaitue batavia
A00KXlaituelaitueLaitues generique
A1563laituelaitueLaitue iceberg
A0DLBlaituelaitueLaitues et similaires
A1612laituelaitueLaitue feuille de chene
A00LBlaituelaitueLollo rosso
A00JApoivronpoivronPoivrons doux
A00QVradisradisRadis
A00LMradisradisRoquette romaine et similaires
B2474radisradisRoquette
A0DMXtomatetomateTomates
A00HYtomate grappetomate grappeTomates cerises

Parametres des legumes

Chaque type de legume a des parametres de culture specifiques :

LegumeJours de cultureTemp. interieure (K)Rendement (kg/m2/mois)Electricite (kWh/kg)
aubergine50291,15 (18°C)3,150,5492
concombre32291,15 (18°C)4,360,1982
laitue60281,15 (8°C)1,740,4636
poivron41293,15 (20°C)1,970,5746
radis51279,15 (6°C)1,360,33798
tomate127291,15 (18°C)4,660,2207
tomate grappe127291,15 (18°C)4,720,2099

Sources de donnees : ProfiCost-Tool (Chollet et al., 2012), manuel technique de l'Association suisse des producteurs de legumes.

Pays couverts

Le module dispose de donnees climatiques Meteonorm pour 28 pays europeens :

CodePaysCodePays
ATAutricheITItalie
BEBelgiqueLTLituanie
BGBulgarieLULuxembourg
CHSuisseLVLettonie
CZRepublique tchequeNLPays-Bas
DEAllemagnePLPologne
DKDanemarkPTPortugal
EEEstonieRORoumanie
ESEspagneSESuede
FIFinlandeSISlovenie
FRFranceSKSlovaquie
GBGrande-BretagneTRTurquie
GRGreceHRCroatie
HUHongrieIEIrlande

Pays de l'UE manquants : Chypre, Malte

Regles d'exclusion

Le modele de serre NE s'execute PAS si le produit a l'une de ces etiquettes de conservation :

XID du termeDescription
J0001Conserve generique
J0136Congele
J0111En conserve
J0116Seche

Ces produits sont exclus car les produits conserves ne necessitent pas de production sous serre au moment de la consommation - ils ont probablement ete produits pendant la saison de culture normale.

Note : J0003 (Non conserve) et J0131 (Refrigere) N'excluent PAS les produits du modele de serre.

Gestion de la date de production

La date de production determine quelles donnees climatiques mensuelles sont utilisees pour les calculs de chauffage :

  1. Si activity_date est specifiee sur le produit ou tout noeud parent, elle est utilisee
  2. La date de recolte est calculee comme date_production - 3 jours
  3. Les jours de culture sont retrocedes depuis la date de recolte en fonction du type de legume
  4. Les besoins de chauffage mensuels sont calcules pour chaque mois de la periode de culture

Exemple : Tomates avec date de production 15 mars :

  • Date de recolte : 12 mars
  • Periode de culture : 127 jours (6 octobre au 12 mars)
  • Mois avec jours de culture : Octobre (partiel), Novembre, Decembre, Janvier, Fevrier, Mars (partiel)

Reference de code complete

Calcul du chauffage

La methode compute_required_heating calcule la demande de chauffage en MJ par kg de legume :

def compute_required_heating(
self,
flow_country_code: str,
flow_processing_date: datetime,
vegetable_name: str,
) -> float:
"""Calcule la quantite de chauffage necessaire."""
days_between_harvest_and_production_date = 3

harvest_date = flow_processing_date - timedelta(days=days_between_harvest_and_production_date)

# Obtenir les jours de culture par mois bases sur la date de recolte et la duree de croissance du legume
monthly_growing_days = np.array(days_in_each_month(NUMBER_OF_GROWING_DAYS[vegetable_name], harvest_date))

# Charger les donnees climatiques specifiques au pays
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"]
)

# Calculer le bilan thermique
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

# Pas de chauffage negatif (pas de refroidissement modelise)
monthly_required_heating_power_watts = np.array(
[val if val >= 0.0 else 0.0 for val in monthly_required_heating_power_watts]
)

# Convertir la puissance en energie
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

# Calculer le rendement pendant la periode de culture
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)

# Convertir en MJ par kg
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

Comptabilisation de l'infrastructure

async def account_for_infrastructure(
self, calc_graph: CalcGraph, greenhouse_activity: FoodProcessingActivityNode, vegetable_name: str
) -> None:
"""Comptabilise l'infrastructure de la serre."""
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

# Calculer m2*annee de materiau de construction par kg de culture
area_and_time_of_greenhouse_building_material = (
size_of_greenhouse_in_m2 / total_yield_per_year * self.node.production_amount.value
)

# Repartir entre verre (60,4%) et plastique (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
)

# Ajouter les noeuds de flux de verre et plastique au graphe
# Connectes aux processus Ecoinvent pour l'infrastructure de serre

Comptabilisation de l'electricite

async def account_for_electrical_energy(
self,
calc_graph: CalcGraph,
greenhouse_activity: FoodProcessingActivityNode,
country_code: str,
vegetable_name: str,
) -> None:
"""Comptabilise la consommation d'energie electrique de la serre."""
energy_needed_per_kg = REQUIRED_ELECTRICITY_KWH_PER_KG[vegetable_name]

# Creer le flux de consommation d'electricite
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,
),
)

# Connecter au marche electrique specifique au pays depuis le cache
electrical_energy_node = self.gfm_factory.electricity_markets_cache.get(country_code)

Sources de donnees

Donnees climatiques Meteonorm

Les donnees climatiques proviennent du logiciel Meteonorm (donnees 2016) :

  • Temperature : Temperature exterieure mensuelle moyenne en Kelvin
  • Rayonnement solaire : Irradiation solaire globale mensuelle moyenne en W/m2

Les donnees sont stockees dans le cache du GFM et chargees au demarrage du service :

  • meteonorm_average_temperature_{country_code} : Tableau de 12 valeurs mensuelles
  • meteonorm_average_solar_radiation_{country_code} : Tableau de 12 valeurs mensuelles

Mix de chauffage

Mix de chauffage specifiques par pays pour le chauffage des serres :

PaysXID BrightwayComposition
CH (Suisse)EDB_4220cbaabca343c09b19415d5ab4079f_copy141,3% gaz naturel, 35,2% fioul, 23,5% renouvelables
DE (Allemagne)EDB_4220cbaabca343c09b19415d5ab4079f_copy228% charbon, 21% gaz naturel, 15% fioul, 20% renouvelables, 16% autre
NL (Pays-Bas)EDB_4220cbaabca343c09b19415d5ab4079f86,2% gaz naturel, 0,1% fioul, 13,7% renouvelables
UE autreEDB_4220cbaabca343c09b19415d5ab4079f_copy354% gaz naturel, 46% fioul

Materiaux d'infrastructure

Processus Ecoinvent pour les materiaux de construction de serre :

MateriauID EcoinventUnite
Serre en verreecoinvent 3.6 cutoff_0ce659c3cfd443a38761058ee62e3f10m2*annee
Tunnel plastiqueecoinvent 3.6 cutoff_fddfe51c6959f41ac044089c3a892af7m2*annee

Exemple de calcul

Scenario : 1 kg de tomates, produites en Suede le 15 mars

Etape 1 : Determiner la periode de culture

  • Date de production : 15 mars
  • Date de recolte : 12 mars (3 jours avant la production)
  • Duree de culture : 127 jours
  • Date de debut : 5 novembre (annee precedente)

Etape 2 : Calculer les jours de culture mensuels

MoisJours
Novembre25
Decembre31
Janvier31
Fevrier28
Mars12
Total127

Etape 3 : Calculer la demande de chauffage

En utilisant les donnees climatiques suedoises et les exigences des tomates (18°C temperature interieure) :

  • Differences de temperature mensuelles calculees
  • Compensation du rayonnement solaire appliquee
  • Valeurs negatives ramenees a zero

Resultat : ~32,3 MJ/kg de demande de chauffage

Etape 4 : Calculer l'infrastructure

Rendement total/an = 4,66 kg/m2/mois * 12 * 46 800 m2 = 2 616 576 kg/an
Materiau de construction par kg = 46 800 / 2 616 576 = 0,0179 m2*annee/kg

Verre : 0,0179 * 0,604 = 0,0108 m2*annee
Plastique : 0,0179 * 0,396 = 0,0071 m2*annee

Etape 5 : Calculer l'electricite

Electricite = 0,2207 kWh/kg * emissions du mix electrique suedois

Sortie finale

Le module ajoute trois noeuds de flux au graphe de calcul :

  1. Flux de chauffage (32,3 MJ) connecte au processus de mix de chauffage suedois
  2. Flux d'infrastructure en verre (0,0108 m2*annee) connecte au processus de verre Ecoinvent
  3. Flux d'infrastructure en plastique (0,0071 m2*annee) connecte au processus de plastique Ecoinvent
  4. Flux d'electricite (0,2207 kWh) connecte au marche electrique suedois

Limitations connues

Couverture geographique

  • Seuls 28 pays europeens ont des donnees Meteonorm
  • Pas de couverture pour les Etats-Unis, le Canada ou d'autres grandes regions productrices
  • Pas de differenciation regionale sous-nationale (importante pour les grands pays)

Couverture des cultures

  • Seuls 7 types de legumes sont modelises (tomate, concombre, laitue, poivron, aubergine, radis, tomate grappe)
  • Les herbes aromatiques, piments, fraises et autres cultures de serre ne sont pas couverts
  • Certaines cultures comme la mache ont des donnees disponibles mais ne sont pas implementees

Hypotheses du modele

  • Pas de chauffage necessaire = pas de serre supposee (peut sous-estimer les emissions pour les serres non chauffees)
  • Meme mix d'infrastructure utilise pour tous les pays (base sur les donnees suisses)
  • Production biologique non differenciee (difference d'incidence minimale trouvee)
  • Pas de saisons de culture en serre specifiques par pays appliquees

Anciennete des donnees

  • Les donnees climatiques Meteonorm datent de 2016
  • Les mix de chauffage peuvent ne pas refleter les transitions energetiques actuelles

References

  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. Rapport ZHAW pour Eaternity.

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

  4. Chollet, D., et al. (2012). ProfiCost-Tool. Association suisse des producteurs de legumes.

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