Aller au contenu principal

GFM Serre

Le Gap Filling Module Serre calcule les émissions de gaz à effet de serre de la culture de légumes sous serre chauffée. La production sous serre peut augmenter l'incidence climatique jusqu'à 10 fois par rapport aux équivalents cultives en plein champ, rendant ce module essentiel pour des évaluations environnementales précises des produits frais.

Référence rapide

PropriétéDescription
S'execute surModeledActivityNode avec parent FoodProductFlowNode contenant des termes de légumes correspondants
DépendancesOriginGapFillingWorker, AttachFoodTagsGapFillingWorker, ConservationGapFillingWorker
Entrée cléDate de production, pays d'origine, type de legume correspondant
SortieÉmissions de chauffage, émissions d'infrastructure, émissions d'électricité
DéclencheurProduit correspondant à l'un des 7 légumes de serre

Quand il s'exécute

Le module se déclenche lorsque :

  1. Un produit correspond à un terme de legume couvert
  2. Le produit à un pays d'origine valide avec données climatiques Meteonorm
  3. Le produit N'a PAS d'etiquette d'exclusion (congelé, en conserve, sèche)
  4. Le chauffage est nécessaire (base sur les calculs climatiques)

Sortie clé

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

  • Chauffage : Base sur le climat du pays, les exigences du legume et la date de production
  • Infrastructure : Matériaux de serre en verre et plastique
  • Électricité : Consommation d'énergie spécifique au legume

Méthodologie scientifique

Le modèle de serre calcule les émissions selon la formule :

Émissions totales = Chauffage + Infrastructure + Électricité

Chaque composant est calculé par kilogramme de legume produit.

Modèle de demande de chauffage

Le modèle 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 à travers l'enveloppe de la serre
  • Q_air : Perte de chaleur par échange d'air
  • T_int : Température interieure requise pour le legume (Kelvin)
  • T_ext : Température 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 représente une moyenne pondérée pour les serres conventionnelles selon Scharfy et al. (2017).

Facteur d'échange 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 : Efficacité de conversion

Calcul des émissions de chauffage

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

Le mix de chauffage dépend du pays et représente le mélange moyen de gaz naturel, fioul de chauffage et energies renouvelables utilise pour le chauffage des serres.

Calcul de l'infrastructure

Les émissions d'infrastructure prennent en compte les matériaux de construction de la serre sur leur durée 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'électricité

La consommation d'électricité est spécifique au legume et multipliée par le mix électrique du pays :

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

Le mix électrique utilise le "marche de l'électricité, basse tension" d'Ecoinvent pour chaque pays.


Détails d'implémentation

Produits couverts

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

Code FoodEx2LegumeType de modèleDescription
B1458aubergineaubergineAubergine
A00JDaubergineaubergineAubergines
A00JMconcombreconcombreConcombres
A00JRconcombreconcombreCourgettes
A00KYlaituelaitueLaitue pommee
A00MJlaituelaitueÉpinards
B4946laituelaitueLaitue batavia
A00KXlaituelaitueLaitues générique
A1563laituelaitueLaitue iceberg
A0DLBlaituelaitueLaitues et similaires
A1612laituelaitueLaitue feuille de chêne
A00LBlaituelaitueLollo rosso
A00JApoivronpoivronPoivrons doux
A00QVradisradisRadis
A00LMradisradisRoquette romaine et similaires
B2474radisradisRoquette
A0DMXtomatetomateTomates
A00HYtomate grappetomate grappeTomates cerises

Paramètres des légumes

Chaque type de legume à des paramètres de culture spécifiques :

LegumeJours de cultureTemp. interieure (K)Rendement (kg/m2/mois)Électricité (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 données : ProfiCost-Tool (Chollet et al., 2012), manuel technique de l'Association suisse des producteurs de légumes.

Pays couverts

Le module dispose de données climatiques Meteonorm pour 28 pays européens :

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

Règles d'exclusion

Le modèle de serre NE s'execute PAS si le produit à l'une de ces étiquettes de conservation :

XID du termeDescription
J0001Conserve générique
J0136Congele
J0111En conserve
J0116Seche

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

Note : J0003 (Non conserve) et J0131 (Réfrigéré) N'excluent PAS les produits du modèle de serre.

Gestion de la date de production

La date de production determine quelles données climatiques mensuelles sont utilisées pour les calculs de chauffage :

  1. Si activity_date est spécifiée sur le produit ou tout noeud parent, elle est utilisée
  2. La date de récolte est calculée comme date_production - 3 jours
  3. Les jours de culture sont retrocedes depuis la date de récolte en fonction du type de legume
  4. Les besoins de chauffage mensuels sont calculés pour chaque mois de la période de culture

Exemple : Tomates avec date de production 15 mars :

  • Date de récolte : 12 mars
  • Période de culture : 127 jours (6 octobre au 12 mars)
  • Mois avec jours de culture : Octobre (partiel), Novembre, Décembre, Janvier, Fevrier, Mars (partiel)

Référence de code complète

Calcul du chauffage

La méthode compute_required_heating calculé 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'électricité

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 données

Données climatiques Meteonorm

Les données climatiques proviennent du logiciel Meteonorm (données 2016) :

  • Température : Température exterieure mensuelle moyenne en Kelvin
  • Rayonnement solaire : Irradiation solaire globale mensuelle moyenne en W/m2

Les données sont stockées dans le cache du GFM et chargées au démarrage 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 spécifiques 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

Matériaux d'infrastructure

Processus Ecoinvent pour les matériaux de construction de serre :

MatériauID EcoinventUnité
Serre en verreecoinvent 3.6 cutoff_0ce659c3cfd443a38761058ee62e3f10m2*année
Tunnel plastiqueecoinvent 3.6 cutoff_fddfe51c6959f41ac044089c3a892af7m2*année

Exemple de calcul

Scénario : 1 kg de tomates, produites en Suede le 15 mars

Étape 1 : Déterminer la période de culture

  • Date de production : 15 mars
  • Date de récolte : 12 mars (3 jours avant la production)
  • Durée de culture : 127 jours
  • Date de début : 5 novembre (année précédente)

Étape 2 : Calculer les jours de culture mensuels

MoisJours
Novembre25
Décembre31
Janvier31
Fevrier28
Mars12
Total127

Étape 3 : Calculer la demande de chauffage

En utilisant les données climatiques suedoises et les exigences des tomates (18°C température interieure) :

  • Différences de température mensuelles calculées
  • Compensation du rayonnement solaire appliquée
  • Valeurs négatives ramenées à zéro

Résultat : ~32,3 MJ/kg de demande de chauffage

Étape 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

Étape 5 : Calculer l'électricité

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*année) connecte au processus de verre Ecoinvent
  3. Flux d'infrastructure en plastique (0,0071 m2*année) connecte au processus de plastique Ecoinvent
  4. Flux d'électricité (0,2207 kWh) connecte au marche électrique suedois

Limitations connues

Couverture géographique

  • Seuls 28 pays européens ont des données Meteonorm
  • Pas de couverture pour les États-Unis, le Canada ou d'autres grandes régions productrices
  • Pas de différenciation régionale sous-nationale (importante pour les grands pays)

Couverture des cultures

  • Seuls 7 types de légumes 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 données disponibles mais ne sont pas implémentées

Hypothèses du modèle

  • Pas de chauffage nécessaire = pas de serre supposée (peut sous-estimer les émissions pour les serres non chauffees)
  • Même mix d'infrastructure utilise pour tous les pays (base sur les données suisses)
  • Production biologique non differenciee (différence d'incidence minimale trouvée)
  • Pas de saisons de culture en serre spécifiques par pays appliquées

Anciennete des données

  • Les données climatiques Meteonorm datent de 2016
  • Les mix de chauffage peuvent ne pas refléter les transitions énergétiques actuelles

Références

  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 légumes.

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