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 sur | ModeledActivityNode avec parent FoodProductFlowNode contenant des termes de légumes correspondants |
| Dépendances | OriginGapFillingWorker, 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éclencheur | Produit correspondant à l'un des 7 légumes de serre |
Quand il s'exécute
Le module se déclenche lorsque :
- Un produit correspond à un terme de legume couvert
- Le produit à un pays d'origine valide avec données climatiques Meteonorm
- Le produit N'a PAS d'etiquette d'exclusion (congelé, en conserve, sèche)
- 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 FoodEx2 | Legume | Type de modèle | Description |
|---|---|---|---|
B1458 | aubergine | aubergine | Aubergine |
A00JD | aubergine | aubergine | Aubergines |
A00JM | concombre | concombre | Concombres |
A00JR | concombre | concombre | Courgettes |
A00KY | laitue | laitue | Laitue pommee |
A00MJ | laitue | laitue | Épinards |
B4946 | laitue | laitue | Laitue batavia |
A00KX | laitue | laitue | Laitues générique |
A1563 | laitue | laitue | Laitue iceberg |
A0DLB | laitue | laitue | Laitues et similaires |
A1612 | laitue | laitue | Laitue feuille de chêne |
A00LB | laitue | laitue | Lollo rosso |
A00JA | poivron | poivron | Poivrons doux |
A00QV | radis | radis | Radis |
A00LM | radis | radis | Roquette romaine et similaires |
B2474 | radis | radis | Roquette |
A0DMX | tomate | tomate | Tomates |
A00HY | tomate grappe | tomate grappe | Tomates cerises |
Paramètres des légumes
Chaque type de legume à des paramètres de culture spécifiques :
| Legume | Jours de culture | Temp. interieure (K) | Rendement (kg/m2/mois) | Électricité (kWh/kg) |
|---|---|---|---|---|
| aubergine | 50 | 291,15 (18°C) | 3,15 | 0,5492 |
| concombre | 32 | 291,15 (18°C) | 4,36 | 0,1982 |
| laitue | 60 | 281,15 (8°C) | 1,74 | 0,4636 |
| poivron | 41 | 293,15 (20°C) | 1,97 | 0,5746 |
| radis | 51 | 279,15 (6°C) | 1,36 | 0,33798 |
| tomate | 127 | 291,15 (18°C) | 4,66 | 0,2207 |
| tomate grappe | 127 | 291,15 (18°C) | 4,72 | 0,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 :
| Code | Pays | Code | Pays |
|---|---|---|---|
| AT | Autriche | IT | Italie |
| BE | Belgique | LT | Lituanie |
| BG | Bulgarie | LU | Luxembourg |
| CH | Suisse | LV | Lettonie |
| CZ | Republique tcheque | NL | Pays-Bas |
| DE | Allemagne | PL | Pologne |
| DK | Danemark | PT | Portugal |
| EE | Estonie | RO | Roumanie |
| ES | Espagne | SE | Suede |
| FI | Finlande | SI | Slovenie |
| FR | France | SK | Slovaquie |
| GB | Grande-Bretagne | TR | Turquie |
| GR | Grece | HR | Croatie |
| HU | Hongrie | IE | Irlande |
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 terme | Description |
|---|---|
J0001 | Conserve générique |
J0136 | Congele |
J0111 | En conserve |
J0116 | Seche |
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 :
- Si
activity_dateest spécifiée sur le produit ou tout noeud parent, elle est utilisée - La date de récolte est calculée comme
date_production - 3 jours - Les jours de culture sont retrocedes depuis la date de récolte en fonction du type de legume
- 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 mensuellesmeteonorm_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 :
| Pays | XID Brightway | Composition |
|---|---|---|
| CH (Suisse) | EDB_4220cbaabca343c09b19415d5ab4079f_copy1 | 41,3% gaz naturel, 35,2% fioul, 23,5% renouvelables |
| DE (Allemagne) | EDB_4220cbaabca343c09b19415d5ab4079f_copy2 | 28% charbon, 21% gaz naturel, 15% fioul, 20% renouvelables, 16% autre |
| NL (Pays-Bas) | EDB_4220cbaabca343c09b19415d5ab4079f | 86,2% gaz naturel, 0,1% fioul, 13,7% renouvelables |
| UE autre | EDB_4220cbaabca343c09b19415d5ab4079f_copy3 | 54% gaz naturel, 46% fioul |
Matériaux d'infrastructure
Processus Ecoinvent pour les matériaux de construction de serre :
| Matériau | ID Ecoinvent | Unité |
|---|---|---|
| Serre en verre | ecoinvent 3.6 cutoff_0ce659c3cfd443a38761058ee62e3f10 | m2*année |
| Tunnel plastique | ecoinvent 3.6 cutoff_fddfe51c6959f41ac044089c3a892af7 | m2*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
| Mois | Jours |
|---|---|
| Novembre | 25 |
| Décembre | 31 |
| Janvier | 31 |
| Fevrier | 28 |
| Mars | 12 |
| Total | 127 |
É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 :
- Flux de chauffage (32,3 MJ) connecte au processus de mix de chauffage suedois
- Flux d'infrastructure en verre (0,0108 m2*année) connecte au processus de verre Ecoinvent
- Flux d'infrastructure en plastique (0,0071 m2*année) connecte au processus de plastique Ecoinvent
- 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
-
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.
-
Eymann, L., et al. (2014). Gewächshausmodell v1.0. Rapport ZHAW pour Eaternity.
-
Scharfy, D., et al. (2017). OFP Report - New Data ZHAW v1.3. Rapport du projet Organic Food Print.
-
Chollet, D., et al. (2012). ProfiCost-Tool. Association suisse des producteurs de légumes.
-
Logiciel Meteonorm. https://meteonorm.com/