Aller au contenu. | Aller à la navigation

Outils personnels
Se connecter
Sections
Vous êtes ici : Accueil Utilisateurs FAQ Exécution Comment extraire les données sur un point de plantage?

Comment extraire les données sur un point de plantage?

Pour étudier un plantage dans le modèle, on voudrait extraire un historique des champs produits par le modèle pour le point qui "plante". Comment faire?

IOS permet de sortir des champs à haute fréquence sur une région réduite ou un point en modifiant simplement les fichiers de contrôle xml. Lors d'un plantage, on peut donc suivre l'évolution des champs sur un point de grille jusqu'au moment du plantage.

ATTENTION: contrairement à ce que l'on pourrait penser, lorsque XIOS, en mode serveur, reçoit un ABORT, il aborte tout de suite sans écrire ce qu'il peut rester dans ses tampons. On n'est donc pas certain d'avoir les données jusqu'au moment du plantage. Il est donc nécessaire de relancer le job en mode attaché pour être sûr d'avoir tout l'historique jusqu'au plantage

Mode d'emploi (pour une configuration modipsl):

  1. repérer le point qui plante dans la sortie LMDZ. On cherche des lignes de ce type:
  2. i,k,temperature,lon,lat,pourc ter,lic,oce,sic =          48          22
       452.613014334991        165.000000000000        67.1830985915493
       1.00000000000000       0.000000000000000E+000  0.000000000000000E+000
      0.000000000000000E+000
     ERROR ABORT hgardfou dans convection
    

  3. déterminer les i et j globaux du point à partir de la longitude et de la latitude données ci-dessus, le plus simple (mais le plus long) étant de déterminer ces indices à partir des variables lon et lat contenues dans un fichier histmth.nc en comptant les indices à partir d'une sortie ncdump du fichier (si on pense devoir faire souvent ce travail, il sera utile de dresser un tableau de correspondance indices/lon/lat, exemple ici pour la résolution horizontale standard 144x142),
    ici le point a pour longitude 165° E et latitude 67.18° N. Cela correspond 
    pour XIOS1 
        à i = 139 et j = 19 sur la grille globale
    pour XIOS2 
        à i = 138 et j = 18 sur la grille globale 
        (XIOS2 indice les tableaux à la mode C soit à partir de 0)

  4.  préparer deux nouveaux fichiers xml dans modeles/LMDZ/DefLists, copies des fichiers context_lmdz.xml et file_def_histins_lmdz.xml (on peut appeler ces copies context_lmdz_debug.xml  et file_def_histins_lmdz_debug.xml, respectivement).
    ⇒ dans context_lmdz_debug.xml, on redéfinit le domaine de sortie qui ne contiendra que notre point de plantage:
         pour XIOS1 on remplace la ligne
    <domain id="dom_glo" data_dim="2" />
    
    par la ligne suivante :
    <domain id="dom_glo" data_dim="2" zoom_ni="1" zoom_ibegin="139" zoom_nj="1" zoom_jbegin="19" />
    et pour XIOS2 on définit le bloc <domain-definition> de la manière suivante :
       <domain_definition>
         <domain id="dom_glo" data_dim="2" />
         <domain id="dom_glo_zoom" domain_ref="dom_glo">
            <zoom_domain ibegin="138" ni="1" jbegin="18" nj="1"/>
         </domain>
       </domain_definition>
    
    on peut aussi supprimer les lignes définissant les fichiers de sorties autres que histins , ils ne serviront pas

    ⇒ dans file_def_histins_lmdz_debug.xml, on indique à XIOS que l'on veut faire des sorties instantanées à tous les pas de temps et en écrivant à tous les pas de temps
          on remplace la ligne
    <file id="histins" name="Xhistins" output_freq="1ts" output_level="4" enabled=".FALSE.">
    par la ligne
    <file id="histins" name="Xhistins" output_freq="1ts" output_level="10" enabled=".TRUE." sync_freq="1ts" >
    

    Pour XIOS2, on indique aussi le numéro du pas de temps à partir duquel on souhaite sortir chaque pas de temps (si on veut sortir les instantanés à partir du 5ème jour d'une simulation où le pas de temps de la physique est de 10 minutes, le numéro du pas de temps sera = day_step / iphysiq * (5-1) = 576 ) et la ligne sera donc la suivante:

        <file id="histins" name="Xhistins" output_freq="1ts" record_offset="-576" output_level="10"  enabled=".TRUE." sync_freq="1ts" >  
    et on indique que le domaine de sortie des variables sera le domaine zoomé (un point donc) défini ci-dessus dans le fichier context_lmdz_debug.xml en rajoutant l'attribut domain_ref="dom_glo_zoom" à toutes les balises <field_group>. Par exemple, la ligne
        <field_group operation="instant" freq_op="1ts>  
    devient
        <field_group operation="instant" freq_op="1ts" domain_ref="dom_glo_zoom">

  5. se déplacer dans le répertoire de soumission habituel et préparer la soumission de débogage:
    ⇒ dans COMP/lmdz.card, indiquer qu'on utilise les fichiers *debug.xml,
         on remplace les lignes
            (${MODIPSL}/modeles/LMDZ/DefLists/context_lmdz.xml, . )            ,\
            (${MODIPSL}/modeles/LMDZ/DefLists/file_def_histins_lmdz.xml, . )   ,\    
    par
            (${MODIPSL}/modeles/LMDZ/DefLists/context_lmdz_debug.xml, context_lmdz.xml )            ,\
            (${MODIPSL}/modeles/LMDZ/DefLists/file_def_histins_lmdz_debug.xml, file_def_histins_lmdz.xml )   ,    \    
    ⇒ dans config.card et Job, indiquer qu'on passe en mode attaché pour XIOS,
    pour config.card,
              ♦ commenter la section [IOS] et les lignes IOS= dans les sections [ListOfComponents] et [Executable]
    pour Job,
              ♦ refaire un ins_job et vérifier que le #MSUB -n indique bien 1 processeur de moins qu'en mode serveur
  6. faire le clean_PeriodLenght et re-soumettre le job
  7. à la fin du job, l'historique de sorties instantanées sur le point qui nous intéresse se trouve dans un fichier appellé  Xhistins_0.nc qu'on aura soit sauvegardé à un endroit particulier par le biais du lmdz.card
    ou qu'on trouvera dans le répertoire d'exécution du job.

    ATTENTION! : pour des raisons de synchronisation entre modèles (probablement), le job ne s'arrête pas "proprement" et va s'arrêter en "time limit exceedeed". Vous pouvez ajuster le temps requis dans l'entête du job pour tenir compte de cet état de fait. La cause de ce problème est à l'étude.