Skip to content
Jean-Baptiste Madeleine edited this page Nov 28, 2018 · 23 revisions

Marche à suivre

http://conda.pydata.org/miniconda.html

USER MANUAL EDUPLANET

1) Planetoplot : tutoriel

Planetoplot est un outil python qui permet de faire des figures à partir d'un fichier netcdf en une seule ligne de commande bash. Pour identifier où se trouve le code (dossier planetoplot/), taper:

which pp.py

Architecture de la commande:

pp.py [chemin vers le fichier netcdf] -v [variables] [options...ex : -x 0 -y 0 ...]

Pour voir toutes les options disponibles :

pp.py -h

Pour voir ce que contient le fichier netcdf (variables, longitudes, altitudes, temps...):

pp.py [fichier netcdf]

Exemple typique:

pp.py [fichier netcdf] -v [variable à afficher] -t [time] -x [longitude] -y [latitude] -z [altitude]

=> Si on veut afficher une carte, alors on ne spécifie ni x, ni y : pp.py -v … -t … -z

=> Si on veut afficher l'évolution d'une variable au cours du temps, on ne spécifie pas t (on laisse le temps évoluer) : pp.py -v … -x … -y … -z …

=> Si la variable est un champs 2D (de surface), pas besoin d'utiliser l'option -z

=> Il faut toujours spécifier un certain nombre de variables pour avoir un graphe 1D ou 2D. Dans le cas contraire, le code affiche le message d'erreur suivant : !! ERROR !! 3D or 4D plots not supported

=> " !! ERROR !! I could not find the following file: " : le fichier netcdf spécifié dans la ligne de commande n'existe pas (mal écrit) ou le chemin n'est pas le bon (vérifier le dossier dans lequel est lancé cette commande).

Variables :

  • ALB : albedo
  • ps : pression de surface
  • ISR : flux incident au sommet de l'atmosphère
  • ASR : flux absorbé par la surface
  • OLR : flux émis dans l'IR par la surface
  • tsurf : température de la surface
  • temp : température atmosphérique (3D)

Exemples :

pp.py resultat.nc -v ISR -t 100 (carte du flux incident au jour 100)

pp.py resultat.nc -v ISR -v ASR -x 0 -y 0 -S -s correctls (superpose ISR et ASR à l'équateur sur une même figure)

pp.py resultat.nc -v temp -z 1e5 -t 100 (carte de la temperature atmosphérique à 1 bar au jour 100)

pp.py resultat.nc -v temp -x 0 -t 100 (Coupe des températures atmosphériques à la longitude 0 au jour 100. Graphe altitudes vs latitudes)

Si on tourne avec les continents terrestres, on peut regarder le fichier initial et les conditions de surface utilisées (albedo, inertie thermique, relief) ;

pp.py RUN/DATAGENERIC/surface_earth.nc -v albedo -t 0

pp.py RUN/DATAGENERIC/surface_earth.nc -v thermal -t 0

pp.py RUN/DATAGENERIC/surface_earth.nc -v zMOL -t 0

Tracer l'évolution de la température moyenne globale :

pp.py resultat.nc -v tsurf -x -180,179 -y -90,90 -u meanarea -s correctls

l'option -B permet de mettre une image en background de la figure. Les images disponibles sont données dans /planetoplot/settings/set_back.txt. Ex : -B mola (pour mettre en arrière plan une image de la topographie martienne)

l'option -P permet de projeter une carte en utilisant un certain type de projection (sphérique, polaire...). Options possibles données dans l'aide en tapant : pp.py -h

Autres exemples:

  • Pour tracer les vents avec les côtes, échelle 8 m/s

pp.py resultat.nc -v temp -z 1e5 -t 280 -i u -j v -B coast -P cyl -o map -W 8 --verbose

pp.py resultat.nc -v u -z 2 -t 280 -i u -j v -B coast -P npstere

  • pour ajouter les continents en fond et sauver dans map.png

pp.py resultat.nc -v u -z 1e5 -t 280 -i u -j v -B blue -P cyl -H 0.5 --verbose -o map -W 8

  • échelle de couleur bleu (_r pour reverse)

pp.py resultat.nc -v temp -z 1e5 -t 280 -i u -j v -B coast -P cyl --verbose -o map -W 8 -C RdBu_r

  • bien tracer l'albédo

pp.py expnum_2014-11-20_08-45-18-01-00/resultat.nc -v ALB -x 0 -y 80 -F "%.2f" --ylabel "Albedo" --ymin 0.2 --ymax 0.8

Changer l'axe des temps : Par défaut, l'axe des temps est en Ls (longitude solaire)

  • L'option "-s correctls" permet d'afficher l'axe des temps en longitude solaire avec des valeurs continues (pas de recouvrement à tous les 360°.) Par exemple:

pp.py resultat.nc -v ALB -x 0 -y 80 -s correctls

pp.py resultat.nc -v ALB -t 1 -s correctls

pp.py resultat.nc -v tsurf -x -180,179 -y -90,90 -u meanarea -s correctls

  • Alternative : afficher les resultats avec un axe des temps en jour et non en Ls :
  1. taper la commande suivante, qui permet de situer le dossier où se trouve le code planetoplot:

which pp.py

  1. aller dans le dossier /planetoplot/settings/ ouvrir set_ppclass.txt

  2. supprimer Ls dans la ligne Times;time …

  3. sauver et fermer set_ppclass.txt 

=> pp.py affichera les variables en fonction des jours (de la planète considérée)

Faire de belles figures pour un rapport / soutenance:

  • Attention aux axes : enregistrer la figure dans une petite fenêtre qui permet de bien voir les axes
  • Mettre des noms aux axes : -X "Temps (s)" -Y "Altitude (km)"
  • Superposer des courbes 1D (option -S) : pp.py fichier1.nc fichier2.nc fichier3.nc -v ps -x 0 -y 0 -S
  • Mettre des légendes pour des graphes 1D : -E "simu albedo 0.7" -E "simu albedo 0.6" -E "simu albedo 0.5"
  • Garder le même axe X ou Y : --xmin 0 --xmax 100 --ymin 0 --ymax 100
  • Garder la même echelle pour la colorbar (-N min -M max) : -N 0 -M 100
  • Augmenter la résolution de la colorbar (ex: 50 niveaux de couleur) : -D 50
  • Plein d'autres options dans l'aide : pp.py -h

2) Chercher des articles

Google scholar

NADA ADS : http://adsabs.harvard.edu/abstract_service.html

=> mettre un chapeau (^) devant le nom d'un auteur pour forcer la recherche en premier auteur : ex : ^Spiga

=> choisir OR ou AND lorsqu'on met des mots clef dans « titre » ou « abstract »

=> Plus bas, cocher All refereed articles pour avoir des articles seulement ou All bibliographic sources pour articles et abstracts de conférences.

3) Remarques générales (et importantes)

  • Procéder étape par étape avec le modèle. Bien comprendre l'impact sur le climat pour chaque changement de paramètre. Utiliser les formules et figures du cours. Faire des calculs et estimations a la main pour confronter les résultats du modèle avec la théorie.

  • Mettre a jour le code en lançant le script :

./updatecode.sh

  • Lancer des petits runs courts de quelques jours pour vérifier que tout va bien, vérifier les pas de temps, le nombre de sorties etc. Si tout est ok,lancer le run complet.

  • Dans les fichiers de reglages, attention aux « points »

-> 5. signifie 5.0 => c'est un réel

-> 5.e2 signifie 5.0e2 => soit 500.0

-> 5.6. n'est pas un nombre… => 5,6,0

  • Si vous utilisez une planète éloignée de plusieurs unités astronomiques du soleil (apoastre>24 UA), il faut obligatoirement rentrer les valeurs du perihelie et de l'aphélie en millions de km dans reglages_init.txt. De façon générale, on peut toujours les mettre en million de km.

  • Le script atlas.py (dans TOOLS/) est très utile pour démarrer. On peut le modifier pour changer les axes e température, de flux, etc... pour l'appliquer à une autre planète en particulier ou lorsque les courbes sortent du cadre défini par défaut.

  • Bien comprendre ce que représente reglages_init.txt. C'est un lien (c-a-d un raccourci) vers /INIT/planet_start, lui même un lien vers planet_start.earth (dans INIT/). Conseil : copier planet_start.earth en planet_start.myplanet, modifier planet_start.myplanet à votre guise, puis actualiser le lien:

ln -sf planet_start.myplanet planet_start

(crée le lien vers planet_start.myplanet qui s'appelle planet_start)

=> Ce faisant, reglages_init.txt va bien pointer vers planet_start soit planet_start.myplanet, et vous sauvegardez ainsi le planet_start.earth initial.

4) Tourner avec les continents ou supercontinents

Continents :

  1. Dans INIT, recopier les options de planet_start.earth.continents dans reglage_init.txt

  2. Lancer le run.sh avec une resolution plus fine :

./run.sh -x 16 -y 16 -z 16

  1. Vérifier les continents sont bien là en affichant la carte d'albedo :

pp.py resultat.nc -v ALB -z 0 -t 0

Supercontinents :

Même chose que pour les continents, sauf qu'il faut prendre les options de planet_start.earth.supercontinents et choisir entre quelles latitudes et longitudes max on veut placer un patch continental.

5) Tourner avec la dynamique et une meilleure résolution 

  1. Mettre une valeur pour la vitesse de rotation omega dans reglage_init.txt (unité : radians/sec)

  2. Dans reglages_run.txt, mettre les options de la dynamique (decommenter les lignes): exemple :

  • nday = 500 (nb de jour de simulation)
  • ecritphy = 10 (frequence de sortie : ici, tous les 10 pas de temps dynamiques)
  • day_step = 240 (pas de temps dynamiques : 240 pas de temps par jour)
  • diurnal = .true. (cycle diurne)
  • iphysiq = 5 (appel à la physique tous les 5 pas de temps dynamiques)
  • iperiod = 5 (garder ce pas à 5)

=> dans cet exemple, on appelle la physique tous les 5 pas de temps dynamiques, soit 240/5=48 fois par jour. On écrit une sortie tous les 10 pas de temps, soit 24 sorties par jour.

  1. lancer run.sh avec option dyn :

./run.sh -x 16 -y 16 -z 16 --dyn

6) Lancer à partir de l'état final du run précédent

./run.sh --restart

7) Paramètres orbitaux

Pour changer la longitude solaire du périhélie Lp, régler le paramètre peri_day de reglages_init.txt. Pour le calculer, utiliser le programme TOOLS/peri_day.py:

  • éditer les paramètres dans le programme TOOLS/peri_day.py (en l'ouvrant avec un éditeur de texte)
  • lancer le programme avec la commande python TOOLS/peri_day.py

8) Appliquer un plug-in

Utiliser la commande patch; par exemple pour ajouter la rétroaction de l'albédo de la glace, taper la commande:

patch MODELES/LMDZ.GENERIC/libf/phystd/physiq.F90 < PLUG-INS/icealbedo.patch

si vous voulez revenir à la version originale du fichier, taper simplement:

svn revert MODELES/LMDZ.GENERIC/libf/phystd/physiq.F90

9) Simuler le climat d'une exoplanète

Les exoplanètes ont parfois des orbites verrouillées, ou bien sont en résonance avec leur étoile. Pour simuler ces orbites avec eduplanet, activer ces paramètres dans reglages_run.txt:

  • diurnal = .false.
  • tlocked = .true.
  • nres = 1.

Le paramètre "nres" est la résonance de l'orbite, c'est-à-dire le rapport de la période orbitale sur la période de rotation de la planète T_orbite / T_rotation.

10) FAQ

  • Je tape une commande pp.py mais il ne trouve pas le fichier resultat.nc Soit je ne suis pas au bon endroit, soit le lien est cassé. Vérifier le dossier où on se trouve et retrouver le fichier resultat.nc

  • Mon run est fini mais je ne suis pas sûr que tout se soit bien passé… => regarder les denrières lignes de /RUN/log_gcm. Y a t-il un message d'erreur ?

  • Mon run est instable (pression négative obtenue, températures à l'exterieur des bornes -trop chaudes ou trop froides…) => Vérifier le flux solaire : La planète est elle au bon endroit ? Reçoit elle un flux correct ? => Vérifier l'opacité IR/VIS de l'atmosphère : a-t-on un effet de serre trop fort ? Une opacité de l'atmosphère trop élevée ? Regarder comment évolue les températures de surface. Y a t-il un emballement des températures? => Si on tourne avec la dynamique, cela peut être un problème de dissipation (assez fréquent) * Regarder dans /RUN/log_gcm si il y a des messages d'erreur liés à la dissipation (rechercher dissip) * Si oui, augmenter ou diminuer (selon l'erreur) les coefficients de dissipation dans /RUN/run.def :

          tetagdiv=30000. 
          tetagrot = 10000. 
          tetatemp = 10000. 
    
    *  On peut aussi augmenter le pas de temps dynamique day_step dans reglages_run.txt
    
  • Mon fichier resultat.nc n'a pas de variable… Soit le run est trop court pour avoir eu le temps de faire une sortie (vérifier day_step, nday, ecritphy), soit il y a un bug, auquel cas il faut regarder dans /RUN/log_gcm si il y a des messages d'erreurs

  • Le modèle ne compile pas Regarder quelle est l'erreur dans MODELES/LMDZ.COMMON/logcompilegcm. Bien vérifier les fichiers de réglage, un paramètre peut être mal écrit, typiquement: un point ou un espace au mauvais endroit ou une faute de frappe.