wiki:IPSLCM5ACo2

Version 32 (modified by mmaipsl, 13 years ago) (diff)

--

IPSLCM5A et CO2 interactif

Choix du Nom pour ce couplé

JLD a choisi IPSLCM5A-C. Le nom du modèle reste IPSL-CM5A-LR dans CMOR.

Martial : Le nom IPSLCM5A-C est impossible a utilisé avec un couplé car il y a le script fait_config qui utilise ce nom pour des variables et le '-' est interdit dans un nom de variable shell.
Je propose le changement de nom : IPSLCM5A_C pour la config.
voir la sortie du shell : /work/cont003/p86manci/IPSLCM5A-C/config/shell_install_erreur:fait_config

Martial va créer une copie de travail IPSLCM5A/piControl vers IPSLCM5A/CpiControl sur le svn à ce nom.

Mise en place d'une première version

réunion du 18/11/2010 : présent Laurent Bopp, Christian Ethé, Martial Mancip.

Deux versions de couplé avec CO2 interactif pour CMIP5 sont prévues :

  • une première version avec la version IPSLCM5A avec un CO2 atmosphérique moyen (pas de transport ATM, flux océaniques et continentaux moyennés spatialement et temporellement) : comme IPSLCM4_LOOP
  • une seconde version "IPSLCM5_ESM" avec les flux de carbone spatialisés et transportés en haute fréquence (jusqu'à la demi-heure pour la surface).

Nous établissons ici la liste des modifications à apporter au couplé IPSLCM5A (modèle et scripts) :

  1. on doit rajouter la lecture d'un fichier d'émissions ff (fossil fuel),
  2. on doit récupérer les flux moyens de PISCES et d'ORCHIDEE,
  3. à la place de la lecture des concentrations IPCC_CO2 imposées, on va calculer la concentration moyenne mensuelle (ou annuelle).
  4. on doit conserver ces valeurs de co2 (une ligne par mois)
      CumulPeriod | PeriodDateBegin |   PeriodDateEnd | Monthly CO2 for Period | Previous Monthly CO2 | fossil flux | PISCES flux | ORCHIDEE NEP | ORCHIDEE LUC 
    
  5. Tests et lancement des deux simulations en PROD.

Pour mettre en place la configuration IPSLCM5A en IPSLCM5A_C modifiée,

  • Martial doit commiter les modifs modipsl présentes dans /work/cont003/p86manci/IPSLCM5A-C :
    1. mod.def ; pour la description de la configuration IPSLCM5A_C (tag de ORCHIDEE orchidee_1_9_5_1 et rev de NEMO/PISCES changée) (fait)
    2. model ; pour le rajout de la config IPSLCM5A_C et appel correct à fait_config. (fait)
    3. liens IPSLCM5A_C dans les répertoires de dépôt d'entrée IGCM sur mercure et synchro brodie (fait).
  • Christian doit
    1. commiter modeles/UTIL/fait_config; cf :
      /work/cont003/p86manci/IPSLCM5A-C/modeles/UTIL/fait_config ( fait )
    2. donner la nouvelle révision NEMO/PISCES dans mod.def IPSLCM5A_C après ce commit ( fait : rev 2509 )

fichier fuel

Le fichier "emissions" preparé par Patricia est la : http://dods.ipsl.jussieu.fr/cpipsl/ANDRES/CMIP5_gridcar_CO2_emissions_fossil_fuel_Andres_1751-2007_monthly_SC_grid1x1.txt

Une ligne par mois. Il faut utiliser la derniere valeur. Il me reste a verifier l'unité...A priori des TgC/month donc CO2 = CO2 + FF/1000/2.12 + (F orchidee + pisces)

Pour le control, on fait FF = 0 !

modifications des modèles

Les flux d'émission de CO2 dans PISCES sont écrites dans ocean.output.

        WRITE(numout,*) 'Total Flux of Carbon out of the ocean :'
        WRITE(numout,*) '-------------------- : ',t_oce_co2_flx
        WRITE(numout,*) '(GtC/yr)'

Pour l'instant ce flux de CO2 global n'est sauvé qu'en moyenne mensuelle. L'affichage du flux est dans le ocean.output du mois de décembre. On va devoir modifier PISCES pour afficher ce CO2 calculé tous les mois (à faire).
MM: récupération de ces affichages faite par lmdz_analyse_opa_out.awk.

voir /work/cont003/p86manci/IPSLCM5A-C/config/ pour les tests.

Les flux d'émission de CO2 (NEP) dans ORCHIDEE sont écrits par processus MPI dans les sorties out_orchidee_000? :

 net_co2_flux_monthly (Peta gC/month)  =   

Dans ORCHIDEE, il faut modifier la sortie du flux de co2 cumulé mensuel et imprimer le flux de LAND USE co2_fluc (moyenné par mois). Dans la version 1.9.5.1, on aura, par exemple :

  • dans out_orchidee_0000
     net cflux_prod_total_sum (Peta gC/month)  =  5.6934618773805835E-8
     GLOBAL net cflux_prod_total_sum (Peta gC/month) (Peta gC/month)  =  9.662333990224707E-8
     net_co2_flux_monthly (Peta gC/month)  =  0.003845278542203147
     GLOBAL net_co2_flux_monthly (Peta gC/month)  =  0.005059629812181452
    
  • dans out_orchidee_0001
     net cflux_prod_total_sum (Peta gC/month)  =  3.968872112844124E-8
     GLOBAL net cflux_prod_total_sum (Peta gC/month) (Peta gC/month)  =  9.662333990224707E-8
     net_co2_flux_monthly (Peta gC/month)  =  0.0012143512699783043
     GLOBAL net_co2_flux_monthly (Peta gC/month)  =  0.005059629812181452
    

Les valeurs GLOBAL net... sont donc les grandeurs sommées totales et identiques pour toutes les sorties.
MM: récupération de ces affichages faite par lmdz_analyse_stomate_out.awk.

voir /work/cont003/p86manci/IPSLCM5A-C/config/ pour les tests.

On devra donc obligatoirement modifier ces deux modèles pour créer cette version du couplé CO2.

On ne peut pas passer par les fichiers NetCDF sur les machines SX. On doit donc passer par les fichiers textes.

Le calcul de la concentration mensuelle

Il se fait dans ATM_Update

   co2_ppm = co2_ppm_prec + ( fco2_ff + t_oce_co2_flx + net_co2_flux_monthly + fco2_luc ) / 2.12

2.12 est le nombre de PetaGC / ppm.

Attention aux signes des flux : convention atmosphérique. Ils doivent être comptés positivement si ils forment une source de carbone pour l'atmosphère. Pour l'océan, on doit le vérifier :

        ! Conversion in GtC/yr ; negative for outgoing from ocean
        t_oce_co2_flx = (-1.) * t_oce_co2_flx  * 12. / 1.e15

On récupère la valeur du flux total de carbone océanique dans le fichier ocean.output :

  Cumulative total Flux of Carbon out of the ocean (PgC) :
 -------------------------------------------------------    2.017236830232874D-02

rectification :

  Cumulative total Flux of Carbon out of the ocean (PgC) :  -3.098714894423731D-03

MM: récupération de ces affichages faite par lmdz_analyse_pisces_out.awk.

voir /work/cont003/p86manci/IPSLCM5A-C/config/ pour les tests.

Pour la surface, c'est OK :

       ! CO2 flux in gC/m**2/sec (positive towards the atmosphere) is sum of:
      co2_flux(:,:) = resp_hetero(:,:) + resp_maint(:,:) + resp_growth(:,:) &
            & + (co2_fire(:,:)-co2_to_bm_dgvm(:,:))*veget_cov_max(:,:)/one_day &
            & - gpp(:,:)

A voir ensuite: les signes des flux totaux de déforestation. La NBP est IPCC est positive pour la surface.

       nbp(:)=(SUM((gpp_daily-(resp_maint+resp_growth+resp_hetero)-co2_fire) &
            &        *veget_max,dim=2)-cflux_prod_total-harvest_above)/1e3/one_day*contfrac

fichier co2.log

On fait un cat dans un fichier co2.log du SUBMIT_DIR comme indiqué ci-dessus. On doit alors récupérer chaque mois le co2_prec=co2 du mois précédent pour appliquer la formule.

La condition initiale pour le co2_prec est un nouveau paramètre dans la lmdz.card : lmdz_UserChoices_co2_init.

Tests et runs

On part de la fin du piControl2 : 31/12/2500. Le run piControl2 ici

/work/cont003/p86caub/CMIP5/modipsl/config/IPSLCM5A/piControl2

Les tests de développement sont :

  • calcul du flux, sauvegarde, mais conservation du co2 imposé + diagnostique sur le flux moyen
  • introduction du co2 moyen (pour compenser le transport du co2 dans le routage qui manque au modèle de surface).

JLD propose de tester :

  • 1 mois binaire-compatible : comparaison solver.stat, comme dans le trusting (qui tourne avec EXP00 compatible PdControl?)
    C'est fait avec les nouvelles versions des deux modèles PISCES et ORCHIDEE (CpiC00 versus CpiC01) et on a pas de diff du solver.stat.
  • puis 10 ans de piControl2 pour avoir le même modèle en CO2 pré-industriel forcé.

Les productions seront :

  • un run historique
  • un run RCP 8.5

Les étapes de développements :

  1. test de compilation Nemo avec la clé key_cpl_carbon_cycle (CE et MM) : fait dans
    /work/cont003/p86manci/CMIP5/HISTO3/config/IPSLCM5A
  2. test de run avec la clé loop sur 3 ans et les bons restarts (MM) : fait dans
    /work/cont003/p86manci/CMIP5/HISTO3/config/IPSLCM5A/historical3testLOOP et
    /dmnfs11/cont003/p86manci/IGCM_OUT/IPSLCM5A/DEVT/historical/histoTLOOP


Pour la version IPSLCM5A avec un CO2 atmosphérique moyen ( calculé offline ), il ne faut pas activer la clé key_cpl_carbon_cycle ( l'océan s'attend à recevoir dans ce cas une pco2 "spatialisée" ) (CE)

  • PISCES est modifié pour diagnostiquer le flux total de carbone océanique cumulé sur la durée du run
          t_oce_co2_flx = t_oce_co2_flx + SUM( oce_co2(:,:) * tmask_i(:,:) ) ! Cumulative Total Flux of Carbon
          IF( kt == nitend ) THEN
             !
             IF( lk_mpp )   CALL mpp_sum( t_oce_co2_flx )             ! sum over the global domain  
             t_oce_co2_flx = (-1.) * t_oce_co2_flx  * 12. / 1.e15     ! Conversion in PgC ; negative for out of the ocean
             !
          ENDIF
    
  • 2 runs tests d'une année pour vérifier que rien n'est modifié :
    • version standard de IPSCM5A :
      /scratch/cont003/p48ethe/IPSLCM5A/STD/modipsl/modeles/NEMO/TOP_SRC/PISCES/p4zflx.F90
      /scratch/cont003/p48ethe/IPSLCM5A/STD/modipsl/config/IPSLCM5A/historical
      /dmnfs10/cont003/p48ethe/IGCM_OUT/IPSLCM5A/DEVT/historical/FLXSTD
      
    • version modifiée ( diagnostique des flux de carbone ) de IPSCM5A :
      /scratch/cont003/p48ethe/IPSLCM5A/DEV/modipsl/modeles/NEMO/TOP_SRC/PISCES/p4zflx.F90
      /scratch/cont003/p48ethe/IPSLCM5A/DEV/modipsl/config/IPSLCM5A/historical
      /dmnfs10/cont003/p48ethe/IGCM_OUT/IPSLCM5A/DEVT/historical/FLXDEV
      
  • Comparaison des solver.stat
    cd /dmnfs10/cont003/p48ethe/IGCM_OUT/IPSLCM5A/DEVT/historical/
    sdiff -s FLXSTD/OCE/Debug/FLXSTD_18501201_18501231_solver.stat FLXDEV/OCE/Debug/FLXDEV_18501201_18501231_solver.stat
    

Tests fait dans CpiC00, CpiC01 et en CO2 interactif dans CpiC02 :

Test historical interactif hist02 : voir
/work/cont003/p86manci/IPSLCM5A-C/config/IPSLCM5A_C/Chistorical2
Avec le script commité dans IPSLCM5A/Chistorical, on peut restarter correctement du run de control.