Rajouter des sorties
Les sorties n'ont pas fondamentalement changées, on a juste ajouté une surcouche pour pouvoir choisir les sorties à faire plus facilement. Cela se fait toujours en 2 étapes, une de définition (qui se fait maintenant dans phys_output_mod.F90) et une d'écriture (dans phys_output_write.h). L'ajout principal, c'est la définition d'une nouvelle structure associée à chaque variable à sortir. Cette structure est de type "5 entiers, 1 variable caractère" (voir la définition de ctrl_out au début de phys_output_mod.F90) qui correspondent aux différents niveaux de sorties que l'on souhaite pour la variable à sortir et au nom que l'on veut lui donner dans les fichier de sortie. Par exemple, pour la variable snow, on a défini un drapeau
o_snow = ctrl_out((/ 1, 1, 10, 1, 10 /),'snow')
qui veut dire que la variable s'appellera 'snow' dans les fichiers hist??? et qu'elle sera sortie à partir du niveau (celui qui est défini par lev_hist??? dans physiq.def)
1 dans le fichier histmth
1 histday
10 histhf
1 histins
10 histLES
Ceci permet, en fait, de contrôler le niveau de sortie des variables directement dans un fichier output.def. Par exemple, la variable topswai est normalement sortie à partir du niveau 4 dans histmth et 10 dans les autres. Si on sortir cette variable dans tous les fichiers histoire sans recompiler les sources, on rajoute la ligne
flag_topswai = 1, 1, 1, 1, 1
dans le fichier output.def.
Donc pour rajouter des variables de sortie, on définit une politique de sortie de la variable et son petit nom dans une nouvelle structure (que je te suggère de nommer o_qque_chose et qu'on rajoute au début de phys_output_mod.F90 dans la partie déclaration) et ensuite on rajoute les lignes
CALL histdef2d(...)
qu'il faut dans phys_output_mod.F90
et les blocs
IF (o_???flag(iff)<=lev_files(iff)) THEN
CALL histwrite_phy(...)
ENDIF
qu'il faut dans phys_output_write.h
(en se basant sur la variable snow, par exemple)
Enfin, ne pas oublier de modifier les fichiers *xml pour les sorties XIOS (voir la Faq suivante)