wiki:IPSLCM6/IPSL-CM6A-LR

Version 181 (modified by mafoipsl, 6 years ago) (diff)

--

IPSL-CM6A-LR

Model IPSL-CM6A-LR

  • Fixed on 25 mai 2018
  • See ticket #120
  • set for curie, modification required for ada

Change Log

  • 6.1.5 : 29 juin 2018
    • LMDZ : correctif Calipso, plus de trou.
    • irene inclus
  • 6.1.4 : 14 juin 2018
    • libIGCM :
      • clean_latestPackperiod adapted for 1Y
      • norerun ajouté dans les jobs pour que le job ne se relance pas automatiquement
    • XIOS : possibilité de tourner avec PeriodLength=1M
    • NEMO : 2D ===> scalar ice variables et Reproafterrestart=y par defaut
    • LMDZ : rangement des champs 3D et 2D pour histins (facilitera les extractions de points de plantage)
    • AddNoise available (COMP/oasis.card)
  • 6.1.3 : 25 mai 2018
    • nouvelle revision LMDZ : ajout des parametres tau_gl et iflag_cycle_diurne pour AMIP
    • utilisation de la dernière version de dr2xml pour résoudre certains problèmes (nom et infos sur les axes, contournement de problèmes liés à la DR utilisée (nb de sections et ordre des sections ocean),...)
    • rangement des xml dans IGCM/CMIP6/IPSLCM6.1.3-LR/IPSL-CM6A-LR/NOM_DE_L_EXPERIENCE/MEMBRE
    • modifications sur les xml de NEMO pour modifier le nom des axes verticaux
    • utilisation d'une "DR maison" afin de garantir les sorties les plus importantes et pallier les eventuels ratés de la DR. A été validé par les composantes NEMO et ORCHIDEE (retour en cours sur des variables manquantes).
    • expériences disponibles :
      • les *_CMIP6 : piControl_CMIP6, piControl-spinup_CMIP6 and historical_CMIP6 (2009 en date de fin, documenter comment faire 2010-2014)
      • une nouvelle expérience piControl_TEST sans workflow CMIP6 pour tests qualités
    • Plus de dates dans les Restart du compte commun (1869, 1879, ...) du CM61-LR-pi-03
  • 6.1.2 : 2 mai 2018
    • ajouts diagnostics océan
    • DR2XML revus
      • XML disponibles pour piControl (500 ans) et historical
    • experiences disponibles en plus : historical_CMIP6
    • relance reproductible (N+1=+1).
      • dans opa9.card : Reproducibility_after_restart= y. To be changed manually.
      • Attention aux années bissextiles!
    • reproductibilité KO au bout de 57 ans
    • passage à la révision 3321 de LMDZ pour inclure les sorties par défaut des aérosols pour vérification des forçages. Les aérosols plume sont aussi intégrés
  • 6.1.1 : 13 avril 2018
    • compression (level=4) sur les fichiers IPSL Output/MO
    • ping modifiés avec des diagnostics en plus
    • reproductibilité KO au bout de 39 ans
    • piControl_CMIP6 OK
    • DR2XML à revoir (axes netcdf non géo-référencé)
  • 6.1.0 : 29 mars 2018
    • pas de compression sur les fichiers IPSL Output/MO
    • reproductibilité KO au bout de 1 ou 2 ans
    • piControl-spinup_CMIP6 OK

Documentation

Rappel du lien vers la documentation: http://forge.ipsl.jussieu.fr/igcmg_doc/wiki/Doc

Environment

curie

  • Compilateur 2017 (4h de compilation ...) à utiliser avec ces commandes à passer IMPERATIVEMENT avant de compiler ou à mettre dans votre .bashrc :
    module purge
    . /ccc/cont003/home/igcmg/igcmg/MachineEnvironment/curie/env_intel17.0.2_curie
    . /ccc/cont003/home/igcmg/igcmg/MachineEnvironment/curie/env_netcdf4.3.3.1_curie
    
    
  • RAPPEL sur les commandes à passer pour installer le modèle :
    mkdir YOUR_DIRECTORY ; cd YOUR_DIRECTORY
    svn_ano # svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl
    cd modipsl/util
    ./model IPSLCM6.1.5-LR 
    # si c'est la premiere fois : il faut trouver les 2 mots de passe ORCHIDEE et NEMO. 
    # Pour ORCHIDEE : voir la session "SVN et ORCHIDEE" du cours : https://forge.ipsl.jussieu.fr/orchidee/wiki/GroupActivities/Training
    # Pour NEMO : voir "Get NEMO code" là : https://www.nemo-ocean.eu/ qui pointe sur : http://forge.ipsl.jussieu.fr/nemo/wiki/Users.
    # Répondre (RETURN) puis le user puis le mot de passe.
    cd ../config/IPSLCM6
    gmake ... # attendre 4h . Pour garder la trace de la compilation : gmake 2>&1|tee compile.out
    ...
    cp EXPERIMENTS/IPSLCM/piControl_CMIP6/config.card . 
    vi config.card # modifications dates, restart, ... Voir checklist plus loin.
    ../../libIGCM/ins_job
    ... # répondre en donnant la sous-imputation cmip6 concernée.
    

Checklist

  • SE DEGAGER DU TEMPS POUR LE CONTROLE QUALITE ET LES EVENTUELS CORRECTIFS QUI RECLAMENT DE LA MINUTIE
  • Avoir l'autorisation de commencer son MIP
  • Vérifier la nomenclature de la simulation : https://search.es-doc.org/
  • Remplir la page des simulations là : CMIP6 IPSL
  • Choisir un nom unique (en prenant le préfixe CM61-LR) et le signaler sur la page MIP. Voir plus loin.
  • Vérifier le protocole : forcages, état de redémarrage choisi.
  • Décrire l'expérience succinctement sur la page MIP. Voir plus loin.
  • Demander rendez-vous à Sébastien Denvil et Arnaud Caubel pour construire et vérifier la disponibilité des fichiers DR2XML là : IGCM/CMIP6/IPSLCM6.1.4-LR/IPSL-CM6A-LR/NOM_DE_L_EXPERIENCE/MEMBRE
    • commencer à remplir les éléments descriptifs de la simulation en prenant exemple sur:

ciclad:/home/sdipsl/DataRequest.CMIP6/simulationSettings/settings_AOGCM_piControl_r1.py

  • Organiser de quoi faire une peer review avant le lancement de chaque expérience. Avec les personnes impliquées dans le MIP et avec, au moins, une personne du groupe plate-forme.
  • A faire systématiquement :
    • config.card
      • Mettre PROD dans config.card
      • S'assurer que ExpType dans config.card contienne le mot clé CMIP6 (dans le cas inverse la simulation part sans le workflow CMIP6 par exemple pour un test)
      • Mettre à jour Member=rXi1p1f1 (defaut : r1i1p1f1 A CHANGER)
      • Préciser DateBegin=1850-01-01, DateEnd=XXXX-12-31
      • Indiquer et documenter les Restart pris.
        • Préciser OverRule=y si toutes les composantes repartent d'une même simu à la même date.
        • Préciser, une fois si OverRule=y, ou pour chaque composante RestartDate=....-12-31, RestartJobName=CM61-pi... et RestartPath=/.../IPSLCM6/PROD/piControl
        • Repartir d'un état de redémarrage rebuildé (pour les composantes océan : OCE, ICE et MBG) et mis sur le compte commun. Voir : IGCM/RESTART/IPSLCM6/PROD/*/*
          • Au 15/6/2018 sont disponibles :
            • CM61-pre-pi-01 1849
            • CM61-LR-pi-03 18691231 18791231 18891231 18991231 19091231 19191231 19291231 19391231 19491231 19591231 19691231 19791231 19891231 19991231 20091231 20191231 20291231 20391231 20491231 20591231 20691231 20791231 20891231 20991231 21091231 21191231 21291231 21391231 21491231 21591231 21691231 21791231 21891231 21991231 22091231 22191231 22291231
        • Enlever le HF pour ATM si on ne souhaite pas conserver les données à 3 heures pour faire du ORCHIDEE offline par la suite [ATM] WriteFrequency="1M HF"
      • COMP :
        • vérifier 2 fois l'existence des fichiers dr2xml
        • vérifier 2 fois que les cards COMP/opa9.card, COMP/lmdz.card, COMP/orchidee.card utilisent ces fichiers dr2xml et ajuster leurs chemins si nécessaire
    • Job
      • Mettre la sous-imputation du MIP concerné
        • Pour aerchemmip : checmip6 ou strcmip6, pour les autres : c4mcmip6 , cfmcmip6 , cm5cmip6 , daacmip6 , dcpcmip6 , dekcmip6 , dmrcmip6 , fafcmip6 , geocmip6 , gmmcmip6 , hircmip6 , ismcmip6 , ls3cmip6 , lumcmip6 , omicmip6 , pmicmip6 , rfmcmip6 , solcmip6 ou volcmip6
      • Pour connaître les sous-imputations cmip6 de votre login groups
        • Pour connaître les logins de toutes les sous-imputations cmip6 : getent group | grep cmip6: | cut -d : -f 1,4
    • Préciser la priorité intra CMIP6 :
      • -U high pour les simulations longues seulement (PiControl et PMIP)
      • -U medium par défaut
      • -U low pour les simulations en surbooking
    • Mettre PeriodNb=10 (ou 5) dans Job_xxx
    • Mettre postProcessingStopLevel=2 pour que le job principal s’arrête dès qu'un post-processing job s'est planté (=3 quand atlas seront OK)
    • Attention, pour les simulations type historical, vous avez besoin de monitorer les forçages liés aux aerosols dans votre expérience, il faut appliquer les patchs suivants
      • sur le fichier modeles/LMDZ/DefLists/file_def_histmth_lmdz.xml : http://web.lmd.jussieu.fr/trac/changeset?reponame=&new=3321%40LMDZ6%2Fbranches%2FIPSLCM6.0.15&old=3318%40LMDZ6%2Fbranches%2FIPSLCM6.0.15
      • sur le fichier COMP/lmdz.card : rajouter la liste de variables (topswad, toplwad, topswai, toplwai, topswad0, toplwad0, solswad, sollwad, solswai, sollwai, solswad0, sollwad0) dans le bloc [Post_1M_histmth] :
        [Post_1M_histmth]
        Patches= ()
        GatherWithInternal = (lon, lat, presnivs, time_counter, time_centered, time_centered_bounds, aire)
        TimeSeriesVars2D = (...,topswad, toplwad, topswai, toplwai, topswad0, toplwad0, solswad, sollwad, solswai, sollwai, solswad0, sollwad0,...)
        ChunckJob2D = NONE
        TimeSeriesVars3D = (temp, theta, ovap, geop, vitu, vitv, vitw, pres, rneb, rhum, paprs, ec550aer, concoa, concbc, concso4, concss, concdust)
        ChunckJob3D = 100Y
        Seasonal=ON
        
      • dans le fichier POST/monitoring01_lmdz.cfg, rajouter les lignes :
        topswai_forcing        | "topswai"               | "" | "topswai[d=1]"            | "AIE at TOA SW"                           | "W/m^2" | "aire[d=1]"
        solswai_forcing        | "solswai"               | "" | "solswai[d=1]"            | "AIE at SRF SW"                           | "W/m^2" | "aire[d=1]"
        topswad_forcing        | "topswad"               | "" | "topswad[d=1]"            | "ADE at TOA SW"                           | "W/m^2" | "aire[d=1]"
        solswad_forcing        | "solswad"               | "" | "solswad[d=1]"            | "ADE at SRF SW"                           | "W/m^2" | "aire[d=1]"
        topswad0_forcing       | "topswad0"              | "" | "topswad0[d=1]"           | "ADE at TOA SW ClearSky"                  | "W/m^2" | "aire[d=1]"
        solswad0_forcing       | "solswad0"              | "" | "solswad0[d=1]"           | "ADE at SRF SW ClearSky"                  | "W/m^2" | "aire[d=1]"
        toplwai_forcing        | "toplwai"               | "" | "toplwai[d=1]"            | "AIE at TOA LW"                           | "W/m^2" | "aire[d=1]"
        sollwai_forcing        | "sollwai"               | "" | "sollwai[d=1]"            | "AIE at SRF LW"                           | "W/m^2" | "aire[d=1]"
        toplwad_forcing        | "toplwad"               | "" | "toplwad[d=1]"            | "ADE at TOA LW"                           | "W/m^2" | "aire[d=1]"
        sollwad_forcing        | "sollwad"               | "" | "sollwad[d=1]"            | "ADE at SRF LW"                           | "W/m^2" | "aire[d=1]"
        toplwad0_forcing       | "toplwad0"              | "" | "toplwad0[d=1]"           | "ADE at TOA LW ClearSky"                  | "W/m^2" | "aire[d=1]"
        sollwad0_forcing       | "sollwad0"              | "" | "sollwad0[d=1]"           | "ADE at SRF LW ClearSky"                  | "W/m^2" | "aire[d=1]"
        
      • Important : ce patch implique un double appel au rayonnement et pénalise donc les performances en temps de calcul du modèle
  • Enregistrement des expériences sur svn CMIP6 là : browser:CMIP6
    • Exemple de différences entre deux simulations DECK : View Changes ...
    • Mode d'emploi pour créer un répertoire dédié qui sera enregistré
      > cp -pr CM61-MASIMU CM61-MASIMU-POUR-COMMIT # ménage dans ce répertoire pour ne garder que config.card COMP, PARAM, DRIVER et POST
      > svn import CM61-MASIMU-POUR-COMMIT svn+ssh://MONLOGINDEVSURFORGE@forge.ipsl.jussieu.fr/ipsl/forge/projets/igcmg/svn/CMIP6/MONMIP/CM61-MASIMU
      

Vérifications en cours de simulation

  • Pendant une simulation, il faut la suivre :
    • Faire systématiquement un intermonitoring à 10 ans avec au moins le piControl CM61-LR-pi-03 (dsm) pour documenter/vérifier l'expérience lancée
    • Vérifier les monitoring et lancer qq intermonitoring pour vérifier que la simu est bien celle voulue
    • Lancer les atlas CLIMAF
    • En cours de simulation lancer régulièrement les vérifications des fichiers au format CMIP6 avec la séquence suivante:
      • Charger l'environment virtuel python donnant accès aux outils et aux variables d'environnement nécessaires:
        module load datadir/gencmip6
        export PATH=$GENCMIP6_ALL_CCCWORKDIR/miniconda/bin:$PATH
        source activate cmip6
        
      • Définir le chemin de la simulation à tester (voir exemple ci-dessous)
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        
      • Définir le chemin de vos run.card et config.card (voir exemple ci-dessous)
        CARD_FILES=$GENCMIP6_HOME/IPSLCM6.1.2/modipsl/config/IPSLCM6/CM61-LR-1pctCO2-01/
        
      • Définir le répertoire à utiliser pour conserver les logs si des erreurs sont rencontrées. Conserver les logs de préférence à la base des fichiers netCDF CMIP6 (voir exemple ci-dessous):
        LOGDIR=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/
        
      • Si vous rencontrer des erreurs sur les fichiers netCDF, communiquer les logs à Guillaume Levavasseur (glipsl@…) et/ou Sébastien Denvil (sdipsl@…)
      • Appliquer XIOFileChecker pour vérifier que XIOS a bien produit ce que les XML indiquent:
        • Veillez à ce que les attributs suivant soient bien renseignés dans la section UserChoices de votre config.card : ExperimentName, LongName, Member
          XIOFileChecker $SIMULATION --card $CARD_FILES -l $LOGDIR
          
        • Erreurs connues que vous rencontrerez peut-être:
          • Pour la version IPSLCM6.1.3 et antérieures, la variable intpcalcite (Omon) n'est pas sortie par XIOS mais se trouve par erreur dans les XML
          • Pour la version IPSLCM6.1.3 et antérieures, les variables Odec sont manquantes en sorties XIOS, c'est une erreur définitive.
      • Appliquer nctime overlap pour vérifier qu'il n'y a pas de recouvrement entre les dates des noms de fichiers:
        nctime overlap $SIMULATION --card $CARD_FILES -l $LOGDIR
        
      • Erreurs connues que vous rencontrerez peut-être:
        • Les variables *calipso peuvent présenter des overlaps complets. C'est une erreur LMDZ en cours de résolution. Laurent Fairhead proposera une procédure de correction en bocal.
      • Appliquer nctime axis pour vérifier les axes des temps des fichiers netCDF. nctime axis peut être long si vous avez beaucoup de fichiers haute fréquence (sub-daily), il est recommandé de faire lancer la commande en batch avec un minimum de 10 processes en parallèles. Un example de script batch est disponible ici : batch_nctime_axis.sh.
        nctime axis $SIMULATION --card $CARD_FILES --set-inc dec=1Y --ignore-errors 004 -l $LOGDIR
        
        • Erreurs connues que nous ignorons sciemment avec les options utilisées :
          • Les fichiers décennaux (fréquence = "dec") ne comportent pas le bon incrément temporel en sortie d'XIOS (1 an au lieu de 10), pour vérifier les fichiers avec un incrément d'un an nous utilisons --set-inc dec=1Y
          • Pour la version IPSLCM6.1.3 et antérieures, plusieurs fichiers instantanés présentent par erreur des "time_bounds", les fichiers seront corrigés. Pour ignorer cette erreur nous utilisons --ignore-errors 004
        • Erreurs connues que vous pourriez rencontrer
          • Pour la version IPSLCM6.1.2 et antérieures, les fichiers *subhr* non-splités sont très lourd. Ils peuvent générer une erreur mémoire de Python car l'axe des temps est très gros. Si c'est le cas, pour ignorer ces fichiers ajouter --exclude-file ".*subhr.*"
          • Les fichiers sous-horaires (fréquence = "subhrPt") de la table CMIP "Esubhr" comporte l'incrément temporel natif de IPSL-CM6, c'est-à-dire 15min. Par défaut, nctime considère les fréquences "subhr" avec un incrément de 30min. Pour vérifier les fichiers "Esubhr" avec un incrément de 15min, vous devez ajouter --set-inc subhrPt=15m.
    • En fin de simulation, relancer la séquence précédente (XIOFileCheker + nctime overlap + nctime axis)
    • Appliquer PrePARE pour vérifier la conformité des métadonnées avec les spécification CMIP6:
      PrePARE $SIMULATION -l $LOGDIR
      
      • Erreurs connues que vous rencontrerez peut-être:
        • Les erreurs dates dans le filename relevées par PrePARE vont souvent de pair avec les fichiers dont l'axe des temps à une erreur (cf. résultat de nctime axis). La résolution de l'axe des temps solutionne PrePARE dans la majorité des cas.
        • Les tables CMIP "maison" nommée HOME* génèrent plusieurs erreurs PrePARE. Ignorer les fichiers correspondant pour le moment.
        • Certains fichiers comporte la table _Nonemon_ inconnu de la DR et donc de PrePARE. C'est une erreur de XML en cours de résolution.
      • Tous les outils précédents dispose d'un multiprocessing intégré. 4 processes en parallèles sont définis par défaut. Ne pas hésiter à définir un plus grand nombre de processes en ajoutant l'option --max-processes NB_PROCESS disponible pour chaque outil.
    • Pour retrouver votre environnement, désactivez l'environnement Python:
      source deactivate
      
  • En fin simulation, il faut :
    • Corrigez les erreurs connues:
      • En cas d'axe des temps incorrect avec l'erreur 004 : la variable time_bnds est inutile pour une donnée "instantanée" et peut porter à confusion. Contacter Guillaume L pour correction.
      • En cas d'axe des temps incorrect avec l'erreur 003b : la date théorique de fin de l'axe ne correspond pas à la date de fin de la période indiquée par le filename. AVANT DE CORRIGER, contacter Guillaume L. pour vérifier que la procédure suivante est bien adaptée. Le fichier nécessite alors d'être renommé. Pour ce faire utiliser la procédure suivante en prenant soin de modifier les deux premières lignes en lien avec votre simulation:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        CARD_FILES=$GENCMIP6_CCCWORKDIR/IPSLCM6.1/IPSLCM6.1.2-T20180430/modipsl/config/IPSLCM6/CM61-LR-1pctCO2-01
        # Creation d'une sauvegarde des fichiers (un peu long)
        cd $SIMULATION
        mkdir bkp
        for f in $(cat ../nctime-axis-20180615-163616.log | grep ".nc$"); do
            find $SIMULATION -type f -name $f >> a_corriger.txt
        done
        for f in $(cat a_corriger.txt); do
            cp $f bkp/.
        done
        # Correction avec nctime
        for f in $(cat a_corriger.txt); do
            nctime axis $f --card $CARD_FILES --ignore-errors 004 -w
        done
        # Vérification de la correction: le diagnostic doit cette fois-ci revenir "vert"
        for f in $(cat a_corriger.txt); do
            nctime axis $f --card $CARD_FILES --ignore-errors 004
        done
        
      • Dans certains fichiers, à cause d'une erreur dans Data Request, la casse de l'attribut global :realm = "ocnBgChem" ; est erronée. Il doit être remplacé par :realm = "ocnBgchem" ;. Pour cela appliquer la procédure suivante en prenant soin de modifier la première en ligne avec le chemin de votre simulation:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        for file in $(find $SIMULATION -type f \( -name "*_Omon_*.nc" -o -name "*_Oday_*.nc" -o -name "*_Oyr_*.nc" \)); do
            realm=$(ncdump -h ${file} | grep realm | cut -d '"' -f 2)
            if [[ ${realm} = *"ocnBgChem"* ]]; then
                new_realm=$(echo "${realm/ocnBgChem/ocnBgchem}")
                echo "Replace \"${realm}\" by \"${new_realm}\" in ${file}"
                ncatted -O -a realm,global,m,c,"${new_realm}" ${file}
            fi
        done
        
      • Il manque certains attributs globaux netCDF dans les fichiers des simulations qui n'ont pas de "parent" (ex. piControl, piControl-spinup, etc.). Pour corriger cela appliquer la procédure suivante en prenant soin de modifier la première en ligne avec le chemin de votre simulation. Modifier également la valeur des attributs EXPID et model_version en suivant l'exemple ci-dessous:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/piControl-spinup/CM61-pre-pi-01/CMIP6/
        for file in $(find $SIMULATION -type f -name "*.nc"); do
            echo "Process: ${file}"
            if ! ncdump -h ${file} | grep -q ":branch_method ="; then
                ncatted -O -a branch_method,global,c,c,"none" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":branch_time_in_child ="; then
                ncatted -O -a branch_time_in_child,global,c,c,"N/A" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":branch_time_in_parent ="; then
                ncatted -O -a branch_time_in_parent,global,c,d,0. ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":CMIP6_CV_version ="; then
                ncatted -O -a CMIP6_CV_version,global,c,c,"cv=6.2.3.5-2-g63b123e" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":dr2xml_md5sum ="; then
                ncatted -O -a dr2xml_md5sum,global,c,c,"00e1a4f623b35a33620b9828c66bd1c8" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":EXPID ="; then
                ncatted -O -a EXPID,global,c,c,"piControl-spinup" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":model_version ="; then
                ncatted -O -a model_version,global,c,c,"6.1.1" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":parent_activity_id ="; then
                ncatted -O -a parent_activity_id,global,c,c,"N/A" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":parent_experiment_id ="; then
                ncatted -O -a parent_experiment_id,global,c,c,"N/A" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":parent_mip_era ="; then
                ncatted -O -a parent_mip_era,global,c,c,"N/A" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":parent_source_id ="; then
                ncatted -O -a parent_source_id,global,c,c,"N/A" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":parent_time_units ="; then
                ncatted -O -a parent_time_units,global,c,c,"N/A" ${file}
            fi
            if ! ncdump -h ${file} | grep -q ":parent_variant_label ="; then
                ncatted -O -a parent_variant_label,global,c,c,"N/A" ${file}
            fi
        done
        
      • Il manque un attribut coordinates pour la variable area dans certains fichiers océan. Pour corriger cela appliquer la procédure suivante en prenant soin de modifier la première en ligne avec le chemin de votre simulation:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        for file in $(find $SIMULATION -type f -name "*.nc"); do
            if ncdump -h ${file} | grep -q "float nav_lat(y, x) ;" && ncdump -h ${file} | grep -q "float nav_lon(y, x) ;" && ncdump -h ${file} | grep -q "float area(y, x) ;"; then
                if  ncdump -h ${file} | grep -v -q "area:coordinates = "; then
                    echo "Process: ${file}"
                    ncatted -O -a coordinates,area,o,c,"nav_lon nav_lat" in.nc
                fi
            fi
        done
        
      • Avec IPSL-CM6.1.3 ou antérieur, la dimension décrivant les passages océaniques est une liste d'entiers au lieu d'une liste de noms des passages. Cela affecte la variable mfo uniquement. Pour corriger cette erreur, appliquer la procédure suivante en prenant soin de modifier la première ligne avec le chemin de votre simulation:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        for file in $(find $SIMULATION -type f -name "mfo_*"); do
            if ncdump -h ${file} | grep -q "float mfo(time, section) ;"; then
                cp ${file} ${file}.corr
                chmod u+w ${file}.corr
                ncks -v mfo ${file}.corr ~/out.nc
                ncrename -d section,line ~/out.nc ~/out2.nc
                ncks -O -v mfo ~/out2.nc ${file}.corr
                ncks -A -v sector $GENCMIP6_ALL_CCCWORKDIR/references/OCEAN_PASSAGES.nc ${file}.corr
                ncatted -O -a coordinates,mfo,m,c,"sector" ${file}.corr
                rm -fr ~/out.nc ~/out2.nc
                mv ${file}.corr ${file}
            fi
        done
        
      • Avec IPSL-CM6.1.3 ou antérieur, la dimension décrivant les PFTs continentaux est une liste d'entiers au lieu d'une liste de noms des PFTs. Cela affecte la variable landCoverFrac uniquement. Pour corriger cette erreur, appliquer la procédure suivante en prenant soin de modifier la première ligne avec le chemin de votre simulation:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        for file in $(find $SIMULATION -type f -name "landCoverFrac_*"); do
            if ncdump -h ${file} | grep -q "float veget(veget) ;"; then
                ncrename -d veget,type ${file} ${file}.corr
                ncks -A -v sector $GENCMIP6_ALL_CCCWORKDIR/references/PFTs.nc ${file}.corr
                ncatted -O -a coordinates,landCoverFrac,m,c,"sector" ${file}.corr
                mv ${file}.corr ${file}
            fi
        done
        
      • La variable rld n'a pas le bon signe. Pour corriger cette erreur, appliquer la procédure suivante en prenant soin de modifier la première ligne avec le chemin de votre simulation:
        SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
        for file in $(find $SIMULATION -type f -name "rld_*.nc"); do
            val=$(ncks -H -d time,0 -d presnivs,0 -d lat,0 -d lon,0 -v rld ${file} | grep rld | cut -d "=" -f 6)
            if [[ $(echo "${val} <= -1" | bc) -eq 1 ]] ; then
                tmpfile=$(echo ${file/.nc/.nc.tmp})
                ncap2 -v -s 'rld=-1.0f*rld;ps=ps;time_bounds=time_bounds;klev=klev;bnds=bnds;b=b;b_bnds=b_bnds;ap=ap;ap_bnds=ap_bnds;' ${file} ${tmpfile}
                mv ${tmpfile} ${file}
            fi
        done
        
    • Donner les droits en écriture sur vos fichiers à Guillaume L. et Sébastien D. pour migration dans l'espace partagé CMIP6. Pour cela exécuter les deux commandes suivante en modifiant la première ligne avec le chemin de votre simulation:
      SIMULATION=$GENCMIP6_CCCWORKDIR/IGCM_OUT/IPSLCM6/PROD/1pctCO2/CM61-LR-1pctCO2-01/CMIP6/
      setfacl -Rm u:levavasg:rwX,u:p86denv:rwX $SIMULATION
      setfacl -Rdm u:levavasg:rwX,u:p86denv:rwX $SIMULATION
      
    • Mettre à jour le Google Sheet sur le suivi des simulations: ici
  • Réunions type bocal régulières pour lancer ensemble les nouvelles simulations.
    • 16/03/2018 : création de cette page et liste des dernières actions
    • 23/03/2018 : 1e réunion bocal, explication du workflow (voir image suivante)
    • 18/04/2018 : 2e réunion bocal
    • 02/05/2018 : 3e réunion bocal : XML pour 1pctCO2 (150 ans) et abrupt4xCO2 (300 ans)
    • 09/05/2018 : 4e réunion bocal
    • 17/05/2018 : préparation des simulations à lancer avec 6.1.2 :
    • 24/05/2018 : préparation des simulations à lancer avec 6.1.3. Création tableau de travail collectif : doc : commentaires possibles
    • 31/05/2018 : simulations à lancer, contrôle qualité en direct des simulations de chacun
    • 07/06/2018 : poursuite du contrôle qualité en direct, discussion sur bouchage des trous, préparation 6.1.4
    • 14/06/2018 : poursuite suivi des simulations, y compris irene
    • 21/6/2018 : panique après maintenance : accès aux répertoires exemples et certains résultats
    • 28/6/2018 : suivis des simus en machine, à lancer et contrôle qualité

Quelques questions ?

Comment faire une simulation de sensibilité hors WorkFlow CMIP6

  • Les différences entre le piControl_CMIP6 et piControl_TEST vues par svn :
    • Lien vers toutes les différences : entre piControl avec et sans Workflow CMIP6
      • Dans les card :
        • Plus de fichier dr2xml
        • Plus de restart XIOS
      • Dans config.card :
        • Enlever _CMIP6 dans ExpType
      • Changer le nombre de tâches MPI de XIOS
    • Refaire le job (ins_job) pour prendre en compte le nouveau nombre de coeur

Procédure pour finir un historical

Pour un historical CMIP6, il faut soumettre à la main pack_output.job.

Vous trouverez ici la documentation du lancement d'un pack_output manuellement: http://forge.ipsl.jussieu.fr/igcmg_doc/wiki/DocGmonitor#RestartPack_output

Utilisez les paramètres suivants.

libIGCM=${libIGCM:=::modipsl::/libIGCM} # path of the libIGCM library

MASTER=${MASTER:=curie} # machine on which you work

DateBegin=${DateBegin:=20100101} # start date of the period to be packed

DateEnd=${DateEnd:=20141231} # end date of the period to be packed

PeriodPack=${PeriodPack:=5Y} # pack frequency

Procédure pour dépasser un hgardfou

Il peut arriver que le modèle atmosphèrique plante en simulant des températures hors d'un intervalle de validité. Dans ce cas là, le modèle se plantera avec un message du type

 i,k,temperature,lon,lat,pourc ter,lic,oce,sic =           2          15
   421.113420631975        75.0000000000000        36.7605633802817
   1.00000000000000       0.000000000000000E+000  0.000000000000000E+000
  0.000000000000000E+000
 in abort_physic
 Stopping in physiq
 Reason =
 Plantage hgardfou

 Houston, we have a problem, ierr =            1

On peut dépasser ce plantage par un effet papillon sur les fichiers restart du coupleur ainsi :

  • à partir de IPSLCM6 6.1.4 et en mettant ByPass_addnoise_sst= y dans COMP/oasis.card. Attention! Il faut ajouter la sauvegarde du fichier sstoc modifié pour pouvoir rejouer la simulation.
  • selon la procédure ci-dessous (pour 612 613) :
    # On se place dans le répertoire contenant les fichiers restart CPL de la simulation qui a planté
    # ici c'est la simulation CM61-LR-XXXX
    cd /.../scratch/.../IGCM_OUT/IPSLCM6/PROD/.../CM61-LR-XXXX/CPL/Restart/
    # On sauvegarde le fichier restart à modifier (au cas où ...)
    cp CM61-LR-XXXX_19941231_sstoc.nc CM61-LR-XXXX_19941231_sstoc.nc.orig
    # On n'oublie pas de modifier les droits sur le fichier à modifier, la procédure va ré-écrire dedans
    chmod 644 CM61-LR-XXXX_19941231_sstoc.nc
    # On rajoute un léger bruit sur la SST du restart pour que la simulation parte sur une trajectoire légèrement différente
    /ccc/cont003/home/igcmg/igcmg/Tools/curie/bin/AddNoise CM61-LR-XXXX_19941231_sstoc.nc O_SSTSST 0.01
    # On peut maintenant relancer la simulation par la procédure habituelle ...
    

Le workflow

Remplissage de curie

  • Lien vers le fichier détaillant la prévision d'occupation de la machine : commentaires possibles
  • A retenir :
    • Installer en machine dès que possible les simulations longues : piControl et PMIP
    • Etre prêts à lancer les simulations courtes et 100-200 ans
    • Lancer les simulations dès que possible en surveillant l'occupation :/ccc/store/cont003/gencmip6/p86fair/IGCM_OUT/IPSLCM6/PROD/abrupt-2xCO2/
      • Au delà de 20 000 coeurs d'utilisation, se mettre en low
    • En cas de besoin mettre quelques simulations MR en forcé

  • Pour surveiller le nombre de simus en machine ccc_mstat -f | grep cmip6 | grep CM61 | awk -v OFS='\t\t' '{print substr($2,1,7), substr($3,1,8), $9, $14}'
  • Pour visualiser la consommation cd /ccc/cont003/home/gencmip6/oboucher/CONSO ; python conso.py

Quality check

6.1.5 29 juin 2018

RAS :

6.1.4 : 14 juin 2018

RAS :

  • 1D+1D pas égale à 5D, 5D+5D égale 1M, 1M +1M =1Y sur période de 2Y.
  • reproductibilité de 6.1.3 : OK

6.1.3 : 25 mai 2018

Voir détails du contrôle qualité là : http://wiki.ipsl.jussieu.fr/Pole/ESCI/GT/IPSLCM6/ControleQualiteTechnique (Accès Intranet)

Résultats des tests pour IPSLCM6.1.3 : 25 mai 2018

  • reproductibilité de 6.1.2 : OK
Configuration IPSL-CM6-LR
Critère contrôlé Repro piControl (A1C=A2C) Restart (A1C=A3C) +1=+1 (A1C=A4C) Repro historique (H1C=H2C) Ada Couplage
Résultats OK OK OK
Commentaires toujours souci à plusieurs années) Toujours pas bon pour 1D+1D+...=5D Need in COMP/opa9.card Reproducibility_after_restart= y

6.1.2 : 27 avril 2018

Voir détails du contrôle qualité là : http://wiki.ipsl.jussieu.fr/Pole/ESCI/GT/IPSLCM6/ControleQualiteTechnique (Accès Intranet)

Résultats des tests pour IPSLCM6.1.2 : 27 avril 2018

  • reproductibilité de 6.1.1 : OK
Configuration IPSL-CM6-LR
Critère contrôlé Repro piControl (A1C=A2C) Restart (A1C=A3C) +1=+1 (A1C=A4C) Repro historique (H1C=H2C) Ada Couplage
Résultats OK OK OK
Commentaires Différences au bout de 57 ans ... Toujours pas bon pour 1D+1D+...=5D Need in COMP/opa9.card Reproducibility_after_restart= y

--

Configuration LMDZOR
Critère contrôlé Curie Repro (A1C=A2C) Restart (A1C=A3C) +1=+1 (A1C=A4C) Nb de MPI-OMP (A1C=A5C) Restart Debug(B1C=B2C)
Résultats
Commentaires
Critère contrôlé Ada Repro (A1A=A2A) Restart (A1A=A3A) +1=+1 (A1A=A4A) Nb de MPI-OMP (A1A=A5A) Restart Debug(B1A=B2A)
Résultats
Commentaires

--

Configuration eORCA1_LIM3_PISCES
Critère contrôlé Curie Repro (A1C=A2C) Restart (A1C=A3C) +1=+1 Nb de MPI (A1C=A4C) Debug Ada
Résultats
Commentaires

6.1.1 : 13 avril 2018

Voir détails du contrôle qualité là : http://wiki.ipsl.jussieu.fr/Pole/ESCI/GT/IPSLCM6/ControleQualiteTechnique (Accès Intranet)

Résultats des tests pour IPSLCM6.1.1 : 13 avril 2018

Configuration IPSL-CM6-LR
Critère contrôlé Repro piControl (A1C=A2C) Restart (A1C=A3C) +1=+1 (A1C=A4C) Repro historique (H1C=H2C) Ada Couplage
Résultats KO
Commentaires Voir : CM61B-pi-T???-1?. Différences au bout de 39 ans. 1/3600 mois 1M+1M+... = 1Y KO mais on va y arriver!!!

6.1.0 : 29 mars 2018

Voir détails du contrôle qualité là : http://wiki.ipsl.jussieu.fr/Pole/ESCI/GT/IPSLCM6/ControleQualiteTechnique (Accès Intranet)

Résultats des tests pour IPSLCM6.1.0 : 29 mars 2018

Configuration IPSL-CM6-LR
Critère contrôlé Repro piControl (A1C=A2C) Restart (A1C=A3C) +1=+1 (A1C=A4C) Repro historique (H1C=H2C) Ada Couplage
Résultats KO OK KO KO OK
Commentaires NON 1 simu /4 pas reproductible sur curie. Voir CM61-pi-T???-1? différence au bout de 4 12 14 mois, avec et sans ozone v1 et v2

Simulations avec modèle IPSLCM6.1.2 : 27 avril 2018

Figure pour comprendre :

  • CM61-LR-pi-03 et CM61-pre-pi-01 se superposent. CM61-LR-pi-01 et CM61-pre-pi-01 ne se superposent pas.
  • CM61-LR-hist-01 démarre de 1870 de CM61-LR-pi-01

piControl

Num PrioritéNom Résumé Membre Personne Description Page d'information Hermes pour retrouver les infos : mise en place, sorties sur curie, etc ...
1.1 H CM61-LR-pi-03 piControl 3 r1i1p1f1 Marie-Alice prend la suite de CM61-pre-pi-01, 1849, (compte commun) Reproducibility_after_restart= y , BUT : se superpose avec CM61-pre-pi-01 sur 1850-... , STOP si différence dans solver.stat , STOP 1907 ==> CM61-pre-pi-01 refaite à partir de 1899. OK en 1907, Ajout de <variable id="recv_field_timeout" type="double">3000.0</variable> dans PARAM/iodef.xml pour refaire 1907. ATTENTION : sur espace DSM et pas CMIP6 https://hermes.ipsl.upmc.fr/static/simulation.detail.html?uid=f1327c81-3357-4375-a810-914da4798d5b

Simulations avec modèle IPSLCM6.1.1 : 13 avril 2018

piControl

Num PrioritéNom Dépendances Membre Personne Description Page d'information Hermes pour retrouver les infos : mise en place, sorties sur curie, etc ...
1.1 H CM61-LR-pi-01 prend la suite de CM61-pre-pi-01 r1i1p1f1 Sébastien piControl 1
1.2 H CM61-LR-pi-02 prend la suite de CM61-pre-pi-02 r1i1p1f1 Laurent piControl 2
2 H CM61-LR-hist-01 historical partant de CM61-LR-pi-01 en 1869-12-31, soit après 20 ans de piControl Thibaut historical

Simulations avec modèle IPSLCM6.1.0 : 29 mars 2018

piControl spinup

Num PrioritéNom Dépendances Membre Personne Description Page d'information Hermes pour retrouver les infos : mise en place, sorties sur curie, etc ...
1.1 H CM61-pre-pi-01 prend la suite de CM6015S-pi-REDO-03 r1i1p1f1 Sébastien pre_piControl 1, restart 10 ans avant la fin de CM6015S-pi-REDO-03: 2279-12-31 https://hermes.ipsl.upmc.fr/static/simulation.detail.html?uid=5ef97dd4-91c6-4012-be91-ccbaed76834e
1.2 H CM61-pre-pi-02 prend la suite de CM6015S-pi-REDO-03-24XX r1i1p1f1 Laurent pre_piControl 2, restart 10 ans avant la fin de CM6015S-pi-REDO-03-24XX: 2589-12-31 https://hermes.ipsl.upmc.fr/static/simulation.detail.html?uid=07f5e9a1-eaf9-4686-904f-af3428fd24bc
1.3 H CM61-pre-pi-03 prend la suite de CM6015S-pi-REDO-03-28XX à la date 2929-12-31 r1i1p1f1 Arnaud pre_piContrl 3, restart 10 ans avant la fin de CM6015S-pi-REDO-03-28XX: 2929-12-31 https://hermes.ipsl.upmc.fr/static/simulation.detail.html?uid=c22e10d4-d98e-4488-93e2-16889ab4dfaf

Simulations avec modèle PREIPSLCM6.1

Num PrioritéNom Personne Description Page d'information Hermes pour retrouver les infos : mise en place, sorties sur curie, etc ...
1 H CM61-pi-REDO-03-24XX Laurent

Pour la suite des simulation, voir plus loin DECK.

Les MIPs

DECK/CMIP

Simulations/DECK

AerChemMIP

Simulations/AerChemMIP

C4MIP

Simulations/C4MIP

CFMIP

Simulations/CFMIP

CMIP

Simulations/DECK

DAMIP

Simulations/DAMIP

DCPP

Simulations/DCPP

DECK

Simulations/DECK

FAFMIP

Simulations/FAFMIP

GeoMIP

Simulations/GeoMIP

GMMIP

Simulations/GMMIP

HighResMIP

Simulations/HighResMIP

LS3MIP

Simulations/LS3MIP

LUMIP

Simulations/LUMIP

OMIP

Simulations/OMIP

PMIP

Simulations/PMIP

RFMIP

Simulations/RFMIP

ScenarioMIP

Simulations/ScenarioMIP

VolMIP

Simulations/VolMIP

Environment (suite )

ada

  • dans config.card enlever les 2 niveaux de serveurs XIOS c'est à dire:
    IOS= (xios_server.exe, xios.x, 1MPI)
    
  • dans libIGCM_comp/libIGCM_comp.ksh, s'affranchir du test sur la version du compilateur en mettant Print au lieu de Exit ligne 1033 :
    -    IGCM_debug_Exit "IPSLCM6.0.13 ... must be compiled with intel 2017 compiler"
    +    IGCM_debug_Print "IPSLCM6.0.13 ... must be compiled with intel 2017 compiler"
    

Pour mémoire : Modifications dans IPSL-CM6.1.0-LR par rapport à 6015

Voir le ticket #120 pour connaitre les détails techniques liés à cette version (version des sources, fichiers d'entrées, etc...)

  • LMDz
    • Passage à v2 des fichiers ozone
    • iflag_phytrac=0 => pas de traceur Aga
    • ajoute cdnc_min=10., changement des valeurs pour cld_lc_lsc et cld_lc_con de 0.0004 en 0.00065
  • ORCHIDEE
    • Corrections de diags pour les variables qui utilisent xios_default_val (surtout variable lut et neige).
  • NEMO
    • sources : quelques bugfix ( le heat content, CFC ) & calcul du transport de glace à travers les détroits
    • rajout des traceurs CFC's
    • xml pour les diags CMIP6
    • paramètres : ré-activation du controle des bilans de nutritifs dans PISCES

  • Coupleur

Attachments (8)