Aller au contenu. | Aller à la navigation

Outils personnels
Se connecter
Sections
Vous êtes ici : Accueil Utilisateurs FAQ Sources Rajouter des sorties

Rajouter des sorties

Je veux rajouter des sorties dans la physique. Comment faire suite à la réorganisation des routines histdef/histwrite/phys_output_*?

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)