Dans ce document, on tente d’évaluer l’empreinte carbone du LBBE sur l’année 2018. Nous évaluons l’empreinte liée aux déplacements professionnels, l’empreinte liée aux calculs sur le cluster, l’empreinte liée aux ordinateurs personnels, l’empreinte liée à la consommation d’électricité dans le bâtiment, et l’empreinte liée aux achats de matériel pour la biologie expérimentale.

Nous avons choisi d’ignorer l’empreinte des transports pendulaires entre le lieu d’habitation et le lieu de travail, ainsi que l’empreinte de l’alimentation consommée au travail.

Une table des matières est disponible sur le côté gauche pour faciliter la navigation dans le document.

1 Analyse des déplacements

On dispose des données de mission pour 2018, obtenus à partir de la base de données interne du laboratoire. Nous n’avons pas réussi à exploiter les bases de données du CNRS et de l’université.

d<- read.csv("data_BSpataro_2020.csv")

Résumé du contenu de la base de données :

summary(d)
##                                               objet_mission
##  captures d'insectes                                 :  8  
##  [Mission Invité]--                                  :  5  
##  captures de chevreuils                              :  5  
##  Suivi du succès reproducteur des chevrettes de Chizé:  5  
##  [Mission Invité]--Comité de pilotage                :  4  
##  Échantillonnage d'insectes                          :  4  
##  (Other)                                             :598  
##         pays                             ville         date_depart 
##  france   :544   Montpellier                : 58   2018-08-18: 12  
##  Allemagne: 12   Paris                      : 51   2018-10-02: 12  
##  Italie   :  9   Lyon                       : 32   2018-12-17: 11  
##  Suisse   :  6   Villeurbanne               : 27   2018-02-07:  9  
##  Brésil   :  5   Grenoble                   : 14   2018-06-25:  9  
##  Japon    :  5   Départements Isère / Savoie: 12   2018-12-13:  9  
##  (Other)  : 48   (Other)                    :435   (Other)   :567  
##      date_retour  train     avion     vehicule_perso vehicule_labo
##  2018-08-23: 14   non:332   non:510   non:514        non:545      
##  2018-10-03: 11   oui:297   oui:119   oui:115        oui: 84      
##  2018-12-19: 10                                                   
##  2018-02-09:  9                                                   
##  2018-06-21:  9                                                   
##  2018-06-15:  8                                                   
##  (Other)   :568                                                   
##      choix_credits
##  sans_frais :171  
##  sur_credits:458  
##                   
##                   
##                   
##                   
##                   
##                                                                  type_credits
##                                                                        :171  
##  |contrat|:CNRS - AGEX                                                 : 47  
##  |contrat|:CNRS - Mov-It                                               : 18  
##  |equipe|Equipe Génétique et Evolution des interactions Hôtes-Parasites: 18  
##  |equipe|Equipe Bioinformatique, Phylogénie et Génomique Evolutive     : 17  
##  |equipe|Equipe Evolution, Adaptation et Comportement                  : 14  
##  (Other)                                                               :344  
##                  lieu_depart                      lieu_retour  vehicule 
##  Lyon                  : 39   Paris Gare de Lyon        : 29   non:384  
##  Chalamont             : 34   Montpellier               : 22   oui:245  
##  Lyon Part-Dieu        : 31   Trois Fontaines           : 19            
##  La Doua - Villeurbanne: 26   Paris                     : 17            
##  Saint-Etienne (42)    : 21   Département Isère / Savoie: 12            
##  Lyon Part Dieu        : 19   Lyon Part-Dieu            : 11            
##  (Other)               :459   (Other)                   :519            
##     place_vehicule  heure_depart  heure_retour
##            :384    08:00  :152   18:00  : 92  
##  conducteur:194    07:00  : 75   20:00  : 61  
##  passager  : 51    06:00  : 72   16:00  : 58  
##                    09:00  : 41   17:00  : 50  
##                    10:00  : 33   19:00  : 43  
##                    12:00  : 28   12:00  : 29  
##                    (Other):228   (Other):296  
##                                                                                                                                                intitule_statut
##  Directeur de recherche                                                                                                                                :151   
##  Chargé de recherche                                                                                                                                   : 98   
##  Technicien                                                                                                                                            : 90   
##  doctorant                                                                                                                                             : 85   
##  Maître de conférence universitaire                                                                                                                    : 75   
##  Professeur des universités                                                                                                                            : 51   
##  (Other)                                                                                                                                               : 79   
##        id      
##  Min.   : 129  
##  1st Qu.: 194  
##  Median :1447  
##  Mean   :1348  
##  3rd Qu.:2173  
##  Max.   :2443  
## 

1.1 Analyse des voyages en avion

library(airportr)
# Construction d'une base de données limitée aux voyages en avion
d_avion = d[which(d$avion=="oui"),]

1.1.1 Calcul de l’empreinte eCO2 des transports en avion

# d_avion$lieu_depart
# d_avion$lieu_retour

Inspirons nous de “https://sheilasaia.rbind.io/post/2019-04-19-carbon-cost-calcs/” pour calculer l’empreinte carbone des vols.

Cherchons l’aéroport de Lyon :

lyon_iata <- airport_lookup(input = "Lyon Saint-Exupéry Airport", input_type = "name", output_type = "IATA")

Il va falloir transformer les noms de la base de données en symboles IATA pour tous les points de départ et tous les points d’arrivée !

d_avion$iata_depart = rep("NA", length(d_avion$lieu_depart))
d_avion$iata_retour = rep("NA", length(d_avion$lieu_depart))

On remplit toutes les lignes où Lyon semble être le bon aéroport (cas discutables : UVBL1, Saint-Etienne, Domicile).

#depart_lyon_id = c(1,4,5,6,8,9,10,11,12,13,16,18,19,20,21,22,23,24,26,27,31,32,38,39,40,41,42,45,46,47,52,53,54,56,58,59,60,61,64,65,66,67,68,69,70,72,74,75,77,78,79,85,86,87,89,93,94,95,96,97,98,99,102,104,105,106,107,109,114,115,116,117,118,119)
#d_avion$iata_depart[depart_lyon_id] = lyon_iata

d_avion$iata_depart[grep("Lyon", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("UVBL1", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("LBBE", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("MEYZIEU", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("Villeurbanne", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("exupéry", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("Saint-Etienne", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("ecully", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[grep("doua", d_avion$lieu_depart, ignore.case=TRUE)]=lyon_iata
d_avion$iata_depart[which(d_avion$lieu_depart=="Domicile")]=lyon_iata


# 
# d_avion$iata_depart[which(d_avion$lieu_depart=="Lyon ")]=lyon_iata
# d_avion$iata_depart[which(d_avion$lieu_depart=="Lyon")]=lyon_iata
# d_avion$iata_depart[which(d_avion$lieu_depart=="Lyon Saint Exupéry")]=lyon_iata
# d_avion$iata_depart[which(d_avion$lieu_depart=="Lyon Saint-Exupéry                                        ")]=lyon_iata



#d_avion$lieu_depart[which(d_avion$iata_depart=="NA")]

Maintenant, on remplit les blancs du départ…

d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport international Pierre-Elliott-Trudeau de Montréal ")]=airport_lookup(input = "Montreal / Pierre Elliott Trudeau International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Los Angeles")]=airport_lookup(input = "Los Angeles International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport Seattle")]=airport_lookup(input = "Seattle Tacoma International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Domicile (Durham, Royaume-Uni)")]="NCL"  #airport_lookup(input = "Newcastle Airport", input_type = "name", output_type = "IATA")$IATA[1] # The first one is in the UK
d_avion$iata_depart[which(d_avion$lieu_depart=="Munich (aéroport)")]=airport_lookup(input = "Munich International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="london heathrow")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Hartford CT (BDL)  (USA)")]=airport_lookup(input = "Bradley International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Toulouse TLS")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Bordeaux Merignac")]=airport_lookup(input = "Bordeaux-Mérignac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Blagnac (toulouse)")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Saint Mathieu de Tréviers (domicile)")]=airport_lookup(input = "Montpellier-Méditerranée Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Oxford")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aas, Norvège")]=airport_lookup(input = "Oslo Gardermoen Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="aéroport d'East London, Afrique du Sud")]=airport_lookup(input = "Ben Schoeman Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport de Genève")]=airport_lookup(input = "Geneva Cointrin International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Brême")]=airport_lookup(input = "Bremen Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Sidney")]=airport_lookup(input = "Sydney Kingsford Smith International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Francfort (Allemagne)")]=airport_lookup(input = "Frankfurt am Main International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="aéroport Vienne Autriche")]=airport_lookup(input = "Vienna International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport de Porto")]=airport_lookup(input = "Francisco de Sá Carneiro Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Barcelone")]=airport_lookup(input = "Barcelona International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport de Toronto")]=airport_lookup(input = "Lester B. Pearson International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport de Bologne")]=airport_lookup(input = "Bologna Guglielmo Marconi Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="aéroport de Bologne, Italie")]=airport_lookup(input = "Bologna Guglielmo Marconi Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="51 James Street, OX4 1EU, Oxford, UK")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport Roissy Charles de Gaulle, Paris")]="CDG"
d_avion$iata_depart[which(d_avion$lieu_depart=="Gare d'Uppsala, Suède")]=airport_lookup(input = "Stockholm-Arlanda Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Oslo - Aéroport")]=airport_lookup(input = "Oslo Gardermoen Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Toulouse Blagnac")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Lisbonne")]=airport_lookup(input = "Lisbon Portela Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Fiumiccino, Rome")]=airport_lookup(input = "Leonardo da Vinci–Fiumicino Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Rome")]=airport_lookup(input = "Leonardo da Vinci–Fiumicino Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Curitiba")]=airport_lookup(input = "Afonso Pena Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Poitiers aéroport")]=airport_lookup(input = "Poitiers-Biard Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="aéroport d'Edimbourg")]=airport_lookup(input = "Edinburgh Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="George Airport")]=airport_lookup(input = "George Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Bulawayo")]=airport_lookup(input = "Joshua Mqabuko Nkomo International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport Vienne")]=airport_lookup(input = "Vienna International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport Brest")]=airport_lookup(input = "Brest Bretagne Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aeroport El Prat, Barcelone")]=airport_lookup(input = "Barcelona International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aéroport Faro")]="FAO"  #airport_lookup(input = "Faro Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="aéroport Toulouse Blagnac")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Nantes")]=airport_lookup(input = "Nantes Atlantique Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Aberdeen")]=airport_lookup(input = "Aberdeen Dyce Airport", input_type = "name", output_type = "IATA")
d_avion$iata_depart[which(d_avion$lieu_depart=="Goteborg")]=airport_lookup(input = "Gothenburg-Landvetter Airport", input_type = "name", output_type = "IATA")
d_avion$lieu_depart[which(d_avion$iata_depart=="NA")]
## factor(0)
## 234 Levels:  lyon part-dieu  rennes ... Villeurbanne, LBBE

Ensuite, même travail avec les retours.

#retour_lyon_id = c(3,7,14,15,17,28,29,30,35,36,43,44,48,49,50,51,55,57,62,63,65,76,80,81,82,88,90,94,100,101,110)
#d_avion$iata_retour[retour_lyon_id] = lyon_iata


d_avion$iata_retour[grep("Lyon", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("UCBL1", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("LBBE", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("MEYZIEU", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("Villeurbanne", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("exupéry", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("Saint-Etienne", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("ecully", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[grep("doua", d_avion$lieu_retour, ignore.case=TRUE)]=lyon_iata
d_avion$iata_retour[which(d_avion$lieu_retour=="Domicile")]=lyon_iata
d_avion$iata_retour[which(d_avion$lieu_retour=="univsité de grenoble")]=lyon_iata

#d_avion$lieu_retour[which(d_avion$iata_retour=="NA")]

Maintenant, on remplit les blancs du retour.

d_avion$iata_retour[which(d_avion$lieu_retour=="Rio de Janeiro")]=airport_lookup(input = "Rio Galeão – Tom Jobim International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport international Pierre-Elliott-Trudeau de Montréal ")]=airport_lookup(input = "Montreal / Pierre Elliott Trudeau International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Trondheim")]=airport_lookup(input = "Trondheim Airport Værnes", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Victoria Falls (Hawange)")]=airport_lookup(input = "Victoria Falls International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Birmingham")]=airport_lookup(input = "Birmingham International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Rome")]=airport_lookup(input = "Roma Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Toulouse Blagnac")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Bordeaux aéroport")]=airport_lookup(input = "Bordeaux-Mérignac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Hambourg Fuhlsbüttel")]=airport_lookup(input = "Hamburg Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Oxford")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Oxford ")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="YORK")]="MAN"  #airport_lookup(input = "Manchester Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="COPENHAGUE")]=airport_lookup(input = "Copenhagen Kastrup Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="NOSI SAD")]=airport_lookup(input = "Belgrade Nikola Tesla Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="ROME")]=airport_lookup(input = "Roma Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="PARME")]=airport_lookup(input = "Parma Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport de Brest")]=airport_lookup(input = "Brest Bretagne Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Paris Orly")]="CDG"
d_avion$iata_retour[which(d_avion$lieu_retour=="Montpellier")]=airport_lookup(input = "Montpellier-Méditerranée Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport International Pékin")]=airport_lookup(input = "Beijing Capital International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroort de Vienne")]=airport_lookup(input = "Vienna International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="aéroport Bordeaux-merignac")]=airport_lookup(input = "Bordeaux-Mérignac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="aéroport de Paris CDG")]="CDG"
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport de Thessalonique")]=airport_lookup(input = "Thessaloniki Macedonia International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport de Londres \"Southend\"")]=airport_lookup(input = "Thessaloniki Macedonia International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="aéroport de Brest")]=airport_lookup(input = "Brest Bretagne Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Manchester UK")]="MAN"  #airport_lookup(input = "Manchester Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Tegel, Berlin ")]=airport_lookup(input = "Berlin-Tegel International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Salt Lake City, Utah")]=airport_lookup(input = "Salt Lake City International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Chania")]=airport_lookup(input = "Chania International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Grimso (Suede)")]=airport_lookup(input = "Stockholm-Arlanda Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Trondheim (Norvège)")]=airport_lookup(input = "Trondheim Airport Værnes", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="rennes")]=airport_lookup(input = "Rennes-Saint-Jacques Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Bubión")]=airport_lookup(input = "Federico Garcia Lorca Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="rome")]=airport_lookup(input = "Roma Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="MUMBAI  (CHHATRAPATI SHIVAJI)")]=airport_lookup(input = "Chhatrapati Shivaji International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Nantes")]=airport_lookup(input = "Nantes Atlantique Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Yokohama, Japon")]=airport_lookup(input = "Narita International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="paris")]="CDG"
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Birmingham (Grande Bretagne)")]=airport_lookup(input = "Birmingham International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Bordeaux")]=airport_lookup(input = "Bordeaux-Mérignac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="aéroport Narita, Tokyo")]=airport_lookup(input = "Narita International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="aéroport rome")]=airport_lookup(input = "Roma Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="aéroport rome")]=airport_lookup(input = "Roma Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Toulouse Matabiau")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="INRA Castanet-Tolosan")]=airport_lookup(input = "Toulouse-Blagnac Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport international de Vancouver, Canada")]=airport_lookup(input = "Vancouver International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Gare d'Uppsala")]=airport_lookup(input = "Stockholm-Arlanda Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport de Oulu, Finlande")]=airport_lookup(input = "Oulu Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="gare d'Uppsala")]=airport_lookup(input = "Stockholm-Arlanda Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Safari Lodge, Hwange, Zimbabwe")]=airport_lookup(input = "Victoria Falls International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Safari Lodge, Hwange, Zimbabwe")]=airport_lookup(input = "Victoria Falls International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Sandvika, Norvège")]=airport_lookup(input = "Oslo Gardermoen Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Casablanca")]=airport_lookup(input = "Mohammed V International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Cayenne")]=airport_lookup(input = "Cayenne-Rochambeau Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="London Heathrow airport")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="vancouver")]=airport_lookup(input = "Vancouver International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="vancouver ")]=airport_lookup(input = "Vancouver International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Victoria Falls Airport")]=airport_lookup(input = "Victoria Falls International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Johannesbourg")]=airport_lookup(input = "OR Tambo International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Campo Grande")]=airport_lookup(input = "Campo Grande Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Campo Grande")]=airport_lookup(input = "Campo Grande Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Rennes")]=airport_lookup(input = "Rennes-Saint-Jacques Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aeroport - Tokyo Haneda (HND)")]=airport_lookup(input = "Tokyo Haneda International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Budapest")]=airport_lookup(input = "Budapest Ferenc Liszt International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Narita Tokyo")]=airport_lookup(input = "Narita International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Yokohama Train Station, Yokohama")]=airport_lookup(input = "Narita International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Brest Guipavas ")]=airport_lookup(input = "Brest Bretagne Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport Franz-Josef-Strauß de Munich")]=airport_lookup(input = "Munich International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Montreal")]=airport_lookup(input = "Montreal / Pierre Elliott Trudeau International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Gare sncf Montpellier")]=airport_lookup(input = "Montpellier-Méditerranée Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Lisbonne centre")]=airport_lookup(input = "Lisbon Portela Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="univsité de grenoble")]=airport_lookup(input = "Grenoble-Isère Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Avignon")]=airport_lookup(input = "Avignon-Caumont Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Roscoff")]=airport_lookup(input = "Brest Bretagne Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Londres Heathrow")]=airport_lookup(input = "London Heathrow Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Rennes Saint Jacques")]=airport_lookup(input = "Rennes-Saint-Jacques Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Tokyo Haneda Airport")]=airport_lookup(input = "Tokyo Haneda International Airport", input_type = "name", output_type = "IATA")
d_avion$iata_retour[which(d_avion$lieu_retour=="Aéroport de Vienne (Autriche)")]=airport_lookup(input = "Vienna International Airport", input_type = "name", output_type = "IATA")
d_avion$lieu_retour[which(d_avion$iata_retour=="NA")]
## factor(0)
## 342 Levels:  Collège de Claveisolles ...

1.1.1.1 Calcul des kilomètres effectués par trajet

#kilometers <- round(airport_distance("RDU", "CLT"))
#miles <- round(airport_distance("RDU", "CLT") * 0.621)
d_avion$km <- rep(0, length(d_avion$iata_depart))
for (i in 1:length(d_avion$iata_depart)) {
  d_avion$km[i] <- round(airport_distance(d_avion$iata_depart[i], d_avion$iata_retour[i]))
}
d_avion$miles <- 0.621*d_avion$km

3 problèmes, avec des trajets à 0km. On les corrige.

d_avion[3,]
##                      objet_mission   pays ville date_depart date_retour
## 14 [Mission Invité]--Jury de thèse france  Lyon  2018-12-11  2018-12-18
##    train avion vehicule_perso vehicule_labo choix_credits type_credits
## 14   non   oui            non           non   sur_credits     ANR AGEX
##                                                   lieu_depart
## 14 Aéroport international Pierre-Elliott-Trudeau de Montréal 
##                                                   lieu_retour vehicule
## 14 Aéroport international Pierre-Elliott-Trudeau de Montréal       non
##    place_vehicule heure_depart heure_retour
## 14                       16:00        06:00
##                                                                                                                                           intitule_statut
## 14 doctorant                                                                                                                                             
##      id iata_depart iata_retour km miles
## 14 2206         YUL         YUL  0     0

On considère qu’il s’agit d’un aller-retour Lyon-Montréal.

d_aller <- d_avion[3,]
d_retour <-d_avion[3,]
d_aller$lieu_depart="Lyon"
d_aller$iata_depart=lyon_iata
d_aller$lieu_retour="Montreal"
d_aller$iata_retour=d_avion[3,]$iata_retour
d_retour$lieu_depart="Montreal"
d_retour$iata_depart=d_avion[3,]$iata_depart
d_retour$lieu_retour="Lyon"
d_retour$iata_retour=lyon_iata
d_avion[3,] <- d_aller 
d_avion <- rbind(d_avion, d_retour)
d_avion[61,]
##     objet_mission   pays             ville date_depart date_retour train
## 312 Jury de Thèse france Villenave d'Ornon  2018-05-02  2018-05-02   non
##     avion vehicule_perso vehicule_labo choix_credits type_credits
## 312   oui            non           non    sans_frais             
##     lieu_depart lieu_retour vehicule place_vehicule heure_depart
## 312    Domicile    Domicile      non                       06:00
##     heure_retour
## 312        21:40
##                                                                                                                                            intitule_statut
## 312 Maître de conférence universitaire                                                                                                                    
##       id iata_depart iata_retour km miles
## 312 1447         LYS         LYS  0     0

On considère qu’il s’agit d’un aller-retour Lyon-Bordeaux.

d_aller <- d_avion[61,]
d_retour <-d_avion[61,]
d_aller$lieu_depart="Lyon"
d_aller$iata_depart=lyon_iata
d_aller$lieu_retour="Bordeaux"
d_aller$iata_retour=airport_lookup(input = "Bordeaux-Mérignac Airport", input_type = "name", output_type = "IATA")
d_retour$lieu_depart="Bordeaux"
d_retour$iata_depart=airport_lookup(input = "Bordeaux-Mérignac Airport", input_type = "name", output_type = "IATA")
d_retour$lieu_retour="Lyon"
d_retour$iata_retour=lyon_iata
d_avion[61,] <- d_aller 
d_avion <- rbind(d_avion, d_retour)
d_avion[88,]
##       objet_mission pays       ville date_depart date_retour train avion
## 402 ISBE Conference  USA Minneapolis  2018-08-10  2018-08-23   non   oui
##     vehicule_perso vehicule_labo choix_credits type_credits
## 402            non           non   sur_credits        SMACL
##                     lieu_depart                 lieu_retour vehicule
## 402 Aéroport Lyon Saint Exupery Aéroport Lyon Saint Exupery      non
##     place_vehicule heure_depart heure_retour
## 402                       06:00        13:40
##                                                                                                                                            intitule_statut
## 402 doctorant                                                                                                                                             
##       id iata_depart iata_retour km miles
## 402 2171         LYS         LYS  0     0

On considère qu’il s’agit d’un aller-retour Lyon-Minneapolis.

d_aller <- d_avion[88,]
d_retour <-d_avion[88,]
d_aller$lieu_depart="Lyon"
d_aller$iata_depart=lyon_iata
d_aller$lieu_retour="Minneapolis"
d_aller$iata_retour=airport_lookup(input = "Minneapolis-St Paul International/Wold-Chamberlain Airport", input_type = "name", output_type = "IATA")
d_retour$lieu_depart="Minneapolis"
d_retour$iata_depart=airport_lookup(input = "Minneapolis-St Paul International/Wold-Chamberlain Airport", input_type = "name", output_type = "IATA")
d_retour$lieu_retour="Lyon"
d_retour$iata_retour=lyon_iata
d_avion[88,] <- d_aller 
## Warning in `[<-.factor`(`*tmp*`, iseq, value = "Minneapolis"): invalid
## factor level, NA generated
d_avion <- rbind(d_avion, d_retour)

On peut recalculer les distances.

#kilometers <- round(airport_distance("RDU", "CLT"))
#miles <- round(airport_distance("RDU", "CLT") * 0.621)
d_avion$km <- rep(0, length(d_avion$iata_depart))
for (i in 1:length(d_avion$iata_depart)) {
  d_avion$km[i] <- round(airport_distance(d_avion$iata_depart[i], d_avion$iata_retour[i]))
}
d_avion$miles <- 0.621*d_avion$km

1.1.1.2 Histogramme des déplacements en avion, par distance

hist(d_avion$km, nclass = 20, xlab="Distance", ylab="Nombre", main="Histogramme des déplacements en avion du LBBE", col=rgb(0.6, 0.6, 0.6, 1), border=rgb(0.8, 0.8, 0.8, 1))

1.1.1.3 Quelles sont les destinations populaires des membres du LBBE ?

On liste l’ensemble des aéroports de départ et d’arrivée, et on compte leur nombre, qu’on affiche ensuite.

frequent_iatas <- table(c(d_avion$iata_depart, d_avion$iata_retour))
frequent_iatas <- sort(frequent_iatas)
long_names=rep("", length(frequent_iatas))

for (i in 1:length(frequent_iatas)) {
  long_names[i] <- airport_lookup(input=names(frequent_iatas)[i], input_type = "IATA", output_type = "name")
}
long_names <- gsub("Airport", "", long_names)
names(frequent_iatas) <- long_names
par(mar=c(10, 4, 0, 2) + 0.1)
barplot(frequent_iatas, las=2, cex.axis=0.5, cex.lab=1.0, cex=0.6, ylab="Fréquence")

1.1.2 Distribution des voyages en avion par personnel, colorée par catégorie professionnelle

# Formattage des noms de catégorie.
nams = gsub(" ", "\n", trimws(as.character(levels(d$intitule_statut))))
nams[3] = "ATER"
nams[5] = "CDD"
nams[10] = "Maître\nde\nconférence"
frequent_flyers <- table(d_avion$id)
frequent_flyers <- sort(frequent_flyers)

statuts <- c()
for (i in names(frequent_flyers)) {
  statuts <- c(statuts, unique(d_avion$intitule_statut[which(as.character(d_avion$id)==i)] ))
}

color_statuts <- c("grey", "grey", "orange", "lightgreen", "darkblue", "darkgreen", "lightblue", "darkgrey", "black", rgb(1,0,0,0.5), "lightblue", "darkblue", "darkred", "lightgrey")

barplot(frequent_flyers, las=2, cex.axis=0.5, cex.lab=1.0, cex=0.6, ylab="Nombre de voyages en avion", xlab="Individus", col=color_statuts[statuts])
legend("topleft", legend=levels(d_avion$intitule_statut), text.col=color_statuts, cex=0.5)

Même chose, pour le nombre de kilomètres et non plus le nombre de voyages.

long_flyers <- aggregate(d_avion$km, by=list(individu=d_avion$id), FUN=sum)
long_flyers <- long_flyers[order(long_flyers$x),]

statuts <- c()
for (i in long_flyers$individu) {
  statuts <- c(statuts, unique(d_avion$intitule_statut[which(d_avion$id==i)] ))
}

color_statuts <- c("grey", "grey", "orange", "lightgreen", "darkblue", "darkgreen", "lightblue", "darkgrey", "black", rgb(1,0,0,0.5), "lightblue", "darkblue", "darkred", "lightgrey")

barplot(long_flyers$x, names.arg=long_flyers$individu, las=2, cex.axis=0.5, cex.lab=1.0, cex=0.6, ylab="Nombre de kms en avion", xlab="Individus", col=color_statuts[statuts])
legend("topleft", legend=levels(d_avion$intitule_statut), text.col=color_statuts, cex=0.5)

1.1.2.1 Calcul de l’empreinte eCO2 des voyages en avion

On calcule l’empreinte carbone en se basant sur les chiffres de la base carbone de l’ADEME, récupérés ici : https://ferme.yeswiki.net/Empreinte/?PagePrincipale&wiki=PagePrincipale par Eric Tannier.

Selon l’avion utilisé, l’empreinte carbone au km n’est pas la même. Il faut donc faire la différence entre longs courriers et vols moins longs.

On décide arbitrairement que tous les vols en-dessous de 2500km seront effectués dans des avions émettant 314g eCO2/km/personne, et ceux au-dessus dans des avions émettant 216g eCO2/km/personne.

computeCo2Avion <- function (x) {
  if (as.numeric(x[22])<=2500) {
    return(as.numeric(x[22])*314)
  }
  else {
    return(as.numeric(x[22])*216)
  }
  
}

d_avion$eco2_Eric <- apply(d_avion, 1, computeCo2Avion)

round(sum(d_avion$eco2_Eric), 3)
## [1] 93712626

95 tonnes eCO2 dues aux voyages en avion au LBBE. Or de nombreux voyages sont probablement indirects. En reprenant la valeur estimée par Lucas Fontana qui donne le ratio des distances des vols indirects vs directs à l’université de Lausanne: 8.6% plus d’eCO2.

En grammes :

total_voyages_avion <- round(sum(d_avion$eco2_Eric)*1.086, 3)
total_voyages_avion
## [1] 101771912

Soit 103 tonnes eCO2 dues au transport en avion pour le LBBE.

En me basant sur http://lbbe.univ-lyon1.fr/organigramme.php, je compte 147 personnes au total hors INRIA, Vetagro-Sup et les deux équipes des HCL. Ainsi, par personne :

round(sum(d_avion$eco2_Eric)*1.086, 3)/(147)
## [1] 692325.9

704kgs eCO2 par personne.

1.2 Empreinte eCO2 des transports en train

# Construction d'une base de données limitée aux voyages en train
d_train = d[which(d$train=="oui"),]
# d_train$lieu_depart
# d_train$lieu_retour

La base carbone de l’ADEME (http://www.basecarbone.fr/fr/basecarbone/donnees-consulter/liste-element/categorie/181) donne une valeur de 5.60E-3 kgCO2e/passager.km pour les trains grandes lignes.

Prenons, pour imaginer le pire des cas, un voyage de Lyon à Bordeaux : - 391km pour aller de Lyon Part Dieu à Paris Gare de Lyon (source https://www.thetrainline.com/en/train-times/lyon-part-dieu-to-paris-gare-de-lyon). - 497km pour aller de Paris Montparnasse à Bordeaux Saint Jean (source https://www.thetrainline.com/en/train-times/paris-montparnasse-to-bordeaux-st-jean). Soit

391+497
## [1] 888

888 km au total.

Si tous les voyages en train effectués par les membres du labo étaient si longs, on aurait une empreinte totale de :

total_voyages_train <- 888*5.6*length(d_train$lieu_depart)
total_voyages_train 
## [1] 1476922

L’ensemble des personnels du LBBE n’a au plus occasionné qu’environ 1.48 tonne eCO2 pour ses déplacements en train.

1.3 Empreinte eCO2 des voitures du laboratoire utilisées durant les missions

Dans cette section on essaie de quantifier l’empreinte carbone des véhicules possédés par le labo.

Voici les infos recueillies auprès d’Odile, notamment les dates d’acquisition :

  • kangoo 2018 -> 2018
  • kangoo 2015 -> 2015
  • kangoo -> 2010
  • kangoo UCBL -> 2005
  • kangoo ecofect -> 2016
  • AX : 1993 -> 2016 (peu utilisée sur la fin)
  • kangoo accidentée : 2010 -> 2017

On considère qu’une voiture du labo est utilisée pendant 15 ans.

1.3.1 Empreinte eCO2 due à l’utilisation des voitures

km_kangoo_2018 <- 1811 # première utilisation en octobre 2018
km_kangoo_ucbl <- 320334 - 311064
km_kangoo_2015 <- (243055 + 236000) / 2 - 221491 # le cahier ne permet pas de déterminer exactement le nombre de km à la fin 2018

extrapolation_autres_kangos <- (km_kangoo_ucbl + km_kangoo_2015 + km_kangoo_2018 * 4) / 3
# ici manquent des chiffres pour le kangoo ecofect et le kangoo mission

total_km_voitures_labo <- km_kangoo_2018 + km_kangoo_ucbl + km_kangoo_2015 + 2 * extrapolation_autres_kangos
emission_kangoo_g_par_km <- 145 # https://www.ademe.fr/sites/default/files/assets/documents/consommation-emissions-vehicules-particuliers-2018_8521.pdf
total_km_voitures_labo*emission_kangoo_g_par_km
## [1] 7561919

L’utilisation des voitures a occasionné une empreinte de 7.56 TeCO2.

1.3.2 Empreinte eCO2 due à la production des voitures

On considère qu’une kangoo pèse environ 1 Tonne, et on utilise les chiffres de la base carbone de l’ADEME : http://www.basecarbone.fr/fr/basecarbone/donnees-consulter/liste-element/categorie/273

2 valeurs sont données, une à 5500 kgeCO2, l’autre à 7643 kgeCO2 par tonne. On prend la moyenne.

emission_production_kangoo <- (5500000+7643000)/2
  #20000 / 1000 * 720000 # https://www.caradisiac.com/prime-a-la-casse-produire-une-nouvelle-voiture-pollue-plus-que-garder-une-ancienne-168187.htm
                                                    # https://www.lemonde.fr/planete/article/2019/09/10/les-voitures-vendues-en-2018-laisseront-une-empreinte-carbone-de-4-8-gigatonnes-de-co2_5508391_3244.html
emission_production_kangoos_amortie <- emission_production_kangoo * 5 / 15
emission_production_kangoos_amortie
## [1] 2190500

La construction des voitures, en considérant l’amortissement, a occasionné une empreinte de 2.19 TeCO2.

total_emission_voitures_labo <- total_km_voitures_labo * 145 + emission_production_kangoos_amortie
total_emission_voitures_labo
## [1] 9752419

Le LBBE a émis 9.75 TeCO2 en 2018 de par sa flotte de voitures.

1.4 Estimation très approximative et rapide de l’empreinte eCO2 de l’utilisation des véhicules personnels lors de missions

Des membres du LBBE ont utilisé des voitures du LBBE pour des missions, mais également leurs propres voitures. Dans ces cas-là, nous n’avons pas accès au nombre de kilomètres en jeu.

nb_voyages_perso = table(d$vehicule_perso)[2]
nb_voyages_labo = table(d$vehicule_labo)[2]

On fait néanmoins l’hypothèse qu’en moyenne par mission on fait autant de km avec sa voiture perso qu’avec la voiture du labo :

total_co2_voiture_perso = total_km_voitures_labo * 145 *(table(d$vehicule_perso)[2]/table(d$vehicule_labo)[2])
total_co2_voiture_perso
##      oui 
## 10352627

10.2 TeCO2 pour les trajets en voiture personnelle.

2 Empreinte eCO2 du calcul sur le cluster

Guy Perrière nous a transmis un tableau dans lequel on voit que en 2016, la salle Omega a consommé 1179129 kWh, utilisés pour les calculs du LBBE mais a priori pas par le département santé, ce qui nous arrange. Le cluster du labo représente en gros 1/4 des serveurs présents dans cette salle.

consommation_electricite_omega_lbbe <- 1179129/4
consommation_electricite_omega_lbbe
## [1] 294782.2

La part LBBE de consommation électrique de la salle omega est de 294kWh.

Par ailleurs, la base carbone de l’ADEME fixe à 79gCO2/kWh la production d’électricité française. Donc on a :

empreinte_consommation_electricite_omega_lbbe <- consommation_electricite_omega_lbbe*79
empreinte_consommation_electricite_omega_lbbe
## [1] 23287798

23,3 tonnes eCO2 pour 1 an de calcul, ce qui comprend aussi la climatisation de la salle. Ceci n’inclut pas la construction et le transport des serveurs, qu’Eco-info estime à 1260kgs pour un serveur de 16 coeurs (cf https://ferme.yeswiki.net/Empreinte/?PagePrincipale&wiki=PagePrincipale), sans prendre en compte le retraitement en fin de vie. Un serveur dure environ 5 ans. Donc on a, par coeur d’un serveur et par heure :

empreinte_construction_noeud_par_heure <- 1260000/(16*5*365*24)
empreinte_construction_noeud_par_heure
## [1] 1.797945

1.79geCO2 par heure de calcul par coeur pour la production et le transport du serveur.

Un coeur utilise 23.9W, soit 0.0239kW soit, pour une heure pour un coeur :

empreinte_heure_calcul <- 0.0239*79
empreinte_heure_calcul
## [1] 1.8881

1.89gCO2 par heure de calcul par coeur.

On peut donc faire une règle de trois pour calculer une empreinte CO2 du calcul au LBBE qui inclut l’empreinte d’acquisition des serveurs :

processor_footprint <-  (empreinte_heure_calcul + empreinte_construction_noeud_par_heure) * 24 * 365 # part empreinte en geCO2 d'un processeur pour 1 an
processor_cons <- 0.0239*24*365 # consommation en kWh pour un processeur pour 1 an 
clim_cons <- consommation_electricite_omega_lbbe - 1000* processor_cons  # part clim en kWh pour 1 an, en supposant qu'on a 1000 processeurs dans le cluster
clim_footprint <- clim_cons * 79 # part empreinte clim en geCO2
cluster_footprint <- processor_footprint*1000 + clim_footprint

cluster_footprint
## [1] 39037798

39 TeCO2 pour le calcul au LBBE, hors machines personnelles.

2.0.1 Nombre d’heures de calcul effectuées en 2018

On obtient les données d’heures de calcul en 2018 depuis http://adminlbbe.univ-lyon1.fr/pbsaccounting/

nbHeures <- 548151.79 + 476225.36 + 589034.72 + 434947.32 + 522977.69 + 664073.74 + 496768.85 + 36774.61 + 517547.35 + 528429.61 + 295533.16

Il nous manque décembre 2018, on rajoute décembre 2017 :

nbHeures <- nbHeures + 740922.34
nbHeures
## [1] 5851387

Soit, une empreinte de :

nbHeures * empreinte_heure_calcul
## [1] 11048003

11 tonnes. Il semblerait donc que sur l’ensemble de l’empreinte du cluster, 11 tonnes eCO2 sont émises de par les calculs, et le reste de par la construction et la climatisation.

3 Empreinte eCO2 due à l’achat d’ordinateurs individuels

Il y a 147 personnes au laboratoire, hors département de santé. Si on estime qu’un ordinateur est renouvelé tous les 3 ans, on achète 147/3 ordinateurs par an. La construction et le transport d’un portable consomme 250kgeCO2 (Eco-info, cf https://ferme.yeswiki.net/Empreinte/?PagePrincipale&wiki=PagePrincipale). Donc on a :

total_ordis_perso <- 250000*147/3
total_ordis_perso
## [1] 12250000

12.3 TeCO2.

4 Empreinte eCO2 due à la consommation électrique du bâtiment

Dans le document que Guy Perrière nous a passé, on a la consommation pour “Mendel+Déambulatoire+Patio+Amphis1er Cycle+Extension Prabi” : 1421000kWh. Cette consommation contiendrait la salle Omega. Donc hors salle Omega, pour le fonctionnement du bâtiment, on a :

electricite_sans_omega<-1421000 - 1179129
electricite_sans_omega
## [1] 241871

Soit 241871kWh. Le LBBE ne comprend qu’une petite partie de ce bâtiment. Disons 1/4 :

electricite_sans_omega/4
## [1] 60467.75

Convertissons en empreinte carbone :

total_electricite <- electricite_sans_omega/4*79
total_electricite
## [1] 4776952

4,78 TeCO2 pour l’électricité dans les locaux du LBBE.

5 Empreinte eCO2 due au chauffage du bâtiment

Jeremy Panel, économe de flux à l’université, nous a fourni le chiffre de 12 TeCO2 en 2018 pour la partie LBBE du Mendel, en utilisant un ratio surfacique pour faire le calcul.

total_chauffage <- 12000000

6 Empreinte eCO2 due à la biologie expérimentale

6.1 Empreinte eCO2 due aux achats de consommables

On a dépensé en 2018 240 000 euros pour les expériences, hors gros équipements. Selon http://avenirclimatique.org/micmac/sources on aurait un taux de conversion de 128g eCO2 par euro.

Soit :

total_experimental_conso <- 128*240000
total_experimental_conso
## [1] 30720000

30.7 TeCO2 pour le matériel de biologie expérimentale.

6.2 Empreinte eCO2 due à la carboglace dans les colis

On estime qu’on reçoit en moyenne 2 colis par semaine, chacun contenant 4kgs de carboglace. On suppose que la carboglace est fabriquée à partir de CO2 fossile, et on suppose qu’on reçoit des colis pendant 48 semaines. On ne compte pas le processus de fabrication de la carboglace.

total_experimental_carbo <- 48*8000
total_experimental_carbo
## [1] 384000

On compte 384 kgeCO2 dus à la carboglace des colis.

6.2.1 Total de l’empreinte eCO2 des déchets de travail expérimental

La part expérimentale du labo produit 200 poubelles de 50L /an et 100 poubelles de 25L /an de déchets biologiques. Il nous faut calculer l’empreinte eCO2 de l’incinération de ces déchets. On considère qu’une poubelle de 50L fait 10kgs, et une poubelle de 25L 5kgs. La base carbone de l’ADEME nous donne plusieurs chiffres d’empreinte carbone pour l’incinération des déchets (http://www.basecarbone.fr/fr/basecarbone/donnees-consulter/liste-element?recherche=incin%C3%A9ration). * Ordures ménagères : 362 kgeCO2/tonne * Déchets Industriels Spéciaux : 706 kgeCO2/tonne * Déchets d’Activités de Soins : 934 kgeCO2/tonne Pour référence, l’incinération du papier produit 46.6 kgeCO2/tonne, et celle de “plastique moyen” 2680 kgeCO2/tonne.

Les déchets industriels spéciaux peuvent être : * DIS organique : solvants, hydrocarbures, boues d’épuration ou Boue de curage de lagunes, d’égouts industriels, etc (déchets hospitaliers et vétérinaires)… * DIS minéral solide : cendres Refioms et mâchefers d’incinération, laitiers, poussières, amiante… * DIS minéral liquide et semi-liquides : bains de traitement de surface, acides…

On choisit d’utiliser ce chiffre de 706 kgeCO2/tonne, celui des Déchets Industriels Spéciaux.

total_experimental_incineration <- (200*10+100*5)*706
total_experimental_incineration
## [1] 1765000

L’incinération des déchets du travail expérimental provoque donc 1.765 TeCO2.

6.2.2 Total de l’empreinte eCO2 du travail expérimental au LBBE

total_experimental <- total_experimental_conso + total_experimental_carbo + total_experimental_incineration
total_experimental
## [1] 32869000

7 Total de l’empreinte eCO2 du LBBE

Au total, on a :

total <- total_voyages_avion + cluster_footprint + total_ordis_perso + total_electricite + total_emission_voitures_labo + total_co2_voiture_perso + total_experimental + total_chauffage
total
##       oui 
## 222810708

223 TeCO2 pour le LBBE, soit :

total/(147) #38 + 5 INRIA 
##     oui 
## 1515719

1.52TeCO2 par membre du LBBE par an. Pour référence, les engagements de l’UE à l’horizon 2050, qui sont aussi la quantité d’émissions soutenables par individu (sous l’hypothèse d’une allocation uniforme pour tous les humains), sont de 2TeCO2 par individu par an, vies personnelle et professionnelle incluses.

7.1 Résumé graphique de l’empreinte carbone du LBBE

empreintes <- c(total_voyages_avion, cluster_footprint, total_experimental, total_ordis_perso, total_chauffage, total_co2_voiture_perso, total_emission_voitures_labo, total_electricite, total_voyages_train)/1000000
noms_empreintes <- c("1-Avion", "2-Calcul", "3-Expérimental", "4-Ordinateurs personnels", "5-Chauffage","6-Voitures perso", "7-Voitures labo", "8-Electricité", "9-Train" )
#barplot(as.matrix(empreintes))  
library(reshape2)
library(ggplot2)

mock <- c(1,1,1,1,1,1)

empreintes_table<-data.frame(empreintes, noms_empreintes, row.names=noms_empreintes )

empreintes_table<-empreintes_table[order(empreintes_table$empreintes),]
noms_empreintes_ordered <- empreintes_table$noms_empreintes

empreintes_table<-subset(empreintes_table, select = -c(noms_empreintes) )

empreintes_table$volet <- seq_len(nrow(empreintes_table))
dat2 <- melt(empreintes_table, id.vars = "volet")


ggplot(dat2, aes(x = variable, y = value, fill = volet)) + 
  geom_col(show.legend = TRUE, aes(fill = noms_empreintes_ordered)) +
  xlab("\nLBBE, Doua") +
  ylab("Empreinte (TeCO2)\n") +
  theme(axis.title.x=element_blank(), 
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank()) 

8 Impact de décisions de réduction

Cette partie est à but illustratif et absolument pas prescriptif. Elle fournit des exemples de mesures qui nous sont passées par la tête, ce qui on l’espère permet de mieux appréhender le bilan carbone et les secteurs de production de l’empreinte.

8.1 Abandon des vols en-dessous d’une certaine distance

d_avion <- d_avion[order(d_avion$km, decreasing = TRUE),]
### add cumulative column to the data frame
d_avion[,"cum_eCO2"] <- cumsum(d_avion$eco2_Eric)
par(mar=c(5, 6, 0, 0) + 0.1)
plot(d_avion$km, d_avion$cum_eCO2/1000, ylab="Empreinte cumulative des\nvoyages au-dessus d'une distance (kgeCO2)", xlab="Distance", pch=20, col=rgb(0,0,1,0.5), xaxp=c(0,18000,18), yaxp=c(0, 110000, 11), cex=2)
grid(nx=18, ny=10)

Eviter les voyages de distance inférieure à 2000km permet d’enlever environ 30 tonnes du bilan carbone des voyages en avion, soit

100 - (d_avion[which(d_avion$km<2000)[1],"cum_eCO2"] / total_voyages_avion *100 )
## [1] 30.5258

30.5%.

Pour 1000 km, ce serait :

100 - (d_avion[which(d_avion$km<1000)[1],"cum_eCO2"] / total_voyages_avion *100 )
## [1] 19.5991

19.6%.

Et pour 500km :

100 - (d_avion[which(d_avion$km<500)[1],"cum_eCO2"] / total_voyages_avion *100 )
## [1] 10.19594

10.2%.

8.2 Parmi les missions faites en avion, combien sont pour des colloques/conférences ?

row.names(d_avion) <- 1:nrow(d_avion)

#On identifie à la main les missions pour des conférences :
conf_indices <- c(2,3,5,6,7,8,9,10,11,20,21,22,25,26,29,31,36,37,46,47,49,53,56,59,60,61,62,71,72,76,77,84,85,92,104,106,112,118)

total_voyages_conferences <- round(sum(d_avion$eco2_Eric[conf_indices])*1.086, 3)
total_voyages_conferences
## [1] 45191883

Abandonner les vols pour les missions invités permettrait d’annuler 45TeCO2 sur les 102TeCO2 dues aux voyages en avion au LBBE, soit :

total_voyages_conferences/total_voyages_avion * 100
## [1] 44.40506

44% du bilan carbone des voyages en avion.

8.3 Si le labo n’invitait que des invités venant sans avion

total_voyages_avion_invites <- round(sum(d_avion$eco2_Eric[grep ("Mission Invité", d_avion$objet_mission)])*1.086, 3)
total_voyages_avion_invites
## [1] 24374521

Abandonner les vols pour les missions invités permettrait d’annuler 24TeCO2 sur les 102TeCO2 dues aux voyages en avion au LBBE, soit :

total_voyages_avion_invites/total_voyages_avion * 100
## [1] 23.95015

24% du bilan carbone des voyages en avion.