= MODIPSL for beginner = Dernière mise à jour : 13/01/2011 ---- [[BR]] [[PageOutline]] '''MODIPSL pour les débutants''' MODIPSL est l'interface d'accès aux modèles de l'IPSL. Cette page résume ce qu'un nouvel utilisateur de MODIPSL doit connaître. [[BR]] Cette page veut rassembler les informations pour les nouveaux utilisateurs et pointer vers les pages plus complètes de chaque configuration ou de chaque outil quand nécessaire. [[BR]] N'hésitez pas à consulter la présentation du cours "modipsl" disponible sur cette page : [wiki:igcmg/Documentation] [[BR]] {{{ #!comment Table des matières ancienne version ---- '''Table des matières''' * [wiki:ModipslBeginner#Environnementsdecalculs Environnements de Calculs] * IDRIS * CCRT * [wiki:ModipslBeginner#Extrairemodipsl Accès à modipsl] * [wiki:ModipslBeginner#Lectureseule Lecture seule (accès anonyme)] * [wiki:ModipslBeginner#Modeadministrateur Mode administrateur ] * [wiki:ModipslBeginner#PourensavoirplussurSVN Pour en savoir plus sur SVN ] * [wiki:ModipslBeginner#Presentationdesrepertoires Présentation des répertoires de Modipsl] * [wiki:ModipslBeginner#Listedesconfigurations Liste des configurations] * [wiki:ModipslBeginner#Travailleravecuneconfiguration Travailler avec une configuration] * [wiki:ModipslBeginner#Extraction Extraction] * [wiki:ModipslBeginner#FCM FCM ] * [wiki:ModipslBeginner#Compilation Compilation] * [wiki:ModipslBeginner#OptionsdecompilationsdeLMDZ Options de compilations de LMDZ] * [wiki:ModipslBeginner#Lancerunesimulation Lancement d'une simulation] * [wiki:ModipslBeginner#Casgeneral Cas général ] * [wiki:ModipslBeginner#Presentationdurepertoireexperience Présentation du répertoire d'expérience] * [wiki:ModipslBeginner#Creationdujob Creation du job ] * [wiki:ModipslBeginner#Lancementdelasimulation Lancement de la simulation ] * [wiki:ModipslBeginner#LeparallelismeetlesfichiersBands Le parallelisme et les fichiers Bands ] * [wiki:ModipslBeginner#CasparticuliersLMDZ4OR_v2etLMDZINCA_v2 Cas particuliers LMDZ4OR_v2 et LMDZINCA_v2] * Suivi de la simulation (Monitoring) * Post-traitements systématiques (atlas) * Plus d'informations : * [wiki:ModipslBeginner#Etatdelasimulationencours Etat de la simulation en cours ] * [wiki:ModipslBeginner#Findesimulation Fin de simulation ] * [wiki:ModipslBeginner#CommentlirelefichierScriptOutput Comment lire le fichier Script_output ] * [wiki:ModipslBeginner#Outrouverlesfichiersdeoutput Ou trouver les fichiers de output ? ] * Où est le script de sortie dans tous les cas (normal ou anormal)? * Où trouver le journal de sortie? * Questions/Réponses : * Extraction : * [wiki:ModipslBeginner#Motsdepasse Mots de passe] * Compilation : * A qui signaler quand cela ne marche pas? * [wiki:ModipslBeginner#Execution Execution :] * [wiki:ModipslBeginner#Relancerunesimulation Comment relancer? ] * [wiki:ModipslBeginner#Poursuivreunesimulation Comment poursuivre?] * Post-traitements : * Comment vérifier les post-traitements? * Comment relancer les post-traitements seulement? * Questions/Réponses des autres documentations : * [http://forge.ipsl.jussieu.fr/libigcm/wiki/DocUtilisateur/InstallationIPSLCM4v2#RedémarragedepuisdesrésultatsIPSLCM4_v1_OASIS3anciensscripts Redémarrage depuis des fichiers créés par un couplé IPSLCM4_v1] * [http://forge.ipsl.jussieu.fr/libigcm/wiki/DocUtilisateur/InstallationIPSLCM4v2#RedémarragedepuisdesrésultatsIPSLCM4_v1Oasis2.4 Redémarrage depuis des fichiers créés par un couplé IPSLCM4_v1_OASIS3] * [wiki:IPSLCM4_v2_PAR#CompilationFcm Comment remettre en route une compilation de LMDZ après recopie d'un répertoire complet sur un autre] * [wiki:IPSLCM4_v2_PAR#CommentavoirautantdesortiestexteLMDZquedetaches Comment avoir autant de fichiers de sorties texte LMDZ que de taches lancées en parallèle] * [wiki:IPSLCM4_v2_PAR#Commentdebogueravectotalview Comment déboguer le couplé avec totalview sur mercure] * [http://forge.ipsl.jussieu.fr/libigcm/wiki/libIGCM/DocUtilisateur/FAQ libIGCM ] * [http://forge.ipsl.jussieu.fr/libigcm/wiki/libIGCM/DocUtilisateur/FAQ#Messagesderreur Messages erreurs dans Script_output] * [http://forge.ipsl.jussieu.fr/inca/wiki/FAQ_LMDZINCA FAQ LMDZINCA] }}} ---- [[BR]] [[BR]] == Environnements de calculs == === IDRIS === * http://www.idris.fr/ * les machines de l'IDRIS disponibles pour le couplé sont brodie (NEC SX-8) et vargas (IBM Power6). Pour vargas, voir informations plus loin. __Mémo des choses à faire sur un nouveau login à l'IDRIS pour pouvoir préparer et lancer une simulation :__ * PATH sur brodie : ajouter l'accès à svn et fcm : {{{ PATH=$PATH:/TXlocal/pub/svn/svn-1.3.1/bin:/home/rech/psl/rpsl035/fcm/bin }}} * sur vargas, il faut * avoir accès à svn : {{{module load svn}}} * avoir fcm dans son PATH : {{{ PATH=$PATH:/homegpfs/rech/psl/rpsl035/FCM/bin }}} * $WORKDIR sur ulam est très vaste mais non sauvegardé. C'est là que les post-traitements tourneront in fine. * $WORKDIR sur brodie peut être étendu largement (50 Go pour le groupe par exemple). Le demander à l'assistance. Pour vérifier l'occupation et la taille : {{{ quota_u -w }}} * sur ulam, il faut éviter les bavardages affichés lors de la connexion. Vérifier depuis brodie que la commande : rsh ulam pwd renvoie juste une ligne avec le HOME. {{{ brodie : rsh ulam pwd /home/rech/... brodie : }}} * Il faut faire marcher les transferts brodie/gaya par mfget/mfput. Pour cela utiliser la commande '''Ftuas''' sur ulam (permet de faire connaitre le mot de passe gaya à brodie et à toutes les machines). * Pour que le stockage sur le serveur dods.idris fonctionne, il faut faire marcher la commande '''rsh gaya pwd''' sur ulam. Pour cela remplir le fichier gaya:~/.rhosts (et lui donner les accès rw-------) avec : {{{ ulam.idris.fr ulam brodie.idris.fr brodie }}} * Pour les accès dods, il faut lancer de plus une commande mfdods sur gaya. Cela crée le lien (24h après la première fois) visible là : http://dods.idris.fr/monlogin. * Pour donner les accès à tous (755 ou drwxr-xr-x) au WORKDIR de brodie, il faut demander à l'assistance IDRIS pour le niveau /u/rech/grp. === CCRT === * accès ouvert : http://www-ccrt.cea.fr/ * accès protégé (lancer firefox sur platine, par exemple): * [http://www-ccrt.ccc.cea.fr:8000/index.php?id=13 Systèmes de fichiers] * [http://www-ccrt.ccc.cea.fr:8000/index.php?id=3 Environnement des codes] * les machines du CCRT disponibles pour le couplé sont mercure (NEC SX-8 et NEC SX-9) et platine (Bull Itanium) et titane (Bull Xeon). Voir information spécifique titane plus loin. [[BR]] __Mémo des choses à faire sur un nouveau login au CCRT pour pouvoir préparer et lancer une simulation :__ * PATH sur mercure/platine/titane : ajouter l'accès à fcm : {{{ PATH=$PATH:/home/cont003/p86ipsl/fcm/bin # MERCURE only }}} [[BR]] [[BR]] ---- == Extraire modipsl == === Mode utilisateur === {{{ svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl }}} Pour vous simplifier la vie et éviter de retaper cette ligne de commande à chaque nouvelle extraction de modipsl, nous vous conseillons de vous créer un alias : {{{ alias svn_ano='svn co http://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl' }}} La commande d'extraction devient alors juste {{{ svn_ano }}} Attention sur vargas (IDRIS) il faut explicitement demander l'accès à svn : {{{ module load subversion }}} === Mode administrateur === {{{ svn co svn+ssh://yourlogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/igcmg/svn/modipsl/trunk modipsl }}} D'autres commandes en bas de cette page : [wiki:igcmg/Documentation] === Pour en savoir plus sur SVN === * Le site officiel de subversion : http://subversion.tigris.org/ * [http://igcmg.ipsl.jussieu.fr/ESCI/Exposes/SVN-2007-03-28/svn_p.html Présentation de SVN (Jacques Bellier)] * [http://igcmg.ipsl.jussieu.fr/ESCI/Exposes/SVN-2007-03-28/svn_swt.html SVN commandes] * [http://igcmg.ipsl.jussieu.fr/ESCI/Exposes/SVN-2007-03-28/svnqref.html SVN quick reference guide] * [http://igcmg.ipsl.jussieu.fr/ESCI/Exposes/SVN-2007-03-28/key_ssh.html Mémo sur la gestion des clés ssh] * [http://forge.ipsl.jussieu.fr/inca/wiki/InstSvnInca Quelques commandes de base pour SVN (Anne Cozic)] * [http://wiki.ipsl.jussieu.fr/Pole/ESCI?action=AttachFile&do=get&target=Subversion_2008.pdf Point sur l'utilisation de SVN (Marie-Alice Foujols)] (accès restreint) [[BR]] [[BR]] ---- == Présentation des répertoires de modipsl == Après avoir extrait Modipsl vous avez un répertoire contenant 7 sous-répertoires : * bin/ * config/ * doc/ * lib/ * modeles/ * tmp/ * util/ Tous ces répertoires sont vides excepté le répertoire '''doc/''' contenant le texte de la licence CECILL (license sous laquelle sont placés les modèles de l'IPSL) et le répertoire '''util/''' qui contient les scripts nécessaires à une installation complète de n'importe quelle configuration disponible des modèles de l'IPSL. [[BR]] {{{ mod.def >>>>>> Définition pour chaque configuration de leurs composantes et de leurs tags model >>>>>> Extraction des modèles validés disponibles ins_make >>>>>> Installation et configuration des Makefiles ins_job >>>>>> Installation et configuration des scripts de lancement }}} Voir le transparent 26 de la présentation. [[BR]] [[BR]] ---- == Liste des configurations disponibles via modipsl == Via modipsl vous pouvez avoir accès à un grand nombre de configurations regroupant différents modèles de l'IPSL. Pour connaître cette liste il vous suffit dans le répertoire '''util/''' de passer la commande suivante : {{{ cd modipsl/util ./model -h }}} Pour avoir plus d'informations sur une configuration en particulier (modèles utilisés, versions CVS ou SVN utilisées ...) il faut passer la commande {{{ ./model -h nom_de_la_config }}} Exemple avec LMDZ4OR_v2 : {{{ >> ./model -h LMDZ4OR_v2 >> model : LMDZ4OR_v2 LMDZ4OR_v2 configuration with parallel LMDZ4 and ORCHIDEE working configuration Official beta release IOIPSL/src svn tags/v2_1_1 LMDZ4 tag LMDZ4_V3_1 ORCHIDEE tag orchidee_1_9_1 LMDZ4OR_v2 svn trunk libIGCM HEAD model manager email address : blabla@blabla Component 1 : IOIPSL/tags/v2_1_1/src Tag 1 : HEAD System 1 : svn Server 1 : http://forge.ipsl.jussieu.fr/igcmg/svn Directory 1 : IOIPSL/src Local Dir 1 : modeles Component 2 : ORCHIDEE Tag 2 : orchidee_1_9_1 System 2 : cvs Server 2 : sechiba@cvs.ipsl.jussieu.fr:/home/ssipsl/CVSREP Directory 2 : . Local Dir 2 : modeles Component 3 : LMDZ4 Tag 3 : LMDZ4_V3_1 System 3 : cvs Server 3 : lmdzbrowse@cvs.lmd.jussieu.fr:/home/cvsroot Directory 3 : . Local Dir 3 : modeles Component 4 : CONFIG/trunk/LMDZ4OR_v2 Tag 4 : HEAD System 4 : svn Server 4 : http://forge.ipsl.jussieu.fr/igcmg/svn Directory 4 : LMDZ4OR_v2 Local Dir 4 : config Component 5 : libIGCM Tag 5 : ? System 5 : cvs Server 5 : anonymous@cvs.ipsl.jussieu.fr:/home/ioipsl/CVSROOT Directory 5 : . Local Dir 5 : . }}} La première partie indique les modèles utilisés dans la configuration ainsi que leurs numéros de version sur CVS ou SVN. Ensuite est donnée l'adresse e-mail du responsable de cette configuration, puis tous les paths des composantes. [[BR]] [[BR]] ---- == Travailler avec une configuration choisie == Dans ce paragraphe nous prendrons comme exemple le modèle couplé '''IPSLCM5A'''. Les autres configurations utilisant modipsl ('''IPSL_ESM_V1''', '''LMDZ4OR_v2''', '''LMDZINCA_v2''', '''LMDZORINCA''' ...) suivent le même principe. Quand des cas particuliers existent nous vous les indiquerons. [[BR]] === Extraction === {{{ cd modipsl/util ./model -h >>>> indique toutes les configurations dispo ./model IPSLCM5A >>>> on choisit d'extraire la configuration IPSLCM5A }}} Lors de cette extraction plusieurs logins et mots de passe vous seront demandés. Pour les récupérer adressez vous au responsable de la configuration (voir ci-dessus model manager email address) [[BR]] En cas d'urgence, vous pouvez aussi récupérer le fichier ~/.cvspass et le répertoire ~/.subversion d'un autre utilisateur. Cette commande récupère sur CVS et/ou SVN les différents modèles composant la configuration demandée. Les sources de ces modèles sont installées dans le répertoire '''modipsl/modeles/'''. Pour notre exemple vous obtenez les répertoires suivants : * modipsl/modeles/IOIPSL/ * modipsl/modeles/LMDZ4/ * modipsl/modeles/NEMO/ * modipsl/modeles/UTIL/ * modipsl/modeles/ORCHIDEE/ * modipsl/modeles/XMLF90 * modipsl/modeles/XMLIO_SERVER Modipsl installe également ce que l'on appelle une '''configuration'''. Elle est dans le répertoire '''modipsl/config/''' (ici modipsl/config/IPSLCM5A/). [[BR]] Cette configuration vous permettra de [wiki:ModipslBeginner#Compilation compiler] l'ensemble des modèles, puis de [wiki:ModipslBeginner#Lancerunesimulation lancer une simulation]. [[BR]] [[BR]] ==== Mots de passe ==== Pour connaitre les mots de passe d'extraction s'adresser au ''model manager email address''. Il est indiqué lors de la commande {{{ ./model -h IPSLCM5A }}} [[BR]] === FCM === Certains modèles de l'IPSL utilisent l'outils [http://www.metoffice.gov.uk/research/nwp/external/fcm/ FCM] pour gérer la création de leur makefile (modèle LMDZ, modèle INCA ...). FCM n'est pas accessible par défaut sur les machines de calcul. Il est disponible sur les machines de l'IDRIS et du CCRT et vous devez l'ajouter à votre PATH : {{{ # sur mercure, platine et titane PATH=~p86ipsl/fcm/bin:$PATH # sur brodie PATH=/home/rech/psl/rpsl035/fcm/bin:$PATH # sur vargas PATH=/homegpfs/rech/psl/rpsl035/FCM/bin/fcm:$PATH }}} [[BR]] === Compilation === ==== Spécificité titane ==== Pour compiler sur titane, il faut charger explicitement la bonne bibliothèque NetCDF. Faire : {{{ module load netcdf/3.6.3 }}} Pour compiler le couplé, voir plus loin les détails : * il faut supprimer les 2 clés : "key_vectopt_loop key_vectopt_memory" dans config/IPSLCM5A/AA_make * il faut explicitement demander l'utilisation de 5 processeurs pour NEMO. Sinon le message est : {{{ xmlf90 ../../../lib/libioipsl.a -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf /applications/intel/cprof/11.1.056/lib/intel64/libimf.so: warning: warning: feupdateenv is not implemented and will always fail ../../../lib/libopa.a(opa.o): In function `opa_mp_opa_model_': opa.F90:(.text+0x2a5): relocation truncated to fit: R_X86_64_PC32 against symbol `dom_oce_mp_narea_' defined in COMMON section in ../../../lib/libopa.a(dom_oce.o) opa.F90:(.text+0x8bb): relocation truncated to fit: R_X86_64_PC32 against symbol `in_out_manager_mp_nprint_' defined in COMMON section in ../../../lib/libopa.a(in_out_manager.o) ... opa.F90:(.text+0xa4d): additional relocation overflows omitted from the output gmake[2]: *** [../../../bin/opa] Error 1 }}} ==== Spécificité SX8 ==== Pour compiler pour la SX8, il faut explicitement charger netcdf pour SX8. Le plus simple est de se préparer une fonction pour cela, par exemple sx8 : {{{ sx8 () { module load netcdf_sx8 ; export PS1="SX8"' - $PWD : ' ; } }}} ==== Spécificité SX9 ==== Pour compiler pour la SX9, il faut vous placer dans l'environnement SX9. Le plus simple est de se préparer une fonction pour cela, par exemple sx9 : {{{ sx9 () { module switch SX8 SX9 ; module load netcdf_sx9 ; export PS1="SX9"' - $PWD : ' ; } }}} A noter : si vous recompilez en restant en SX8 alors que tout a été fait en SX9 jusque là, vous aurez le message suivant d'erreur et aucune recompilation ne se fera. {{{ **************************************************************** INFO - This Makefile is for host type : sx9mercure INFO - Host used has type : sx8mercure **************************************************************** ERROR - This Makefile is not compatible whith the host ! **************************************************************** Makefile:22: *** . Stop. }}} La soumission des post-traitements se fait vers cesium depuis le 11/2009. Pour que cela marche il faut avoir créé une passphrase vide pour ssh et s'être connecté sur cesium au moins une fois. Mémo : {{{ mercure : pwd ~/.ssh mercure : ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/cont003/xxxxxx/.ssh/id_rsa): Enter passphrase (empty for no passphrase): (RETURN) Enter same passphrase again: (RETURN) Your identification has been saved in ...../.ssh/id_rsa. Your public key has been saved in ...../.ssh/id_rsa.pub. The key fingerprint is: af:.... mercure : cat id_rsa.pub >>authorized_keys cesium : cat id_rsa.pub >>authorized_keys }}} Commandes à passer pour vérifier que les post-traitements se feront bien sur ceisum : {{{ cesium : ssh mercure pwd mercure : ssh mercure01 pwd mercure : ssh mercure01 ssh cesium pwd }}} Plus d'informations sur la compilation SX9/SX8 : [http://wiki.ipsl.jussieu.fr/Pole/Couple/CCRT/SX9 là (Intranet)] ==== Toutes machines ==== Avant la première compilation des différents modèles de votre configuration vous devez créer les makefiles adaptés à la machine sur laquelle vous travaillez. {{{ cd modipsl/util ./ins_make }}} La commande ins_make permet de créer un makefile pour la config. Dans notre exemple '''modipsl/config/IPSLCM5A/Makefile'''. Ce Makefile contrôle tous les makefiles des différents modèles utilisés. Une fois qu'il est créé vous n'avez pas besoin de le regénérer (sauf changement de machine ou d'emplacement de modipsl dans votre architecture). [[BR]] Vous pouvez ensuite lancer la compilation (résolution par défaut soit ORCA2 et LMDZ 96x95x39) : {{{ cd modipsl/config/IPSLCM5A/ gmake }}} Suivant la configuration sur laquelle vous travaillez le Makefile peut vous proposer différentes résolutions. Pour les connaître vous devez regarder les différentes target (normalement en lettres majuscules) dans le fichier Makefile. Pour IPSLCM5A ce sont les suivantes : * ORCA2xLMD4443 * ORCA2xLMD5655 * ORCA2xLMD9671 * ORCA2xLMD9695 * '''ORCA2xLMD9695-L39''' * ORCA2xLMD144142 * ORCA2xLMD144142-L39 Lorsque vous savez quelle résolution vous désirez vous pouvez alors lancer la compilation : {{{ cd modipsl/config/IPSLCM5A/ gmake resolution_desirée }}} par exemple {{{ gmake ORCA2xLMD144142-L39 }}} Petit truc : A la fin de la compilation le makefile crée un fichier .resol qui contiendra la résolution de la dernière compilation. Une fois ce fichier créé vous pouvez ensuite relancer les compilations juste avec la commande '''gmake''' vous n'êtes plus obligé de préciser la résolution. [[BR]] ==== A qui signaler quand cela ne marche pas? ==== Si il y a un problème de compilation vous pouvez vous adresser au ''model manager''. Il est indiqué lors de la commande {{{ ./model -h IPSLCM5A }}} [[BR]] ==== Options de compilations de LMDZ ==== LMDZ propose un certain nombre d'options de compilation que voilà : {{{ makelmdz_fcm [options] -m arch exec [-h] : manuel abrégé [-d [[IMx]JMx]LM] : IM, JM, LM sont les dims en x, y, z (def: $dim) [-p PHYS] : compilation avec la physique libf/phyPHYS, (def: lmd) [-prod / -dev / -debug] : compilation en mode production (default) / developpement / debug . [-c false/MPI1/MPI2] : couplé océan : MPI1/MPI2/false (def: false) [-v false/true] : avec ou sans végétation (def: false) [-chimie INCA/false] : avec ou sans model de chimie INCA (def: false) [-parallel none/mpi/omp/mpi_omp] : parallelisation (default: none) : mpi, openmp ou mixte mpi_openmp [-g GRI] : conf. grille dans dyn3d/GRI_xy.h (def: reg inclue un zoom) [-io IO] : choix d'une librairie I/O, experts (def: ioipsl) [-include INCLUDES] : variables supplementaires pour include [-cpp CPP_KEY] : cle cpp supplementaires [-adjnt] : adjoint, a remettre en route ... [-filtre NOMFILTRE] : prend le filtre dans libf/NOMFILTRE (def: filtrez) [-link LINKS] : liens optionels avec d'autres librairies [-fcm_path path] : chemin pour fcm (def: le chemin est suppose deja exister dans le PATH) -arch nom_arch : nom de l'architecture cible exec : exécutable généré }}} Ces options sont utilisées dans le fichier config/IPSLCM5A/Makefile. Notez que par défaut on demande la compilation en mode mpi. [[BR]] === Lancer une simulation === ==== Cas général ==== '''NOTE''' avant la première simulation veillez à créer le fichier ~/.forward contenant votre adresse mail, pour que les mails envoyés en fin de simulation soient bien redirigés vers votre boîte mail. [[BR]] ===== Présentation du répertoire d'expérience ===== Dans le répertoire '''modipsl/config/IPSLCM5A/''' vous trouverez 1 sous répertoire EXP00 [[BR]] Ce répertoire contient les fichiers nécessaires pour lancer une simulation : - un fichier config.card - un répertoire COMP/ - un répertoire PARAM/ - un répertoire POST/ Le fichier config.card contient la fiche d'identité de votre simulation (nom - dates de début et de fin - calendrier ...). Il contient également les options de démarrage : démarrage depuis les états initiaux (par défaut) ou redémarrage depuis une simulation (à soi ou non).[[BR]] Le répertoire PARAM/ contient les fichiers de paramètres nécessaires aux modèles[[BR]] Le répertoire COMP/ contient deux sortes de fichiers : des cartes (.card) et des drivers (.driver). Les drivers ne sont pas à changer, ils indiquent les opérations à faire pour chaque composantes (modèles) de votre configuration. Les cartes contiennent les informations nécessaires pour chaque composantes (les fichiers d'états initiaux, les fichiers de conditions aux limites, les fichiers d'émissions ...) ainsi que comment gérer les fichiers sorties des composantes (noms des fichiers que l'on veut conserver, et post-traitement qu'on leur associe.) [[BR]] Le répertoire POST/ contient 2 fichiers de configuration des monitoring, spécifiques pour la glace lim2 et stomate. [[BR]] Vous trouverez plus d'informations sur les cartes là : [http://forge.ipsl.jussieu.fr/libigcm/wiki/DocUtilisateur Doc Utilisateur libIGCM] [[BR]] ===== Etapes avant la création du job de simulation ===== __'''config.card'''__ [[BR]] Avant de créer un job pour votre simulation vous devez indiquer tous les paramètres nécessaires à cette dernière dans le fichier config.card [[BR]] Voici les rubriques à modifier : {{{ JobName=_nom_simul_ ExperimentName=pdControl (mettre le nom de l'expérience selon le vocabulaire CMIP5. pdControl par défaut) SpaceName=DEVT (mettre DEVT, TEST ou PROD) DateBegin=_date_debut_simul_ DateEnd=_date_fin_simul_ PeriodLength= indiquez ici la fréquence de lancement de l'exécutable >>> voir ci-dessous après l'exemple JobNumProcTot=_nombre_processeurs }}} Exemple (10 ans): {{{ JobName=RUN1 DateBegin=1950-01-01 DateEnd=1959-12-30 PeriodLength=1M JobNumProcTot=4 }}} __!PeriodLength__ : [[BR]] !PeriodLength correspond à la fréquence des fichiers de sorties de votre modèle. Vous avez le choix entre 1 jour, 5 jours, 1 mois ou 1 an (1D, 5D, 1M ou 1Y). Si vous choisissez 1D cela signifie que au bout d'une année de simulation vous aurez 360 fichiers de sorties. Si vous choisissez 1M vous aurez 12 fichiers de sorties, et si vous choisissez 1Y vous aurez 1 fichier de sortie. [[BR]] '''Attention''' il faut impérativement que !PeriodLength ne soit pas supérieur à la durée de votre simulation : c'est à dire pour une simulation de 1 mois ne demandez pas une !PeriodLength de 1 an. [[BR]] '''__répertoire COMP__'''[[BR]] Comme indiqué ci-dessus le répertoire COMP contient une carte par composante (modèle) de votre configuration. Chacune de ces cartes est divisée en différentes parties : * `[InitialStateFiles] >>>> indique les fichiers d'état initiaux utilisés pour votre simulation (ex start.nc et startphy.nc pour le modèle lmdz)` * `[BoundaryFiles] >>>> indique les fichiers de conditions aux limites (deux parties List pour les fichiers variant avec le temps, ` ` et ListNonDel pour ceux qui ne varient pas)` * `[ParametersFiles] >>>> liste des fichiers de paramètres pour le modèle (stockés dans EXP00/PARAM/) ` * `[RestartFiles] >>>> liste des fichiers de restart pour le redémarrage du modèle : cette liste ne doit pas être modifiée` * `[OutputText] >>>> liste des fichiers texte en sortie du modèle` * `[OutputFiles] >>>> liste des fichiers netcdf en sortie du modèle avec le post-traitement éventuel` * `[Post_...] >>>> description des différentes post-traitements. ` A chaque fois la syntaxe utilisée est la suivante : ''(path_fichier, fichier)'' [[BR]] Elle est équivalente à : [[BR]] ''cp path_fichier fichier'' [[BR]] {{{ exemple : ListNonDel= (${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/HISTORIQUE/so4.run1850.cdf, .),\ c'est équivalent à cp ${R_BC}/ATM/${config_UserChoices_TagName}/${RESOL_ATM}/HISTORIQUE/so4.run1850.cdf . }}} '''ATTENTION''' : il ne faut pas laisser d'espace après le "\". Si jamais vous laissez un espace la ligne qui suit n'est pas prise en compte. [[BR]] '''NOTE''' : dans les cartes fournies avec les modèles nous utilisons régulièrement les variables ${R_BC} et ${R_INIT}. Par défaut elles sont définies ainsi : {{{ R_BC = /dmnfs/cont003/p86ipsl/IGCM/BC R_INIT = /dmnfs/cont003/p86ipsl/IGCM/INIT }}} Toute fois si vous le souhaitez vous pouvez écraser ces définitions en redéfinissant R_BC et R_INIT dans le fichier config.card. [[BR]] Le répertoire /dmnfs/cont003/p86ipsl/IGCM regroupe tous les fichiers d'input pour les différentes configurations. [[BR]] [[BR]] [[BR]] __Nouvelles options dans lmdz.card__ [[BR]] Dans certaines configurations (entre autre IPSLCM5A) vous avez des options en plus dans lmdz.card : {{{ LMDZ_NbPeriod_adjust=3 }}} * LMDZ_NbPeriod_adjust permet de définir combien de !PeriodLenght on veut utiliser au début d'une simulation pour créer le fichier Bands qui permet d'ajuster au mieux la parallélisation du code. Si jamais on souhaite utiliser un fichier pré-existant il faut indiquer LMDZ_NbPeriod_adjust=0 et préciser le nom du fichier Bands à utiliser. Attention au nombre de proc et à la grille précisés dans ce nom. [[BR]] __'''répertoire PARAM'''__[[BR]] Ce répertoire contient les fichiers de paramètres des différents modèles. Reportez vous aux documentations scientifiques de chacun de ces modèles pour en connaître les différentes utilisations. [[BR]] ===== Création du job ===== '''Avant''' : vérifier le fichier config.card. {{{ cd modipsl/util ./ins_job }}} Cette commande recherche tous les fichiers config.card existant dans des sous-répertoires de modipsl et crée les job associés (en reprenant la rubrique !JobName du fichier config.card). Si jamais un fichier du même nom (Job_nom_simul) existe déjà alors un message d'avertissement apparait et le job n'est pas écrasé. Vous devez l'effacer au préalable pour pouvoir le recréer. [[BR]] Cette commande crée également run.card.init, squelette du fichier run.card qui contiendra l'état d'avancement de la simulation. Il crée également les jobs de post-traitement, spécifiques à la machine de post-traitement dans le répertoire : modipsl/libIGCM . Ils s'appellent xxxx.job. '''Après''' : vérifier le fichier Job_nom_simul N'oubliez pas de modifier les variables '''elapstim_req''' et '''memsz_job''' en entête de job si nécessaire (voir documentation sur les machines de calculs du CCRT ou les variables '''cputim_job''' et '''memsz_job''' sur les machines NEC de l'IDRIS). {{{ #PBS -l memsz_job=15.0gb # limite memoire #PBS -l elapstim_req=02:00:00 # limite en temps elapsed }}} Remarque : Pour connaître les temps autorisés sur les différentes queues de la machine vous pouvez utiliser la commande '''class''' au CCRT ou '''news class''' à l'IDRIS. [[BR]] Par défaut la simulation tournera sur le disque tmpdir de la machine. Si vous voulez qu'elle ait lieu sur le scratchir ou workdir, vous devez modifier la variable RUN_DIR_PATH dans le fichier Job_nom_simul {{{ RUN_DIR_PATH=$SCRATCHDIR }}} Avant de lancer votre simulation il vous reste une dernière étape : vous devez définir la variable '''!PeriodNb''' dans votre Job. '''!PeriodNb''' peut être définie comme le nombre maximal de '''!PeriodLength''' (dans config.card) pouvant être simulée sur le '''elapstim_req''' demandé ! [[BR]] exemple : {{{ PeriodLength=1M elapstim_req=20:00:00 PeriodNb=12 >>>> cela signifie que vous pouvez faire passer 12 mois de simulations durant 20h de temps CPU }}} [[BR]] [[BR]] ===== Temps d'execution du couplé IPSLCM5A ===== '''ORCA2xLMD9695-L39''' || machine || cpus || (1 mois) temps CPU || (1 mois) temps réel || 10 ans temps réel || || mercure SX8R || 4 || 3300 s || '''1000 s''' || 2 jours|| || mercure SX9 || 4 || 2000 s || '''680 s''' || 1 jour || || brodie SX8 || 4 || '''3600 s''' || 1200 s || 2 jours || || vargas IBM || 32 || || '''1100 s''' || 1,5 jours || En gras, ce qu'il faut utiliser pour l'entête du job. ===== Exécution de la simulation ===== '''Avant''' : Vérifier les dates et les options de démarrage du fichier config.card. __Au CCRT__ {{{ cd modipsl/config/IPSLCM5A/EXP00/ ccc_msub Job_nom_simul }}} __A l'IDRIS__ {{{ cd modipsl/config/IPSLCM5A/EXP00/ qsub Job_nom_simul }}} [[BR]] '''ATTENTION''': par défaut des job d'atlas seront lancés à la fin de votre simulation. Ces jobs s'intitulent REBUILDA, TS et SE. Pour en savoir plus voir [wiki:ModipslBeginner#Lespost-traitementsaveclibIGCM] ==== Le parallelisme et les fichiers Bands ==== Les fichiers Bands sont des fichiers nécesaires à la parallélisation. Ils permettent d'optimiser la répartition des points de grilles sur les différents processeurs en fonction du code de calcul. ===== A retenir ===== Par défaut, le couplé IPSLCM5A, peut tourner sur un nombre quelconque de processeurs. Il crée lui-même le fichier Bands lors des 3 premiers mois de la simulation puis utilise celui du dernier mois. Il est possible d'utiliser le fichier Bands d'une autre simulation, voir paramétrage dans COMP/lmdz.card. '''ATTENTION''' : Pour être certain d'obtenir les même résultats entre deux simulations il faut annuler l'ajustement et la création des fichiers Bands. Il faut utiliser pour les deux simulations le MÊME fichier Bands. ==== Cas particuliers LMDZ-ORCHIDEE et LMDZ-INCA ==== ===== Répertoires d'expérience ===== * Pour LMDZ4OR_v2 le répertoire d'expérience se nomme LMDZOR * Pour LMDZINCA_v2 il y a un répertoire d'expérience par configuration de INCA : EXP_AER, EXP_CH4, EXP_NMHC .... Plus d'information sur les configs avec le modèle INCA [http://forge.ipsl.jussieu.fr/inca/wiki ICI] ===== Création de l'état initial pour LMDZOR ===== Si vous n'avez pas de fichier d'états initiaux pour le modèle couplé celui-ci les crée automatiquement. Ce qui n'est pas le cas pour les configurations LMDZ4OR_v2 et LMDZINCA_v2. Dans ces deux cas vous trouverez un répertoire CREATE/ en plus de votre répertoire d'expérience. Nous allons prendre pour exemple la config LMDZ-ORCHIDEE. [[BR]] Le répertoire '''CREATE/''' est composé de : * un fichier config.card * un fichier config.card_Interannuel * un sous répertoire COMP/ * un sous répertoire PARAM/ L'utilisateur peut décider soit de créer un état initial pour un '''run climato''' c'est à dire qu'il utilisera pour chaque année de simulation le même fichier de conditions aux limites. Soit de créer un état initial pour un '''run nudgé''' c'est à dire qu'à chaque année de simulation correspondra un fichier de conditions aux limites différents prenant en compte les données de sst et de glaces de mer (sic). Nous allons voir maintenant comment procéder dans ces deux cas : [[BR]][[BR]] * __RUN CLIMATO__ Dans ce cas vous laissez les fichiers tels que vous les avez extraits. {{{ cd modipsl/config/LMDZ4OR_v2/CREATE/ ls >>>> verification des fichiers dans le répertoire CREATE/ (cf ci-dessus) cd ../../../util ./ins_job >>>> creation du job Job_ELC-$RESOL ($RESOL = la resolution de votre simulation, ex LMD9671) dans le répertoire CREATE/ cd ../config/LMDZ4OR_v2/CREATE ccc_msub Job_ELC-$RESOL >>>> soumission du job tel quel }}} L'état initial ainsi créé sera dans le répertoire '''$DMFDIR/IGCM_OUT/LMDZ4OR_v2/ELC-$RESOL/''' {{{ ls $DMFDIR/IGCM_OUT/LMDZ4OR_v2/ELC-LMD9671/ATM/Restart/ ELC-LMD9671_19791230_limit.nc ELC-LMD9671_19791230_start.nc ELC-LMD9671_19791230_startphy.nc }}} Ensuite avant de lancer votre simulation vous devez vérifier que le fichier modipsl/config/LMDZ4OR_v2/LMDZOR/COMP/lmdz.card renvoie bien vers ces fichiers {{{ [InitialStateFiles] List= (${R_OUT}/${config_UserChoices_TagName}/${CREATE}/ATM/Restart/${CREATE}_19791230_start.nc, start.nc) \ (${R_OUT}/${config_UserChoices_TagName}/${CREATE}/ATM/Restart/${CREATE}_19791230_startphy.nc, startphy.nc) [...] [BoundaryFiles] ListNonDel= (${R_OUT}/${config_UserChoices_TagName}/${CREATE}/ATM/Restart/${CREATE}_19791230_limit.nc, limit.nc) \ [...] }}} [[BR]] * __RUN NUDGE__ Dans ce cas là vous devez utiliser les fichiers suffixés AMIP. Ils permettent de créer les fichiers aux limites pour les années 1956 à 2005 en utilisant les données AMIP6. {{{ cd modipsl/config/LMDZ4OR_v2/CREATE mv config.card_Interannuel config.card mv COMP/lmdz.card_Interannuel COMP/lmdz.card cd ../../../util ./ins_job >>>> creation du Job Job_ELI-$RESOL cd ../config/LMDZ4OR_v2/CREATE ccc_msub Job_ELI-$RESOL }}} L'état initial ainsi créé sera dans le répertoire '''$DMFDIR/IGCM_OUT/LMDz4OR_v2/ELI-$RESOL/'''. Contrairement au cas climato vous obtenez 50 trios "start.nc, startphy.nc et limit.nc" {{{ ls $DMFDIR/IGCM_OUT/LMDz4OR_v2/ELI-LMD9671/ATM/Restart/ ELI-LMD9671_19561230_limit.nc ELI-LMD9671_19561230_start.nc ELI-LMD9671_19561230_startphy.nc (...) ELI-LMD9671_20051230_limit.nc ELI-LMD9671_20051230_start.nc ELI-LMD9671_20051230_startphy.nc }}} Pour votre simulation vous devrez comme précédemment indiquer les path de start et startphy dans le fichier lmdz.card. Mais attention cette fois ci pour le fichier de conditions aux limites il faudra l'indiquer dans la section '''List''' et non pas '''!ListNonDel''' de !BoundaryFiles. {{{ [InitialStateFiles] List= (${R_OUT}/${config_UserChoices_TagName}/${CREATE}/ATM/Restart/${CREATE}_${year}1230_start.nc, start.nc) \ (${R_OUT}/${config_UserChoices_TagName}/${CREATE}/ATM/Restart/${CREATE}_${year}1230_startphy.nc, startphy.nc) [...] [BoundaryFiles] List=(${R_OUT}/${config_UserChoices_TagName}/${CREATE}/ATM/Restart/${CREATE}_${year}1230_limit.nc, limit.nc) }}} [[BR]] __Remarque :__ Si vous souhaitez utiliser d'autres jeux de données que les données AMIP vous devez modifier le fichier modipsl/config/LMDZ4OR_v2/CREATE/lmdz.card ==== Passage d'une simulation couplée IPSLCM5A à une simulation forcée LMDZ4OR_v3 ==== Vous avez fait tourner une simulation couplée IPSLCM5A et vous voulez faire tourner la simulation forcée LMDZOR4_v3 équivalente. Voici les différentes étapes : 1) Extraire la configuration forcée LMDZ4OR_v3 dans le répertoire modipsl/config ou se trouve le repertoire IPSLCM5A : {{{ >cd modipsl/config >svn co http://forge.ipsl.jussieu.fr/igcmg/svn/CONFIG/LMDZOR/branches/LMDZ4OR_v3 LMDZ4OR_v3 >ls IPSLCM5A LMDZ4OR_v3 }}} 2) Modifier le fichier LMDZ4OR_v3/LMDZOR/config.card en fonction de la simulation à lancer (Nom, Dates,...) 3) Créer les jobs de la nouvelle configuration LMDZ4OR_v3 {{{ >cd modipsl/util >./ins_job }}} 4) Si vous ne l'avez jamais fait, créer le fichier de conditions aux limites (voir [wiki:ModipslBeginner#CréationdelétatinitialpourLMDZOR là]). Attention, pour avoir le même trait de côtes que dans la simulation couplée, il est necessaire d'utiliser pour la création des conditions aux limites le fichier o2a.nc utilisé par la simulation couplée. Pour cela, ajouter le path du fichier o2a.nc dans CREATE/COMP/lmdz.card en lieu et place du commentaire. Par exemple : {{{ (/dmnfs/cont003/p86ipsl/IGCM/INIT/ATM/IPSLCM5A/ORCA2.3xLMD9695/o2a.nc, o2a.nc) }}} 5) Indiquer la résolution de la composante LMDZOR (qui correspond à la résolution de la simulation couplée). {{{ >cd modipsl/config/LMDZ4OR_v3 >cat ../IPSLCM5A/.resol ORCA2xLMD9695-L39 RESOL_ATM_3D=96x95x39 >echo "LMD9695-L39" > .resol >echo "RESOL_ATM_3D=96x95x39" >> .resol }}} 6) Lancer la simulation {{{ >cd modipsl/config/LMDZ4OR_v3/LMDZOR puis soumission du Job }}} [[BR]] [[BR]] ==== Comment désactiver STOMATE dans le couplé IPSLCM5A? ==== Attention! Il n'y a pas eu validation scientifique des résultats. Pour désactiver stomate dans le couplé IPSLCM5A, il faut : * supprimer la composante SBG dans le fichier config.card : {{{ -SBG= (stomate, ORCHIDEE_1_9_4_AR5) -SBG= ("", "") }}} * dans COMP/orchidee.card ajouter la recherche du fichier lai2D.nc : {{{ +ListNonDel= (${R_BC}/SRF/${config_UserChoices_TagName}/lai2D.nc, .) }}} * dans PARAM/orchidee.def, ajouter le paramètre pour demander la lecture du fichier LAI_MAP : {{{ +# Read a LAI map (12 monthly values) +LAI_MAP = y +# default = n }}} === Etat de la simulation en cours === La variable !PeriodState du fichier run.card peut vous aider à connaître l'état de votre simulation : {{{ Start ou OnQueue : run en attente Running : run en cours d'exécution Completed : run fini correctement Fatal : run fini avec un plantage }}} [[BR]] [[BR]] === Fin de simulation === Lorsque votre simulation est finie deux fichiers sont créés dans votre répertoire d'expérience: - run.card - Script_Output_JobName Si la simulation s'est mal déroulée vous aurez un troisième fichier : - !JobName_date_out_run_file_error qui contient le journal de sortie de votre simulation Le fichier run.card indique l'état de votre run à la fin de la simulation. Il contient une variable !PeriodState qui vous renseigne {{{ PeriodState= Completed ( = simulation bien finie) PeriodState= Fatal (= problème durant la simulation) }}} Lorsque votre simulation est bien finie les fichiers de sorties sont stockés au path suivant : {{{ $DMFDIR/IGCM_OUT/IPSLCM5A/DEVT/pdControl/_nom_simul_ Avec les sous répertoires suivant : ATM CPL ICE OCE SRF SBG Out Exe MOD = Restart et Output de la composante (ATM, ICE...) Out = journaux de sorties du run Exe = exécutables utilisés pour le run }}} Lorsque votre simulation est bien finie, les post-traitements sont lancés et exécutés sur les frontales. En savoir plus sur les post-traitements : [wiki:PostTraitementLibIGCM] [[BR]] [[BR]] ==== Comment lire le fichier !ScriptOutput ==== A la fin de chaque période de simulation un fichier Script_Output correspondant est créé. Ces fichiers comportent trois parties : * copies des fichiers d'input * exécution * copies des fichiers d'output Ces trois parties sont délimités ainsi : {{{ ####################################### # ANOTHER GREAT SIMULATION # ####################################### 1ère partie ####################################### # DIR BEFORE RUN EXECUTION # ####################################### 2ème partie ####################################### # DIR AFTER RUN EXECUTION # ####################################### 3ème partie }}} Si à la fin de votre simulation le fichier [wiki:ModipslBeginner#Findesimulation run.card] indique qu'il y a eu un problème vous devez lire votre fichier Script_Output. Il y a plusieurs solutions : * si le fichier s'arrête avant le début de la deuxième partie c'est que soit vous n'avez pas effacé un fichier run.card existant, soit l'un des fichiers d'input que vous demandez n'existe pas. * si le fichier s'arrête durant la deuxième partie c'est certainement que vous n'avez pas demandé assez de mémoire ou de temps CPU * si le fichier est entier c'est soit qu'il y a une erreur lors de l'exécution, soit qu'il y a un problème lors de la copie des outputs. Si le message suivant apparaît dans la deuxième partie du fichier, c'est qu'il y a un problème lors de l'exécution. {{{ ======================================================================== EXECUTION of : mpirun -f ./run_file > out_run_file 2>&1 Return code of executable : 1 IGCM_debug_Exit : EXECUTABLE !!!!!!!!!!!!!!!!!!!!!!!!!! !! IGCM_debug_CallStack !! !------------------------! !------------------------! IGCM_sys_Cp : out_run_file xxxxxxxxxxxx_out_run_file_error ======================================================================== }}} Si au contraire vous avez le message suivant {{{ ======================================================================== EXECUTION of : mpirun -f ./run_file > out_run_file 2>&1 ======================================================================== }}} Il y a alors deux solutions : * dans 90% des cas c'est que le problème s'est produit lors de la copie des outputs. * dans les 10% restant c'est que vous êtes passé par un garde fou du modèle et que celui-ci s'est fini proprement mais avant la fin de la simulation. Dans ce cas là si votre modèle propose un journal de sortie autre que celui de la simulation il faut le consulter. Par exemple, le fichier de sortie de l'océan est stocké sur le serveur de fichiers sous ce nom là : {{{ IGCM_sys_Put_Out : ocean.output xxxxxxxx/OCE/Debug/xxxxxxxx_ocean.output }}} Sinon (par exemple pour LMDZ ou INCA) votre journal de sortie est confondu avec celui de la simulation et celui-ci n'a pas eu le temps d'être copié sur l'espace de stockage (explication [wiki:ModipslBeginner#Commentsontstockéslesfichiersdesortiesdumodèle ICI]). Si votre simulation a tourné sur le $SCRATCHDIR vous pouvez le récupérer là, sinon vous devez relancer votre simulation sur le $SCRATCHDIR (par défaut elle est sur le $TMPDIR). Pour cette opération il faut modifier la variable RUN_DIR_PATH voir [wiki:ModipslBeginner#Créationdujob ICI]. [[BR]] [[BR]] ==== Comment sont stockés les fichiers de sorties du modèle ==== Les sorties de la simulation sont stockées sur le disque de stockage de la machine. Le DMFDIR pour le CCRT, et GAYA pour l'IDRIS. [[BR]] libIGCM permet de créer une architecture de stockage commune à toutes les configurations de modèles : IGCM_OUT. Cette architecture est ordonnancée de la manière suivante : {{{ IGCM_OUT/nom_config/nom_experience/repertoires_composantes/ Exemple pour le modèle couplé IPSLCM5A : IGCM_OUT/IPSLCM5A/DEVT/pdControl/MonExp/ - ATM/ - SRF/ - ICE/ - OCE/ - SBG/ - CPL/ }}} Chaque répertoire de composante contient lui-même deux sous-répertoires : Restart/ et Output/ qui comme leurs noms l'indiquent contiennent pour l'un les fichiers de restart et pour l'autre les fichiers d'output de la simulation. En plus de ces deux répertoires il y en a un troisième Debug/ qui contient éventuellement les fichiers textes liés à la simulations (*.def, fichier Bands ...) [[BR]] A noter : le répertoire Analyse contient les fichiers issus des post-traitements (Time Series : TS_MO ou TS_DA, moyennes saisonnières SE).[[BR]] En plus de ces répertoires propres aux composantes il y a deux répertoires Exe/ et Out/ contenant pour le premier les copies des exécutables de la simulation, et pour le second une copie des journaux de sorties de la simulation. [[BR]] [[BR]] ==== Quels fichiers de sorties sont produits? ==== Dans config.card, vous pouvez gérer la fréquence de sorties de vos fichiers. Par défaut vous avez : * pour l'atmosphère : {{{ [ATM] WriteFrequency="1M 1D HF" }}} c'est à dire des fichiers mensuels (1 valeur par mois) rangés dans ATM/Ouput/MO, des fichiers journaliers rangés par mois (28,30 ou 31 valeurs) dans ATM/Output/DA et des fichiers haute fréquence (4 valeurs par jour) rangés dans ATM/Ouput/HF. * pour l'océan et le coupleur : {{{ [OCE] WriteFrequency="1M 1D" }}} c'est à dire des fichiers mensuels (1 valeur par mois) rangés dans OCE/Ouput/MO (CPL/Output/MO) et des fichiers journaliers rangés par mois (28, 30 ou 31 valeurs) dans OCE/Output/DA (CPL/Output/DA) * pour la glace de mer, les surfaces continentales et la biogéochimie continentale : {{{ WriteFrequency="1M" }}} c'est à dire des fichiers mensuels rangés dans ICE/Ouput/MO, SRF/Output/MO et SBG/Output/MO Que peut-on demander ? * Vous pouvez enlever une fréquence que vous ne souhaitez pas : HF pour ATM par exemple. * Pour ajouter une fréquence, il faut rajouter le fichier généré dans le fichier COMP.card, rajouter le traitement des paramètres de gestion de cette fréquence dans COMP.driver. * Pour modifier le niveau de sorties de LMDZ, les paramètres lev_histf sont à modifier dans le fichier PARAM/physiq.def_L39 (ou _L19 si vous êtes avec 19 niveaux). Par défaut : * lev_histhf=2 * lev_histday=2 * lev_histmth=2 * Pour modifier les sorties de NEMO, vous pouvez ajouter ou supprimer des variables dans le fichier PARAM/iodef.xml. * A faire dans la partie 2 : output files definition pour supprimer des variables. * A faire dans la partie 2 pour ajouter des variables * suffisant pour des variables déjà décrites dans la partie 1 : definition of all existing variables * en modifiant le code NEMO sinon. * Pour modifier le niveau de sortie d'Orchidee, les paramètres SECHIBA_HISTLEVEL et STOMATE_HISTLEVEL sont à modifier dans PARAM/orchidee.def. Par défaut : * SECHIBA_HISTLEVEL = 5 * STOMATE_HISTLEVEL=10 ==== Comment regarder les fichiers sur dods ==== * A l'IDRIS, il faut aller sur le web à l'adresse : http://dodsp.idris.fr/ et choisir son login, sa configuration, sa simulation puis enfin la composante (Output ou Analyse) ou les atlas ou encore le monitoring. * Au CCRT, il faut aller sur le web à l'adresse : http://dods.extra.cea.fr/data/ et choisir son login, da configuration, sa simulation... * Une fois trouvé un fichier netcdf (suffixe .nc), on peut le récupérer en clickant dessus ou l'analyser avec les fonctionalités DODS. Pour cela il faut à son adresse ajouter cgi-bin/nph-dods juste avant son login. Plus d'informations là : http://dods.ipsl.jussieu.fr/ === Execution === ==== Relancer une simulation ==== 1. Pour repartir du début, vous devez effacer dans votre répertoire d'expérience les fichiers stack_error (si existant) et run.card. 2. Vous devez effacer le répertoire $DMFDIR/IGCM_OUT/IPSLCM5A/DEVT/pdControl/_nom_simul_ 3. Si vous aviez changé la variable RUN_DIR_PATH vous devez également effacer le répertoire correspondant à votre simulation sur votre scratchdir. 4. Relancer le job [[BR]] [[BR]] ==== Poursuivre une simulation ==== Dans le fichier config.card modifiez la date de fin de simulation Dans le fichier run.card vous devez : * vérifier que les variables !PeriodDateBegin et !PeriodDateEnd correspondent bien à votre prochaine période de simulation (ex: si vous venez de finir le mois de mai 2000 vous devez avoir !PeriodDateBegin= 20000601 et !PeriodDateEnd= 2000630) * indiquer !PeriodState = !OnQueue * Dans le Job vous devez modifier le numéro du fichier de sortie pour qu'il ne se plante pas en cherchant à remplacer un fichier Script_Output existant. Par défaut c'est Script_Output_NomJob.0001, vous pouvez le changer par Script_Output_NomJob.!CumulPeriod (vous trouverez !CumulPeriod dans run.card) * si jamais vous êtes dans le cas ou votre simulation s'est arrêtée au milieu d'un mois et vous la relancez, il faut effacer les fichiers créés pour ce mois là dans vos archives ($DMFDIR/IGCM_OUT/etc...). Vous pouvez utiliser le script modipsl/libIGCM/clean_month.job pour cela. Mode d'emploi : {{{ cd $SUBMIT_DIR (ie modipsl/config/IPSLCM5A/EXP00) cp ../../../libIGCM/clean_month.job . ; chmod 755 clean_month.job # une seule fois pour toute ./clean_month.job # Repondre aux questions. qsub Job_EXP00 }}} ==== Comment préparer une autre expérience ? ==== Pour cela il suffit de recopier le répertoire EXP00, dans son ensemble, dans un autre répertoire.[[BR]] Par commodité on appellera ce répertoire du même nom que l'expérience (!JobName dans config.card). {{{ cd modipsl/config/IPSLCM5A cp -pr EXP00 MONEXP cd MONEXP rm -f run.card Sc* Jo* # nécessaire si une simu a déjà tourné dans le répertoire EXP00 vi config.card # Changer ce qu'on veut et en particulier JobName ../../util/ins_job # installera un nouveau Job_MONEXP et dira qu'il ne peut pas réinstaller les jobs de post-traitements qui existent déjà. Pas grave. }}} ATTENTION : si vous modifiez vos codes et recompilez durant une simulation c'est ce nouvel exécutable qui sera pris en compte pour la fin de la simulation ==== Démarrer depuis une autre simulation ==== Dans le fichier config.card vous devez préciser en plus les différents paramètres de la section Restarts : {{{ #======================================================================== #D-- Restarts - [Restarts] #D- If you want a GENERAL RULE FOR ALL COMPONENTS RESTARTS, put this flag to 'y' OverRule=y #D- Last day of the experience used as restart RestartDate=1869-12-30 #D- Define restart simulation name RestartJobName=CD1 #D- Path Server Group Login RestartPath=${ARCHIVE}/IGCM_OUT/IPSLCM5A/DEVT/pdControl }}} [[BR]] Si la simulation a été faite par une autre personne, vous devez bien préciser le répertoire : {{{ RestartPath=/u/rech/lab/plabxxx/IGCM_OUT/IPSLCM5A/DEVT/pdControl # ou /dmnfs/contxxx/login/IGCM_OUT/IPSLCM5A/DEVT/pdControl }}} [[BR]] Pour avoir exactement les mêmes résultats, il faut prendre le même fichier Bands. Cela se précise dans COMP/lmdz.card avec les paramètres LMDZ_NbPeriod_adjust et LMDZ_Bands_file_name ainsi : {{{ LMDZ_NbPeriod_adjust=0 # To force usage of this Bands file, put LMDZ_NbPeriod_adjust=0 and replace XXXXXXX by Restart Job Name LMDZ_Bands_file_name=${ARCHIVE}/IGCM_OUT/IPSLCM5/CEPRO0/ATM/Debug/CEPRO0_Bands_96x95x39_3prc.dat_3 }}} '''A noter''' : vous pouvez séparer les paramètres de redémarrage par composantes. Laisser !OverRule=n et utiliser alors les différents paramètres Restart, !RestartDate, !RestartJobName et !RestartPath pour chaque composante (section). Par exemple pour l'atmosphère : {{{ #D-- ATM - [ATM] # WriteFrequency="1M 1D HF" # If config_Restarts_OverRule == 'n' all params are read Restart= y # Last day of the experience used as restart for this component RestartDate=1999-12-30 # Define restart simulation name RestartJobName=2L18 RestartPath=${ARCHIVE}/IGCM_OUT/IPSLCM5A/DEVT/pdControl }}} [[BR]] ==== Comment boucher un trou cad relancer une simulation pour refaire les fichiers d'un mois complet? ==== Saperlipopette, j'ai perdu un fichier! Il s'agit du mois d'octobre 1932 de la simulation ARGENT. Que dois-je faire pour le recréer? Pour boucher un trou, il faut refaire exactement la même simulation, c'est à dire : * sur le serveur de fichiers : * supprimer (ou mettre de côté) les autres fichiers du même mois. Utiliser le suffixe 19321230 pour avoir aussi les fichiers de type Restart. {{{ cd IGCM_OUT/IPSLCM5A/DEVT/pdControl/ARGENT find . -name '*19321030*' -exec rm -f {} \; }}} * sur la machine de calcul : * créer un repertoire dédié spécial : {{{ cp -pr ARGENT ARGENTREDO }}} * dans ce nouveau répertoire, modifier le fichier run.card pour avoir les bonnes valeurs des paramètres suivants : {{{ OldPrefix= ARGENT_19320930 PeriodDateBegin= 1932-10-01 PeriodDateEnd= 1932-10-30 CumulPeriod= xxx # Attention mettre la bonne valeur cad la valeur associé au même mois dans le fichier run.card témoin (ARGENT) PeriodState= OnQueue }}} * modifier le fichier config.card pour ne faire qu'un seul mois ie qu'une seule Period : {{{ DateEnd= 1932-10-30 }}} * vérifier que l'on prendra exactement le même fichier Bands. * Si c'est au delà de la 3ème itération pas de problème, c'est fait automatiquement. * Sinon, dans le fichier COMP/lmdz.card, modifier les paramètres LMDZ_NbPeriod_adjust et LMDZ_Bands_file_name ainsi : {{{ LMDZ_NbPeriod_adjust=0 # To force usage of this Bands file, put LMDZ_NbPeriod_adjust=0 and replace XXXXXXX by Restart Job Name LMDZ_Bands_file_name=${ARCHIVE}/IGCM_OUT/IPSLCM5/CEPRO0/ATM/Debug/CEPRO0_Bands_96x95x39_3prc.dat_3 }}} * relancer la simulation : {{{ vi run.card # vérifier encore une fois vi Job_ARGENT # vérifier les parametres de temps et les noms des Scripts de sortie qsub Job_ARGENT }}} ==== Lancer IPSLCM5A sur la machine Titane (machine Xeon du CCRT) ==== * Etape préalable : assurez-vous que votre login est autorisé à tourner sur la machine titane à l'aide de la commande groups : {{{ mercure - /home/cont003/p86caub : groups }}} Si ce n'est pas le cas, demandez l'autorisation au CCRT en passant par votre responsable de projet. Les étapes à faire sont les mêmes que pour tourner le modèle IPSLCM5A sur mercure, a ceci près : * Avant la compilation ET l'exécution, il faut charger les modules nécessaires : {{{ module load netcdf/3.6.3 }}} * N'oubliez pas de verifier que votre PATH contient bien le path pour l'outil FCM. Plus d'infos [wiki:ModipslBeginner#FCM là]. * Avant la génération du Job de soumission via la commande ./ins_job, il faut préciser le nombre de CPUs demandés dans le config.card en mettant la variable !JobNumProcTot à 32. Par défaut, cela signifie que la composante atmosphérique tournera sur 30 CPUs alors que la composante océanique et le coupleur utiliseront chacun 1 CPU. {{{ JobNumProcTot=32 }}} * La soumission du job se fait à l'aide de la commande ccc_msub {{{ ccc_msub Job }}} * A noter, que les post-traitements s'effectueront sur la machine cesium. Rappel : Pour que cela marche il faut avoir créé des clés avec une '''passphrase vide''' pour ssh et s'être connecté sur cesium au moins une fois. (Attention, si vous vous servez pour vos connexions de clés ssh déjà générées avec des passphrases non vides de ne pas les écraser.) [[BR]] Mémo : {{{ mercure : cd ~/.ssh mercure : ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/cont003/xxxxxx/.ssh/id_rsa): Enter passphrase (empty for no passphrase): (RETURN) Enter same passphrase again: (RETURN) Your identification has been saved in ...../.ssh/id_rsa. Your public key has been saved in ...../.ssh/id_rsa.pub. The key fingerprint is: af:.... mercure : cat id_rsa.pub >>authorized_keys mercure : ssh cesium }}} * Pour améliorer légerement les performances : La configuration par défaut du modèle couplé à la résolution 96x95x39 est quasiment équilibrée, cad que le modèle d'atmosphère sur 30 CPUs est très légerement plus rapide que le modèle d'ocean sur 1 CPU. [[BR]] 1 jour simulé par LMDZ sur 30 CPUs : 25s [[BR]] 1 jour simulé par NEMO sur 1 CPU : 27s [[BR]] ce qui donne 1 mois simulé en 900s (par comparaison on a 1 mois simulé en 600s sur 4 CPUs SX9). On voit donc que c'est le modèle d'océan qui va "guider" le temps de restitution du modèle couplé complet. En utilisant 2 process MPI pour l'océan on obtient : [[BR]] 1 jour simulé par LMDZ sur 29 CPUs : 25s [[BR]] 1 jour simulé par NEMO sur 2 CPU : 15s [[BR]] ce qui va donner 1 mois simulé en 840s. On voit donc que désormais, c'est le modèle d'atmosphère qui va "guider" le temps de restitution du modèle couplé complet. Mais à cette résolution là, il n'est pas possible d'utiliser plus de process pour LMDZ en parallélisation MPI seule (limite à 3 bandes de latitudes par process MPI). La configuration idéale est donc : 29 CPUs ATM, 2 CPUs OCE et 1 CPU pour Oasis (lorsque PISCES n'est pas activé). Si PISCES est activé (c'est le cas avec IPSLCM5A CMIP5) la configuration ideale est : 26 CPUs ATM, 5 CPUs OCE et 1 CPU pour Oasis Pour activer cette configuration-là, deux étapes sont nécessaires : * Compilation : * Pour des raison de qualité (restartabilité NEMO), enlever les cles cpp suivantes pour la compilation : key_vectopt_loop key_vectopt_memory. Pour faire cela : {{{ vi modipsl/config/IPSLCM5A/AA_make supprimer les cles cpp "key_vectopt_loop key_vectopt_memory" de la varibale P_P à la ligne : orca2: ../../modeles/NEMO/WORK (cd ../../modeles/NEMO/WORK; P_P='key_trabbl_dif key_vectopt_loop key_vectopt_memory ... cd modipsl/util ; ./ins_make }}} * Compiler NEMO pour qu'il tourne sur 5 process MPI en modifiant directement le code : {{{ vi modipsl/modeles/NEMO/WORK/par_oce.F90 (lignes 29-31) jpni = 1, & !: number of processors following i jpnj = 5, & !: number of processors following j jpnij = 5 !: nb of local domain = nb of processors cd modipsl/config/IPSLCM5A ; gmake }}} * Execution * Cas particulier : si vous souhaitez faire utiliser à votre NEMO parallèle un restart généré par un NEMO mono-processeur, alors il faut forcer une resoumission (ccc_msub) apres le 1er run de la simulation. Pour cela : * mettre !PeriodNb=1 dans votre Job ; ccc_msub Job * une fois le 1er run en machine, remettre !PeriodNb=48 ==== Lancer IPSLCM5A sur la machine Vargas (machine IBM de l'IDRIS) ==== * Accès au modèle : * Il faut avoir accès à subversion : {{{ module load svn }}} et à fcm : {{{ export PATH=/homegpfs/rech/psl/rpsl035/FCM/bin:$PATH }}} * Compilation : * N'oubliez pas de verifier que votre PATH contient bien le path pour l'outil FCM : /homegpfs/rech/psl/rpsl035/FCM/bin . Plus d'infos [wiki:ModipslBeginner#FCM là]. * il faut supprimer les 2 clés : "key_vectopt_loop key_vectopt_memory" dans config/IPSLCM5A/AA_make. Dans IPSLCM5A/AA_make.gdef (à faire avant ins_make) * il faut explicitement demander l'utilisation de 5 processeurs pour NEMO. Fait pour l'execution mais à faire dans les sources de NEMO. {{{ vi modipsl/modeles/NEMO/WORK/par_oce.F90 (lignes 29-31) jpni = 1, & !: number of processors following i jpnj = 5, & !: number of processors following j jpnij = 5 !: nb of local domain = nb of processors }}} * Exécution : * Repérer un état initial à utiliser. * Modifications dans config.card : * Avant la génération du Job de soumission via la commande ./ins_job, il faut préciser le nombre de CPUs demandés dans le config.card en mettant la variable !JobNumProcTot à 32. {{{ JobNumProcTot=32 }}} * Attention! create_etat0_limit ne fonctionne pas actuellement sur vargas. Il est compilé en parallèle (pour gagner du temps) et l'executable tourne sur le nombre de procs demandé par le job : 32 (ou 16). Comme ce n'est pas prévu dans ce0l, il s'arrête. Il faut donc partir d'un état initial créé autrement : autre simulation, ce0l executé ailleurs, par exemple sur brodie. * Il faut également utiliser la commande adéquate de lancement. Décommenter la ligne suivante et supprimer l'ancienne valeur de !JobRunOptions dans config.card : {{{ JobRunOptions='"-pgmmodel MPMD -cmdfile"' }}} * Attention! Préciser dans PARAM/run.def {{{ use_filtre_fft=n }}} * La soumission du job se fait à l'aide de la commande {{{llsubmit}}} et la suppression par {{{llcancel}}} {{{ llsubmit Job_EXP00 }}} * A noter, que les post-traitements s'effectueront sur la machine ulam. === Les post-traitements avec libIGCM === Cette page donne quelques informations sur les post-traitements du couplé IPSLCM5A. Les post-traitements sont des opérations systématiquement lancées en fin de simulation sur les frontales. Il s'agit des rebuild ou assemblage des fichiers créés par sous-domaines par les applications parallèles (LMDZ et ORCHIDEE dans le cas du couplé IPSLCM5A). Ils concernent également les fichiers concernés par des Patchs ou modifications systématiques avant stockage (axe des temps, masque terre/océan, ...). Il s'agit des séries temporelles (qui lancent les monitoring) et des moyennes saisonnières (qui lancent les atlas). ==== Quels sont les paramètres de lancement des post-traitement? ==== Dans le fichier [http://forge.ipsl.jussieu.fr/igcmg/browser/CONFIG/IPSLCM/IPSLCM5A/EXP00/config.card config.card], les variables qui gèrent les post-traitements sont dans la section Post :: {{{ 82 #D-- Post - 83 [Post] 84 #D- Do we rebuild parallel output, this flag determines 85 #D- frequency of rebuild submission (use NONE for DRYRUN=3) 86 RebuildFrequency=1Y 87 #D- Do we rebuild parallel output from archive 88 RebuildFromArchive=true 89 #D- If you want to produce time series, this flag determines 90 #D- frequency of post-processing submission 91 TimeSeriesFrequency=10Y 92 #D- If you want to produce seasonal average, this flag determines 93 #D- the period of this average 94 SeasonalFrequency=10Y 95 #D- Offset for seasonal average first start dates ; same unit as SeasonalFrequency 96 #D- Usefull if you do not want to consider the first X simulation's years 97 SeasonalFrequencyOffset=0 }}} * !RebuildFrequency=1Y indique la fréquence de lancement des travaux REBUILDA. A noter: si !JobType=DEV, le paramètre est forcé la valeur de !PeriodLength. '''Attention''' : !RebuildFrequency n'accepte pas comme valeur des multiples de month (6M par exemple) * !RebuildFromArchive=true indique que les fichiers seront stockés dans leur état initial (par sous-domaine), sur la machine de stockage. Le job REBUILDA commencera par aller les chercher sur le serveur de fichiers, avant de les assembler (rebuild), de leur appliquer les Patchs demandés puis de les stocker dans le répertoire usuel COMP/Output/MO ou COMP/Output/DA pour les fichiers mensuels ou journaliers de la composante COMP (OCE, ICE, ATM, SRF, ...). A noter c'est lui qui enchaine les autres post-traitements lancés par les jobs create_ts.job et create_se.job * !TimeSeriesFrequency=10Y Les séries temporelles seront lancées tous les 10 ans. * !SeasonalFrequency=10Y Les moyennes saisonnières (des mois de janvier, février,...) seront lancées tous les 10 ans. * !SeasonalFrequencyOffset=0 Les premières années seront sautées avant de commencer à calculer les moyennes saisonnières. ==== Où tournent les post-traitements? ==== Les post-traitements tournent généralement sur les frontales des calculateurs. Il s'agit de travaux systématiques de traitement de fichiers qui n'ont pas leur place sur les calculateurs. Peu d'optimisation, peu de parallélisation massive, ... Sur chaque centre, les machines de calcul ont leur frontale privilégiée. || Centre || Calculateur || Frontale || || CCRT || mercure SX8 || frontale TX7 mercure || || CCRT || mercure SX9 || cesium || || CCRT || platine || cesium || || IDRIS || brodie || ulam || || IDRIS || vargas || ulam || '''Attention''' pour le passage de mercureSX9 (ou mercureSX8) à Cesium il faut faire au préalable au moins une fois une connection ssh entre les deux machines. {{{ ssh login@cesium.ccc.cea.fr }}} ==== Comment vérifier que les post-traitements sont bien passés? ==== * sur ulam, les sorties des post-traitements sont là : $WORKDIR/IGCM_OUT/IPSLCM5A/Ma_simulation * sur la frontale TX7, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation * sur cesium, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation * sur la frontale de platine, ils sont là : $SCRATCHDIR/IGCM_OUT/IPSLCM5A/Ma_simulation On trouvera dans ces répertoires les fichiers de sorties des jobs : rebuild, ts, se, atlas. Sur cesium 2 fichiers standard error (.e) et standard output (.o) par job. A noter : Les commandes de mise sur dods sont faites à la fin du job de monitoring ou à la fin de chaque atlas. ==== Qu'est-ce que rebuild? ==== * rebuild est un utilitaire qui permet de recombiner plusieurs fichiers créés par un programme parallèle (sous-domaines) en un seul. * rebuild est disponible avec IOIPSL. Voir http://forge.ipsl.jussieu.fr/igcmg/browser/IOIPSL/trunk/tools (il est donc distribué avec les différentes configuration via modipsl) * rebuild est installé sur les frontales de l'IDRIS et du CCRT dans les comptes communs. Il est appelé automatiquement à la fréquence !RebuildFrequency et représente la toute première étape des post-traitements. ==== Comment relancer les rebuild? ==== Pour relancer à partir des rebuild, il faut aller sur la frontale, dans le répertoire modipsl/libIGCM (l'original ou celui synchronisé dans ~MIRROR/xxxxxx/modipsl/libIGCM), modifier le job : rebuild_fromArchive.job en précisant les paramètres, le lancer sur la frontale. llsubmit sur ulam, ccc_msub sur cesium. Paramètres à modifier : {{{ libIGCM=${libIGCM:=/path/to/your/libIGCM} REBUILD_DIR=${REBUILD_DIR:=/path/to/your/TMP/REBUILD/FILES} NbRebuildDir=${NbRebuildDir:=12} PeriodDateBegin=${PeriodDateBegin:=18901201} config_UserChoices_JobName=${config_UserChoices_JobName:=name_of_the_job} R_SAVE=${R_SAVE:=/path/to/your/ARCHIVE/FILES} }}} '''Attention : ''' avant de lancer le job vérifiez que son entête correspond bien à la frontale sur laquelle vous travaillez (en particulier si vous le lancer sur une autre frontale que celle de votre machine de calcul). Pour cela comparez l'entête de votre job et celle qui est indiquée dans libIGM/AA_rebuild_fromWorkdir (ou autre). ==== Qu'est-ce qu'une Time Series? ==== Une Time Serie est un nouveau fichier, qui contient une seule variable sur toute la longueur d'une simulation (!ChunckJob2D = NONE) ou sur une période plus courte pour les variables 3D (!ChunckJob3D = 50Y) . Elles sont décrites dans les fichiers COMP/*.card derrière les paramètres !TimeSeriesVars2D et !TimeSeriesVars3D. Exemple pour lmdz : {{{ 45 [OutputFiles] 46 List= (histmth.nc, ${R_OUT_ATM_O_M}/${PREFIX}_1M_histmth.nc, Post_1M_histmth), \ ... 53 [Post_1M_histmth] 54 Patches= (Patch_20091030_histcom_time_axis) 55 GatherWithInternal = (lon, lat, presnivs, time_counter, aire) 56 TimeSeriesVars2D = (bils, cldh, ... ) 57 ChunckJob2D = NONE 58 TimeSeriesVars3D = () 59 ChunckJob3D = NONE }}} * Chaque fichier de sortie (section [!OutputFiles]) est associé à un post-traitement : Post_1M_histmth dans l'exemple. * post_1M_histmth est une section (débutant par "[Post_1M_histmth]") * Cette section contient les variables : Patches= , !GatherWithInternal = , !TimeSeriesVars2D = , !ChunckJob2D , !TimeSeriesVars3D et !ChunckJob3D * Patches= (Patch_20091030_histcom_time_axis) Il s'agit du Patch qui sera appliqué sur le fichier avant son stockage sur le serveur de fichiers. Ils sont visibles au niveau de : [http://forge.ipsl.jussieu.fr/libigcm/browser/trunk/libIGCM/libIGCM_post libIGCM_post] On peut avoir plusieurs Patch appliqués l'un après l'autre. * !GatherWithInternal = (lon, lat, presnivs, time_counter, aire) Il s'agit des variables qui sont extraites du fichier initial et rangées avec la variable de la Time Serie. Les Time Series sont rangées sur le serveur de fichiers dans les répertoires IGCM_OUT/IPSLCM5A/DEVT/pdControl/MyExp/ATM/Analyse/TS_MO pour celles qui sont issues des fichiers mensuelles. TS_DA pour celles qui sont issues des fichiers journaliers. A noter : Il y a un job de Time Series 2D et un job par Time Series 3D sur les frontales. Pour le couplé IPSLCM5A , il y en donc 5 actuellement. ==== Comment ajouter une variable dans les Time Series? ==== Pour ajouter une nouvelle Time Serie il suffit d'ajouter son nom à la série de variables existantes, en prenant soin de la mettre avec les variables similaires : 2D ou 3D. ==== Qu'est-ce qu'un monitoring? ==== Voici un exemple de Monitoring du couplé IPSLCM5A : [http://dods.idris.fr/rpsl003/IPSLCM5A/DEVT/pdControl/BAL1210/MONITORING/ 10 ans] On peut les voir directement sur les serveurs de fichiers dans le répertoire : IGCM_OUT/IPSLCM5A/DEVT/pdControl/MyExp/MONITORING. Le monitoring d'une simulation est composé de plusieurs courbes produites à partir de variables des Time Series. Il contient également une première page détaillant les dates de passage en machine de la simulation. Cette page permet de suivre la progression d'une simulation en machine. Le monitoring est lancé automatiquement à la fin des Time Series. ==== Comment superposer des courbes de monitoring de simus stockées à l'IDRIS et/ou au CCRT? ==== Martial a rédigé ce mémo : {{{ Tu vas sur : http://igcmg.lsce.ipsl.fr/monitoring/ tu rentres dans l'onglet 1 : http://dods.extra.cea.fr/cgi-bin/nph-dods/data/p86cadul/OL2 puis tu pousses "List directories". Dans l'onglet 2, j'ai alors choisi le 27, 29, 30 et 33 puis tu pousses "search files". Dans l'onglet 3, tu prends la première variable (SBG_BIOMASS) et tu pousses "Validate" puis "Validate" dans l'onglet 4 et "Prepare and Run the ferret script". Ensuite , tu as une page appelée "http://igcmg.lsce.ipsl.fr/monitoring/script.php" avec un joli multi-monitoring sur la biomasse qui apparaît et tu cliques sur "Run script on server". Dans l'aide 'Help' tu as la manip pour enregistrer le script ferret et le faire tourner en local (ça fonctionne bien). Amusez-vous bien ! }}} Pour sélectionner des simus sur les 2 centres, il faut revenir à l'étape 1 et appuyer sur append directories pour les ajouter. ==== Comment ajouter une figure dans les monitoring? ==== Les monitoring sont paramétrés là: ~compte_commun/atlas/ Par exemple pour LMDZ : monitoring01_lmdz_LMD9695.cfg Il est possible de modifier un monitoring en créant un répertoire POST locale à la configuration, en recopiant un fichier .cfg et en le modifant à sa convenance. Il y a 2 exemples dans le couplé. Voir [http://forge.ipsl.jussieu.fr/igcmg/browser/CONFIG/CONFIG/IPSLCM/IPSLCM5A/EXP00/POST post-traitements spécifiques] '''Attention''' : pour faire une opération entre deux variables il faut impérativement la délimiter avec des parenthèses : {{{ #----------------------------------------------------------------------------------------------------------------- # field | files patterns | files additionnal | operations | title | units | calcul of area #----------------------------------------------------------------------------------------------------------------- nettop_global | "tops topl" | LMDZ4.0_9695_grid.nc | "(tops[d=1]-topl[d=2])" | "TOA. total heat flux (GLOBAL)" | "W/m^2" | "aire[d=3]" }}} ==== Qu'est-ce qu'une moyenne saisonnière? ==== Les fichiers SE ou moyennes saisonnières sont lancées automatiquement à la fréquence !SeasonalFrequency=10Y (en faisant attention à !SeasonalFrequencyOffset=0) lorsqu'il y a autre choses que NONE dans le dernier paramètre du fichier dans la section '[!OutputFiles]'. Tous les fichiers avec un Post demandé sont alors moyennés avec la commande ncra avant d'être stockés dans le répertoire : IGCM_OUT/IPSLCM5A/DEVT/pdControl/MyExp/ATM/Analyse/SE 1 fichier par !SeasonalFrequency=10Y ==== Où voir les atlas? ==== Voici un exemple d'atlas du couplé IPSLCM5A disponible sur dods : [http://dods.idris.fr/rpsl003/IPSLCM5A/DEVT/pdControl/BAL1210/ATLAS/SE_2000_2009/ATM/ATM.html ATM] Il y a au moins 8 répertoires avec les atlas pour le couplé. On peut les voir directement sur les serveurs de fichiers dans le répertoire : IGCM_OUT/IPSLCM5A/DEVT/pdControl/MyExp/ATLAS. Les atlas sont des outils mis à disposition sous les comptes communs. Voir ~compte_commun/atlas/ Ils sont basés sur des fichiers atlas_composante.cfg. utilisant les outils fast/atlas. Voir : http://dods.ipsl.jussieu.fr/fast/ ==== Comment relancer les post-traitements depuis la machine de post-traitement? ==== Les différentes étapes sur un exemple (la simulation couplée ST11 de la configuration IPSLCM5A a tourné sur la machine SX9 mercure du CCRT et ses post-traitements sont effectués sur la machine cesium du CCRT). * On se met sur la machine cesium et on prépare le terrain : {{{ cd ; mkdir -p POST/ST11 ; cd POST/ST11 }}} * On recopie les cartes caractérisant les composantes (depuis le répertoire ou la simulation a été lancée) {{{ cp –r /home/cont003/p86caub/ST11/config/IPSLCM5A/ST11/COMP . }}} * On recopie les post-traitements spécifiques à la configuration (depuis le répertoire ou la simulation a été lancée) {{{ cp –r /home/cont003/p86caub/ST11/config/IPSLCM5A/ST11/POST . }}} * On recopie les cartes spécifiques (config.card et run.card) à la simulation (depuis le répertoire où la simulation a été lancée) {{{ cp –r /home/cont003/p86caub/ST11/config/IPSLCM5A/ST11/config.card . cp –r /home/cont003/p86caub/ST11/config/IPSLCM5A/ST11/run.card . }}} * On recopie les jobs de post-traitement à soumettre : {{{ cp /home/cont003/p86caub/ST11/libIGCM/rebuild_fromArchive.job . cp /home/cont003/p86caub/ST11/libIGCM/create_ts.job . cp /home/cont003/p86caub/ST11/libIGCM/create_se.job . }}} ou bien si on est dans le cas !RebuildFromArchive=NONE {{{ cp /home/cont003/p86caub/ST11/libIGCM/rebuild_fromWorkdir.job . cp /home/cont003/p86caub/ST11/libIGCM/create_ts.job . cp /home/cont003/p86caub/ST11/libIGCM/create_se.job . }}} * On adapte les jobs à soumettre en modifiant certaines variables : Dans tous les jobs à lancer (rebuild_fromArchive.job, create_ts.job et create_se.job), il faut modifier : {{{ StandAlone=true libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l’expérience }}} Dans rebuild_fromArchive.job, il faut modifier : {{{ PeriodDateBegin=20191201 # Date de fin de la série à rebuilder NbRebuildDir=12 # Nombre de repertoires de la série à rebuilder jusqu'à la PeriodDateBegin config_UserChoices_JobName=ST11 R_SAVE=${DMFDIR}/IGCM_OUT/IPSLCM5A/DEVT/pdControl/${config_UserChoices_JobName} REBUILD_DIR=${R_SAVE}/TMP }}} ou bien si on est dans le cas !RebuildFromArchive=NONE il faut modifier le rebuild_fromWorkdir.job : {{{ PeriodDateBegin=20191201 # Date de fin de la série à rebuilder NbRebuildDir=12 # Nombre de repertoires de la série à rebuilder jusqu'à la PeriodDateBegin config_UserChoices_JobName=ST11 R_SAVE=${DMFDIR}/IGCM_OUT/IPSLCM5A/DEVT/pdControl/${config_UserChoices_JobName} REBUILD_DIR=${R_SAVE}/TMP MASTER=mercure # ou bien titane libIGCM=${HOME}/MIRROR/ST11/libIGCM # Pointe vers le répertoire libIGCM de l’expérience libIGCM_SX = # POinte vers le répertoire libIGCM utilisé sur la machine MASTER }}} Dans create_ts.job, il faut modifier : {{{ PeriodDateEnd=20191230 # date de fin des time-series a créer CompletedFlag=20091230 # date de fin des times-series déjà existantes (si tel est le cas) TsTask=2D # 2D or 3D RebuildFrequency=true }}} Dans create_se.job, il faut modifier : {{{ PeriodDateEnd=20191230 # date de fin de la décennie a traiter }}} * Lancement des jobs de post-traitement : {{{ ccc_msub rebuild_fromArchive.job ccc_msub create_ts.job ccc_msub create_se.job }}} ou bien si on est dans le cas !RebuildFromArchive=NONE {{{ ccc_msub rebuild_fromWorkdir.job ccc_msub create_ts.job ccc_msub create_se.job }}} '''Attention : ''' avant de lancer le job vérifiez que son entête correspond bien à la frontale sur laquelle vous travaillez (en particulier si vous le lancer sur une autre frontale que celle de votre machine de calcul). Pour cela comparez l'entête de votre job et celle qui est indiquée dans libIGM/AA_rebuild_fromWorkdir (ou autre). ==== Comment utiliser !TimeSeries_Checker.job? ==== !TimeSeries_Checker.job est un script (qui se lance en interactif) qui vérifie les Séries temporelles (TS) existantes et relance les jobs create_TS nécessaires pour reconstruire les TS manquantes. C'est donc un utilitaire de post-traitement qui se lance depuis la machine de post-traitement. Voir question précédente. Les différentes étapes sur un exemple (la simulation couplée MYEXP de la configuration IPSLCM5A a tourné sur la machine SX9 mercure du CCRT et ses post-traitements sont effectués sur la machine cesium du CCRT). * On se met sur la machine cesium et on prépare le terrain (voir question précédente) : {{{ Cesium > cd $WORKDIR; mkdir -p POST/MYEXP ; cd POST/MYEXP }}} * On recopie les cartes caractérisant les composantes (depuis le répertoire ou la simulation a été lancée). Voir aussi question précédente. {{{ Cesium> scp –pr mercure:... MYEXP/COMP . Cesium> scp –pr mercure:... MYEXP/POST . Cesium> scp –r mercure:... MYEXP/config.card . }}} * On recopie les jobs de post-traitement à soumettre : {{{ Cesium> scp mercure:.../libIGCM/create_ts.job . Cesium> scp mercure:.../libIGCM/TimeSeries_Checker.job . }}} * On adapte !TimeSeries_Checker.job en modifiant certaines variables : {{{ libIGCM=${libIGCM:=...MYEXP/modipsl/libIGCM} ==> libIGCM sur cesium!!!! SpaceName=${SpaceName:=DEVT} ExperimentName=${ExperimentName:=pdControl} JobName=${JobName:=MYEXP} CARD_DIR=${CARD_DIR:=${CURRENT_DIR}} }}} * Lancement de !TimeSeries_Checker.job : {{{ cesium> ./TimeSeries_Checker.job }}} ou mieux encore , en ksh : {{{ cesium> ./TimeSeries_Checker.job 2>&1 | tee TSC_OUT =====> en ksh pour garder la trace dans un fichier cesium> grep Batch TSC_OUT =====> pour repérer l'ensemble des jobs lancés }}} ==== Comment faire une moyenne saisonnière sur 100 ans? ==== Ceci est possible depuis libIGCM_v1_10 cad depuis le 13/12/2010. Comment faire une moyenne saisonnière sur 100 ans? Le job create_multi_se est là pour ça. Il faut le lancer sur le serveur de post-traitement après avoir vérifié que les différentes décennies étaient présentes sur le serveur de fichiers (SE_checker). Notez que l'atlas de ces 100 ans sera également créé. Voir exemple de l'atlas de 100 ans de piControl2 là : [http://dods.extra.cea.fr/data/p86caub/IPSLCM5A/PROD/piControl/piControl2/ATLAS/SE_2000_2099/ SE 2000 2099] 1. si ce n'est déjà fait, installer un répertoire spécial post-traitement. Voir [wiki:ModipslBeginner#Commentrelancerlespost-traitementsdepuislamachinedepost-traitement] 1. recopier create_se.job, SE_checker.job et create_multi_se.job 1. vérifier/modifier dans create_se.job les variables : {{{ libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM} }}} 1. vérifier que les décennies sont toutes présentes. 1. vérifier/modifier les variables dans SE_checker.job: {{{ libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM} SpaceName=${SpaceName:=PROD} ExperimentName=${ExperimentName:=piControl} JobName=${JobName:=piControlMR1} CARD_DIR=${CARD_DIR:=${CURRENT_DIR}} }}} 1. lancer en interactif : {{{ ./SE_checker.job }}} la vérification. Les jobs create_se.job nécessaires seront lancés. Exemple : {{{ ./SE_Checker.job ==================================================== Where do we run ? cesium21 Linux cesium21 2.6.18-194.11.4.el5 #1 SMP Tue Sep 21 05:04:09 EDT 2010 x86_64 ==================================================== sys source cesium Intel X-64 lib. --Debug1--> DefineVariableFromOption : config_UserChoices --------------Debug3--> config_UserChoices_JobName=piControlMR1 --------------Debug3--> config_UserChoices_CalendarType=noleap --------------Debug3--> config_UserChoices_DateBegin=1800-01-01 --------------Debug3--> config_UserChoices_DateEnd=2099-12-31 --Debug1--> DateBegin/End for SE : 1800_1809 --Debug1--> ATM --Debug1--> SRF --Debug1--> SBG --Debug1--> OCE --Debug1--> ICE --Debug1--> MBG --Debug1--> CPL ... --Debug1--> DateBegin/End for SE : 2030_2039 --Debug1--> ATM --Debug1--> 2 file(s) missing for ATM : --Debug1--> piControlMR1_SE_2030_2039_1M_histmth.nc --Debug1--> piControlMR1_SE_2030_2039_1M_histmthNMC.nc --Debug1--> SRF --Debug1--> 1 file(s) missing for SRF : --Debug1--> piControlMR1_SE_2030_2039_1M_sechiba_history.nc --Debug1--> SBG --Debug1--> 2 file(s) missing for SBG : --Debug1--> piControlMR1_SE_2030_2039_1M_stomate_history.nc --Debug1--> piControlMR1_SE_2030_2039_1M_stomate_ipcc_history.nc --Debug1--> OCE --Debug1--> 4 file(s) missing for OCE : --Debug1--> piControlMR1_SE_2030_2039_1M_grid_T.nc --Debug1--> piControlMR1_SE_2030_2039_1M_grid_U.nc --Debug1--> piControlMR1_SE_2030_2039_1M_grid_V.nc --Debug1--> piControlMR1_SE_2030_2039_1M_grid_W.nc --Debug1--> ICE --Debug1--> 1 file(s) missing for ICE : --Debug1--> piControlMR1_SE_2030_2039_1M_icemod.nc --Debug1--> MBG --Debug1--> 3 file(s) missing for MBG : --Debug1--> piControlMR1_SE_2030_2039_1M_ptrc_T.nc --Debug1--> piControlMR1_SE_2030_2039_1M_diad_T.nc --Debug1--> piControlMR1_SE_2030_2039_1M_dbio_T.nc --Debug1--> CPL --Debug1--> 2 file(s) missing for CPL : --Debug1--> piControlMR1_SE_2030_2039_1M_cpl_atm.nc --Debug1--> piControlMR1_SE_2030_2039_1M_cpl_oce.nc --------Debug2--> Submit create_se for period 2030-2039 IGCM_sys_MkdirWork : .../POST_CMIP5/piControl/piControlMR1/OutScript IGCM_sys_QsubPost : create_se Submitted Batch Session 179472 ... }}} 1. attendre la fin des jobs create_se 1. recopier create_multi_se.job 1. Vérifier/Modifier les variables : {{{ libIGCM=${libIGCM:=.../POST_CMIP5/libIGCM_v1_10/modipsl/libIGCM} }}} 1. si besoin, paramétrer le nombre de décennies dans config.card. 50Y ou 50 ans par défaut. Ajouter cette ligne dans la section POST cad à la fin après le mot-clé [POST] {{{ MultiSeasonalFrequency=100Y }}} 1. lancer le job create_multi_se.job : ccc_msub create_multi_se.job 1. Les années prises en compte seront les dernières cad celles entre !DateEnd (pris dans config.card du répertoire local) et !DateEnd - !MultiSaesonalFrequency. Les moyennes sont stockées dans les répertoires Analyse des différentes composantes dans les sous-répertoires SE_100Y. Par exemple : ATM/Analyse/SE_100Y/ == Questions/Réponses des autres documentations == * [http://forge.ipsl.jussieu.fr/libigcm/wiki/DocUtilisateur/InstallationIPSLCM4v2#RedémarragedepuisdesrésultatsIPSLCM4_v1_OASIS3anciensscripts Redémarrage depuis des fichiers créés par un couplé IPSLCM4_v1] * [http://forge.ipsl.jussieu.fr/libigcm/wiki/DocUtilisateur/InstallationIPSLCM4v2#RedémarragedepuisdesrésultatsIPSLCM4_v1Oasis2.4 Redémarrage depuis des fichiers créés par un couplé IPSLCM4_v1_OASIS3] * [wiki:IPSLCM4_v2_PAR#CompilationFcm Comment remettre en route une compilation de LMDZ après recopie d'un répertoire complet sur un autre] * [wiki:IPSLCM4_v2_PAR#CommentavoirautantdesortiestexteLMDZquedetaches Comment avoir autant de fichiers de sorties texte LMDZ que de taches lancées en parallèle] * [wiki:IPSLCM4_v2_PAR#Commentdebogueravectotalview Comment déboguer le couplé avec totalview sur mercure] * [http://forge.ipsl.jussieu.fr/libigcm/wiki/libIGCM/DocUtilisateur/FAQ FAQ libIGCM ] * [http://forge.ipsl.jussieu.fr/libigcm/wiki/libIGCM/DocUtilisateur/FAQ#Messagesderreur Messages erreurs dans Script_output] * [http://forge.ipsl.jussieu.fr/inca/wiki/FAQ_LMDZINCA FAQ LMDZINCA]