/[lmdze]/trunk/Documentation/Manuel_LMDZE.texfol/Manuel-LMDZE.tex
ViewVC logotype

Annotation of /trunk/Documentation/Manuel_LMDZE.texfol/Manuel-LMDZE.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18 - (hide annotations)
Thu Aug 7 12:29:13 2008 UTC (15 years, 10 months ago) by guez
File MIME type: application/x-tex
File size: 87150 byte(s)
In module "regr_pr", rewrote scanning of horizontal positions as a
single set of loops, using a mask.

Added some "intent" attributes.

In "dynredem0", replaced calls to Fortran 77 interface of NetCDF by
calls to NetCDF95. Removed calls to "nf_redef", regrouped all writing
operations. In "dynredem1", replaced some calls to Fortran 77
interface of NetCDF by calls to Fortran 90 interface.

Renamed variable "nqmax" to "nq_phys".

In "physiq", if "nq >= 5" then "wo" is computed from the
parameterization of "Cariolle".

1 guez 11 \documentclass[a4paper]{article}
2    
3     % Packages
4    
5     \usepackage[latin1]{inputenc}
6     \usepackage{ifpdf}
7    
8     \ifpdf
9     \usepackage{aeguill}
10     \usepackage[pdftex]{color,graphicx}
11     \else
12     \usepackage[T1]{fontenc}
13     \usepackage[dvips]{color,graphicx}
14     \usepackage[active]{srcltx}
15     \fi
16    
17     \usepackage[frenchb]{babel}
18     \usepackage{mathrsfs}
19     \usepackage{amsmath}
20     \usepackage{amsfonts}
21     \usepackage{mathabx}
22     \usepackage{algorithmic}
23     \usepackage[all]{xy}
24    
25    
26     % Load last:
27     \ifpdf
28     \usepackage{hyperref}
29     \hypersetup{pdftex, pdftitle={Manuel pour LMDZE}, pdfauthor={Lionel
30     Guez}, pdfstartview=FitBH}
31     \else
32     \usepackage[hypertex]{hyperref}
33     \fi
34    
35     %---------------
36    
37     \newcommand{\ud}{\mathrm{d}}
38     \DeclareMathOperator{\diverg}{div}
39     \DeclareMathOperator{\tgh}{th}
40    
41     \newcommand{\Eng}[1]{\textit{\foreignlanguage{english}{#1}}}
42     % (English language)
43    
44     \newcommand{\pseudov}[1]{\overset{\curvearrowbotright}{#1}}
45    
46     \renewcommand{\algorithmicdo}{\textbf{faire}}
47     \renewcommand{\algorithmicend}{\textbf{fin}}
48     \renewcommand{\algorithmicfor}{\textbf{pour}}
49    
50     \author{Lionel GUEZ}
51     \title{Manuel pour LMDZE}
52    
53     %---------------
54    
55     \begin{document}
56    
57     \maketitle
58     \ifpdf
59     \else
60     \tableofcontents
61     \fi
62     \listoffigures
63     \newpage
64    
65     \part{Installation}
66    
67     LMDZE utilise quatre bibliothèques. Cf. figure (\ref{fig:libraries}).
68     \begin{figure}[htbp]
69     \centering
70     \includegraphics{Graphiques/libraries}
71     \caption{Bibliothèques utilisées par LMDZE.}
72     \label{fig:libraries}
73     \end{figure}
74    
75     Pour télécharger le programme :
76     \begin{verbatim}
77     svn checkout \
78 guez 18 svn+ssh://guez@forge.ipsl.jussieu.fr/ipsl/forge/projets/lmdze/svn/trunk \
79     LMDZE
80 guez 11 \end{verbatim}
81 guez 18 (\verb+guez@+ est inutile si l'utilisateur courant est \verb+guez+.)
82 guez 11
83     Pour compiler \verb+gcm+ :
84     \begin{enumerate}
85 guez 12 \item Choisir la résolution spatiale dans \verb+dimens_m.f90+.
86     Choisir la valeur de \verb+kdlon+ dans \verb+phylmd/raddim.f90+.
87     Pour cela, consulter le tableau (\ref{tab:kdlon}), les
88 guez 11 \href{http://www.lmd.jussieu.fr/~lmdz/LMDZ4/choisir_une_resolution.html}{conseils}
89     et le programme
90     \href{file:///user/guez/Documents/Informatique_fonctionnement/Tests/choixdim.f}{\texttt{choixdim}}.
91     (Il faudra adapter les pas de temps à l'exécution.)
92     \item Vérifier la cible du lien \verb+compiler.mk+. Vérifier dans
93     \verb+make.sh+ la valeur de \verb+dest_dir+.
94     \item \verb+make.sh+. (Si on a modifié les dimensions alors il faudra
95     créer un nouvel état initial adapté à ces dimensions. Il faut donc
96     recompiler \verb+etat0_lim+.)
97     \end{enumerate}
98     \begin{table}[htbp]
99     \centering
100     \begin{tabular}{lll}
101     \texttt{iim} & \texttt{jjm} & \texttt{kdlon} \\
102     \hline
103     32 & 24 & 41 \\
104     48 & 32 & 149 \\
105     72 & 46 & 1621 \\
106     96 & 72 & 487 \\
107     160 & 98 & 78 \\
108     192 & 43 & 10
109     \end{tabular}
110     \caption{Choix de \texttt{kdlon} dans \texttt{phylmd/raddim.f}.}
111     \label{tab:kdlon}
112     \end{table}
113    
114     La compilation de \verb+clmain.F+ avec le compilateur IBM XL Fortran
115     Enterprise Edition V9.1 Version: 09.01.0000.0005 et les options
116     \verb+-O5 -qnostrict -qessl+ n'est pas finie en 10 h. Avec les options
117     \verb+-O4 -qnostrict -qessl+, elle n'est pas finie en 1 h.
118    
119     \part{Utilisation comme boîte noire}
120    
121     Cf. liste des fichiers d'entrée nécessaires sur le
122 guez 12 \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Guide_IPSL_climate_models/inout
123     LMDZE.odg}{schéma des entrées-sorties}.
124 guez 11
125 guez 12 Les fichiers \verb+ECDYN.nc+ et \verb+ECPHY.nc+ contiennent des
126     données de réanalyse ERA 40 de l'ECMWF, pour un jour particulier, avec
127     une résolution de 1°. Refaire ces fichiers pour la date initiale
128     choisie. Les
129     \href{http://dataipsl.ipsl.jussieu.fr/data-ipsl/ecmwf-4.html}{données
130     ERA 40} sont accessibles par le centre de données de l'IPSL.
131 guez 11
132 guez 12 Le fichier \verb+amipbc_sic_1x1.nc+ donne la fraction de la surface de
133     la mer couverte par de la glace. Les fichiers \verb+amipbc_sic_1x1.nc+
134     et \verb+amipbc_sst_1x1.nc+ viennent du projet
135     \href{http://www-pcmdi.llnl.gov/projects/amip/AMIP2EXPDSN/BCS/bcsintro.php}{AMIP
136     II}.
137    
138     \verb+Rugos.nc+ contient la contribution saisonnière de la longueur de
139     rugosité (excluant la contribution des variations de relief). Ces
140     données viennent de la NASA. \verb+Relief.nc+ contient des données de
141     la NASA, corrigées sur l'antarctique, probablement par Gerhard Krinner
142     à partir de données Radar. \verb+Albedo.nc+ contient probablement des
143 guez 15 données de Yann Polcher.
144 guez 12
145 guez 15 L'équipe de développement d'Orchidée a peut-être des informations sur
146     l'origine du fichier \verb+landiceref.nc+. Dans ce fichier, la
147     variable \verb+masq+ prend seulement les valeurs 0 ou 1. La variable
148     \verb+landice+ prend des valeurs différentes de 0 et 1, entre
149     \nombre{0,125} et \nombre{0,875}, en un petit nombre de points (163
150     points), sur des côtes.
151    
152 guez 11 Cf. la
153     \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Documentation
154     IOIPSL LMDZ/namelists.ods}{liste des paramètres d'entrée}. Avant de
155     lancer l'exécution de \verb+gcm+, il faut en particulier choisir
156     \verb+nday+ (par exemple 1 ou 30). Je peux aussi modifier
157     \verb+iecri+, qui contrôle la fréquence d'écriture dans le fichier
158     \verb+histday.nc+, et \verb+periodav+, qui contrôle la fréquence
159     d'écriture dans le fichier \verb+histmth.nc+ (?).
160    
161     Pour ne pas utiliser Orchidée, choisir \verb+VEGET = n+
162     dans \verb+physiq.def+. Si on intègre sur 1 jour, choisir
163     \verb+OK_journe = y+, \verb+OK_mensuel = n+.
164    
165     Si on a changé la résolution spatiale, il peut être nécessaire de
166     modifier les variables \verb+nfilun+, \verb+nfilus+, \verb+nfilvn+ et
167     \verb+nfilvs+, définies dans \verb+filtrez/parafilt.h+.
168     \verb+etat0_lim+ se plante et indique alors les bonnes valeurs.
169    
170     \verb+idissip+ dans \verb+gcm.def+ n'est pas pris en compte. Il est
171     automatiquement calculé par le programme. Phu L. V. conseille de
172     diminuer à 3600 les valeurs de \verb+tetagdiv+ et \verb+tetagrot+.
173    
174     \verb+grossismx+ et \verb+grossismy+ doivent être inférieurs à 4 pour
175     que le modèle converge.
176    
177     Phu L. V. me conseille de choisir \verb+ysinus=n+ dans \verb+gcm.def+.
178    
179     \section{Paramètres liés au pas de temps}
180    
181     Les paramètres à choisir au moment de l'exécution et liés au pas de
182     temps sont \verb+day_step+, \verb+iphysiq+, \verb+iperiod+ et
183     \verb+iconser+. Il faut en particulier penser à ajuster ces paramètres
184     lorsque l'on a changé la résolution spatiale. Le principe de base est
185     que le pas de temps doit être suffisamment petit pour que le modèle
186     soit stable. Il doit être d'autant plus petit que la résolution
187     spatiale horizontale est fine. Si les milieux de couches ne montent
188     pas trop haut dans la stratosphère alors la résolution verticale n'a
189     pas à être prise en compte. La référence est un pas de temps maximal
190     de 6 mn environ pour une grille de 64 longitudes par 50 latitudes.
191     Lorsqu'on multiplie par un même facteur le nombre de longitudes et de
192     latitudes, on divise par ce facteur le pas de temps maximal. Pour des
193     milieux de couches haut dans la stratosphère, cf.
194     \href{file:///user/guez/Documents/Utilisation_LMDZ/Utilisation_LMDZ.texfol/Utilisation-LMDZ.dvi}{notes
195     sur l'utilisation de LMDZ}.
196    
197     \verb+day_step+ est le nombre de pas de temps par jour. \verb+iphys+
198     est le nombre de pas de temps entre deux appels de la physique.
199     \verb+iperiod+ est le nombre de pas de temps entre deux pas Matsuno.
200     \verb+iconser+ est le nombre de pas de temps entre deux écritures des
201     variables de contrôle. Ces quatre paramètres doivent recevoir des
202     valeurs entières. Apparemment, on laisse toujours \verb+iperiod+ à 5
203     (quelle que soit la résolution).
204    
205     On a en outre la contrainte que \verb+day_step+ soit un multiple de
206     \verb+iperiod+ (cf. l'unité de programme principale \verb+gcm+), c'est-à-dire
207     normalement un multiple de 5.
208    
209     Enfin, on a la contrainte suivante sur \verb+iphysiq+. Dans le fichier
210     \verb+fisrtilp.F+, ligne 133, on trouve :
211     \begin{verbatim}
212     IF (ABS(dtime/FLOAT(ninter)-360.0).GT.0.001) THEN
213     PRINT*, 'fisrtilp: Ce n est pas prevu, voir Z.X.Li', dtime
214     PRINT*, 'Je prefere un sous-intervalle de 6 minutes'
215     ENDIF
216     \end{verbatim}
217     Donc, comme \verb+ninter+ vaut 5, il faut que \verb+dtime+, le pas de
218     temps de la physique, vaille 1800 s à 5.10$^{-3}$ s près. Notons $d$
219     le pas de temps de la dynamique, en mn. Il faut donc que
220     $\mathtt{iphysiq} \times d = 30$.
221    
222     En résumé, en notant $d_M$ le pas de temps maximal imposé par la
223     résolution, nous avons le système de contraintes suivant :
224     \begin{displaymath}
225     \left\{
226     \begin{array}{l}
227     \mathtt{iphysiq} \times d = 30 \\
228     d \le d_M \\
229     \mathtt{day\_step} \times d = 1440 \\
230     \mathtt{day\_step} \equiv 0[5]
231     \end{array}
232     \right.
233     \end{displaymath}
234     D'où :
235     \begin{displaymath}
236     \left\{
237     \begin{array}{l}
238     \mathtt{iphysiq} \ge = 30 / d_M \\
239     48 \times \mathtt{iphysiq} \equiv 0[5]
240     \end{array}
241     \right.
242     \end{displaymath}
243     C'est-à-dire :
244     \begin{displaymath}
245     \left\{
246     \begin{array}{l}
247     \mathtt{iphysiq} \ge = 30 / d_M \\
248     \mathtt{iphysiq} \equiv 0[5]
249     \end{array}
250     \right.
251     \end{displaymath}
252     On peut donc adopter l'algorithme suivant :
253     \begin{verbatim}
254     entrer(iim, jjm)
255     n := ceiling(max(iim / 64., jjm / 50.))
256     iphysiq := 5 * n
257     day_step := 240 * n
258     \end{verbatim}
259    
260     \section{Ressources nécessaires}
261    
262     Espace disque par utilisateur :
263     \begin{itemize}
264     \item fichiers sources LMDZ (sans IOIPSL ni NetCDF) 3 Moctets ;
265     \item fichiers objets, exécutables (sans IOIPSL ni NetCDF) (résolution
266     $32 \times 24 \times 9$) 4 Moctets ;
267     \item fichiers sortie \verb+etat0_lim+ 9 Moctets ;
268     \item fichiers sortie \verb+gcm+ (principalement \verb+histday.nc+) 26
269     Moctets.
270     \end{itemize}
271     Par ailleurs, on peut centraliser :
272     \begin{itemize}
273     \item fichiers NetCDF entrée \verb+etat0_lim+ 40 Moctets ;
274     \item bibliothèque IOIPSL 600 koctets ;
275     \item ensemble NetCDF (bibliothèque, utilitaires, manuels, modules,
276     etc.) 3 Moctets.
277     \end{itemize}
278    
279     Mémoire principale (résolution $32 \times 24 \times 9$) : 30 Moctets.
280    
281     Durées. Temps de compilation avec \verb+g95 -O3+ : 5 mn. Temps
282     d'exécution de \verb+gcm+ avec \verb+g95 -O3+ (résolution $32 \times
283     24 \times 9$) : environ 10 mn par mois simulé.
284    
285     \part{Fonctionnement : derrière les coulisses}
286    
287     \begin{verbatim}
288     wc -l `find . -name "*.[fh]" -o -name "*.f90"`
289     \end{verbatim}
290     donne environ $7 \cdot 10^{4}$ lignes.
291    
292 guez 15 \section{Le makefile}
293 guez 11
294 guez 15 Intérêt de placer un makefile dans chaque répertoire. J'admets
295     l'intérêt de séparer les fichiers sources dans les répertoires
296     \verb+dyn3d+, \verb+bibio+ etc. Avec un aussi grand nombre de
297     fichiers, ce classement apporte de la clarté. À partir de là se pose
298     la question de l'intérêt de placer un \verb+makefile+ dans chaque
299 guez 11 répertoire. Cette organisation suppose déjà l'absence de dépendance
300     circulaire entre les répertoires pour la compilation. Admettons qu'il
301     n'y en ait pas. Il y aurait logiquement un \verb+makefile+ au dessus
302     de ces répertoires pour les éditions de liens. Je suis arrivé à la
303     conclusion qu'en bon style de \verb+makefile+ des archives
304     n'apparaissent que dans les options d'édition de liens et ne sont pas
305     connues directement du \verb+makefile+ du programme utilisateur.
306     L'utilisation des archives ne permettrait donc pas la mise à jour des
307     deux programmes, \verb+gcm+ et \verb+etat0_lim+, lorsqu'un fichier
308     d'un répertoire est modifié. J'écarte donc la création d'une archive
309     pour chaque répertoire. Par ailleurs, chacun des deux programmes
310     utilise des fichiers répartis dans les différents répertoires. Pour
311     chacun des deux programmes, la liste des objets pertinents doit donc
312     apparaître en prérequis. On ne pourrait mettre simplement en prérequis
313     des répertoires. Mais alors comment le \verb+makefile+ supérieur
314     sait-il mettre à jour ces objets ? En conclusion, je crois qu'il ne
315     faut pas placer un \verb+makefile+ dans chaque répertoire. Un unique
316     \verb+makefile+ au dessus des répertoires est la bonne solution.
317    
318 guez 15 Dans les règles qui fabriquent les arbres des appels et les listes de
319     variables, les commandes doivent utiliser la variable \verb+$^+ pour
320     récupérer le chemin des sources. Une règle ne peut pas par exemple
321     utiliser directement \verb+${sources_etat0_lim}+. Par ailleurs, on ne
322     peut pas avoir une règle supplémentaire :
323     \begin{verbatim}
324     CG_etat0_lim CG_gcm CR_etat0_lim CR_gcm: ${objects}
325     \end{verbatim}
326     parce qu'alors les objets apparaîtraient dans les commandes.
327    
328 guez 11 \section{Description des programmes}
329    
330     Sur le suffixe des fichiers. Pour pouvoir utiliser les outils NAG,
331     tant que le programme est formé d'un mélange de fichiers aux formats
332     fixe et libre, je suis obligé d'associer le format libre au suffixe
333     \verb+f90+ ou \verb+f95+. \verb+sxf90+ m'impose le suffixe \verb+f90+.
334     Pour le format fixe, \verb+sxf90+ m'impose \verb+f+. Cf.
335     \hyperref{file:///user/guez/Documents/Informatique_fonctionnement/Informatique,
336     fonctionnement.texfol/fonctionnement.dvi}{text}{suffixes}{contraintes
337     sur les suffixes de fichiers de Fortran}.
338    
339     Deux unités de programme principales en Fortran, dans les fichiers
340     \verb+etat0_lim.f+ et \verb+gcm.f+.
341    
342     Au plus haut niveau, parties du programme \verb+gcm+ :
343     calcul des tendances (\verb+caldyn+), intégration (\verb+integr+),
344     physique, dissipation (\verb+dissip+), advection. Variables
345     principales : \verb+ucov+, \verb+vcov+, température,
346     pression. \verb+w+ se déduit par quelque chose comme une
347     relation de fermeture. Dans la physique, il n'y a pas d'échange
348     horizontal entre les mailles. Un problème fondamental est l'utilisation
349     d'une grille rectangulaire en latitudes et longitudes pour couvrir
350     la sphère. Les mailles de la grille n'ont pas la même surface.
351     La solution choisie pour résoudre ce problème est le filtrage.
352     Principe du filtrage : décomposition d'un champ en harmoniques
353     sphériques et conservation d'une partie seulement du spectre.
354     Le filtre est très coûteux : il faut connaître le champ
355     en entier pour le calculer en un point particulier. Par ailleurs,
356     le programme calcule à de nombreuses occasions des valeurs moyennes
357     aux pôles, à partir des mailles pôlaires (à chaque pôle, autant
358     de mailles pôlaires que de longitudes dans la grille)
359    
360     \verb+etat0_lim+ crée l'état initial. \verb+etat0_lim+ appelle
361     \verb+etat0+ et \verb+limit+. \verb+etat0+ crée les fichiers
362     \verb+start.nc+ et \verb+startphy.nc+. \verb+limit+ crée
363     \verb+limit.nc+.
364    
365     Le répertoire \verb+phylmd+ contient ce qui concerne la
366     physique. Le répertoire \verb+dyn3d+ contient ce qui concerne
367     la dynamique.
368    
369     \verb+histday.nc+ contient des moyennes journalières.
370     \verb+ini_histday+ et \verb+write_histday+ sont responsables de
371     l'écriture de \verb+histday.nc+. \verb+ini_histday+ initialise le
372     fichier \verb+histday.nc+, puis \verb+write_histday+ écrit les
373     contenus des variables dans ce fichier. Rôles analogues pour
374     \verb+ini_histmth+ et \verb+write_histmth+ avec le fichier
375     \verb+histmth.nc+. L'initialisation d'un fichier inclut
376     l'initialisation de variables avec le sous-programme \verb+histdef+.
377     L'écriture du contenu d'une variable se fait avec le sous-programme
378     \verb+histwrite+.
379    
380     La lecture des fichiers d'entrée \verb+*.def+ se fait entre autres par
381     l'intermédiaire du sous-programme \verb+getin+ de IOIPSL. \verb+getin+
382     n'est appelé que dans les fichiers \verb+phylmd/conf_phys.f+,
383     \verb+dyn3d/conf_gcm.F+ et \verb+dyn3d/getparam.f+.
384    
385 guez 13 La résolution spatiale des fichiers de conditions initiales et de
386     conditions aux limites étant a priori différente de celle de LMDZ,
387     LMDZ re-maille ces données par interpolation ou moyenne.
388 guez 11
389     Dans le module \verb+start_init_orog_m+, la variable \verb+phis+ est
390     allouée et modifiée par \verb+start_init_orog+. Dans
391     \verb+start_init_orog+, \verb+phis+ est passée en argument à
392     \verb+grid_noro+ et remplie par \verb+grid_noro+.
393    
394     Dans \verb+grid_noro+, \verb+mask+ est rempli avec \verb+num_lan+
395     \verb+/+ \verb+num_tot+. On peut voir les valeurs obtenues en
396     regardant la variable \verb+masque+ dans \verb+startphy.nc+. Le nom de
397     masque devrait être réservé à des variables logiques. \verb+mask+
398     calculé par \verb+grid_noro+ n'est pas une variable logique et ne
399     contient pas que les valeurs 0 ou 1. Ce doit être la fraction de terre
400     dans la maille considérée. \verb+zdata+ sert à calculer \verb+zusn+.
401    
402     La variable \verb+iperiod+, qui est importante pour la structure de la
403     procédure \verb+leapfrog+, n'est pas modifiée au cours de l'exécution
404     de cette procédure. Cf. figure (\ref{fig:leapfrog}).
405     \begin{figure}[htbp]
406     \centering
407     \includegraphics{Graphiques/leapfrog}
408     \caption[Principe de l'intégration temporelle selon le schéma
409     ``Matsuno-leapfrog'']{Principe de l'intégration temporelle selon le
410     schéma ``Matsuno-leapfrog'', dans \texttt{leapfrog}. Cas où
411     \texttt{iphysiq} = 10. ``FM'' : \Eng{forward} Matsuno, ``BM'' :
412 guez 13 \Eng{backward} Matsuno. Les flèches courbes représentent des pas
413 guez 11 ``leapfrog''. Les numéros sur les flèches indiquent l'ordre des
414     intégrations. Six intégrations sont nécessaires pour avancer de
415     cinq pas de temps.}
416     \label{fig:leapfrog}
417     \end{figure}
418    
419 guez 13 Concernant la variable \verb+itau_phy+ du module \verb+temps+. Dans le
420     programme \verb+etat0_lim+ : \verb+itau_phy+ est mis à 0 par
421     \verb+etat0+ et écrit dans \verb+startphy.nc+ par
422     \verb+phyredem+. Dans le programme \verb+gcm+ :
423     \begin{itemize}
424     \item à la première exécution de \verb+physiq+, \verb+phyetat0+ lit
425     \verb+itau_phy+ dans \verb+startphy.nc+, \verb+physiq+ met
426     \verb+itau_phy+ à 0 si \verb+raz_date==1+ ;
427     \item les procédures \verb+ini_hist*+ et \verb+clmain+ passent
428     \verb+itau_phy+ à \verb+histbeg_totreg+ ;
429     \item les procédures \verb+write_hist*+ utilisent \verb+itau_phy+ pour
430     calculer \verb+itau_w+, qui est passé à \verb+histwrite+ ;
431     \item à la dernière exécution de \verb+physiq+, \verb+physiq+ ajoute
432     \verb+itap+ à \verb+itau_phy+, \verb+phyredem+ écrit \verb+itau_phy+
433     dans \verb+startphy.nc+.
434     \end{itemize}
435    
436 guez 11 \subsection{Maillage horizontal}
437    
438 guez 13 Trois grilles à trois dimensions. Une grille de base pour, entre
439     autres, la température et l'humidité relative. François L. l'appelle
440     la grille physique. Une grille décalée en longitude par rapport à la
441     grille de base, d'un demi-pas de longitude, pour la vitesse zonale
442     \textit{u}. Une grille décalée en latitude par rapport à la grille de
443     base, d'un demi-pas de latitude, pour la vitesse \textit{v}. François
444     L. appelle ces deux dernières grilles les grilles dynamiques. Les
445     points de la grille de base de dernier indice de longitude et ceux de
446     premier indice de longitude ont la même longitude. On peut dire que
447     la grille de base est « repliée sur elle même » en longitude. Les deux
448     grilles décalées sont aussi repliées sur elles-mêmes en longitude. La
449     grille décalée en longitude a autant de points que la grille de base.
450     \textit{Cf}. :
451 guez 11 \begin{itemize}
452     \item Arakawa et Lamb [1977 \#737] ;
453     \item description du modèle par Phu L. V. (juin 1989) ;
454     \item
455 guez 13 \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Guide_IPSL_climate_models/Discrétisation
456     équations LMDZ.ps}{Discrétisation des équations de la dynamique
457     dans LMDZ} (16 novembre 1995) ;
458 guez 11 \item manuel de LMDZ pour Mars (5 avril 2004) ;
459     \item commentaires dans la procédure \verb+inigeom +;
460     \item
461 guez 13 \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/LMDZ/LMDZE/Documentation/Grilles
462     horizontales LMDZ.odg}{schéma des grilles horizontales}.
463 guez 11 \end{itemize}
464 guez 13 La variable \verb+iim+ du module \verb+dimens_m+ est le nombre de
465     longitudes distinctes dans la grille de base (scalaire). Les valeurs
466     de ces longitudes sont dans le tableau \verb+rlonv+ du module
467     \verb+comgeom+. La taille de \verb+rlonv+ est \verb-iim+1- et :
468     \begin{verbatim}
469     rlonv(iim+1) = rlonv(1)
470     \end{verbatim}
471     La variable \verb+jjm+ du module \verb+dimens_m+ est le nombre
472     d'intervalles de latitude dans la grille de base. Les valeurs de ces
473     latitudes sont dans le tableau \verb+rlatu+ du module \verb+comgeom+.
474     La taille de \verb+rlatu+ est \verb-jjm+1-. Pour la partie physique
475     du modèle, les points distincts de la grille scalaire sont classés par
476     ordre de latitude décroissante et, pour une même latitude, par ordre
477     de longitude croissante (cf. figure 2.2 du manuel de LMDZ pour Mars).
478     Chacun des points distincts de la grille scalaire peut donc être
479     identifié par un indice dans ce classement : un seul indice au lieu de
480     2 indices faisant référence à la latitude et à la longitude. Les
481     tableaux \verb+latitude+ et \verb+longitude+ du fichier
482     \verb+startphy.nc+ contiennent les coordonnées associées à cet indice
483     simple. Passage du couple d'indices $(i, j)$ à l'indice simple $i'$ :
484     \begin{align*}
485     i = 1, j = 1 & \Rightarrow i' = 1 \\
486     \left.
487     \begin{array}{l}
488     i \le \mathtt{iim} \\
489     j \in \{2, \ldots, \mathtt{jjm}\}
490     \end{array}
491     \right\} & \Rightarrow i' = 1 + (j - 2) \mathtt{iim} + i \\
492     i = 1, j = \mathtt{jjm} + 1 & \Rightarrow i' = \mathtt{klon}
493     \end{align*}
494     Réciproquement :
495     \begin{align*}
496     i' = 1 & \Rightarrow i = 1, j = 1 \\
497 guez 18 i' \in \{2, \ldots, \mathtt{klon}\} & \Rightarrow
498 guez 13 \left\{
499     \begin{array}{l}
500     i = (i' - 2) [\mathtt{iim}] + 1 \\
501     j = (i' - 2) / \mathtt{iim} + 2
502     \end{array}
503     \right.
504     \end{align*}
505 guez 11
506     Pour le remplissage des tableaux \verb+latfi+, \verb+lonfi+,
507     \verb+zcufi+ et \verb+zcvfi+ dans \verb+gcm+, cf.
508 guez 13 \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/LMDZ/LMDZE/Documentation/Grilles
509     horizontales LMDZ.odg}{schéma des grilles horizontales}. Dans cette
510     figure, dans le tableau \verb+mask_v+, le point d'indice
511     \verb-(1, jjm + 1)- est marqué {\textquotedbl}T(2){\textquotedbl} pour
512     rappeler qu'il est recopié dans deux éléments de \verb+zcvfi+.
513     \verb+zcufi+ et \verb+zcvfi+ sont les valeurs de \verb+cu+ et
514     \verb+cv+ affectées aux points de la grille « physique ». Par
515     exemple, regardons le
516 guez 11 \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Documentation
517     IOIPSL LMDZ/Grilles horizontales LMDZ.odg}{schéma} et considérons le
518     cas de \verb+cv+ et \verb+zcvfi+. \verb+cv+ est bien défini sur les
519     points rouges. Il s'agit de donner des valeurs de \verb+cv+ aux points
520     (noirs) de la grille physique. Pour tous les points de la grille
521     physique sauf le pôle sud, on choisit la valeur au point rouge juste
522     en dessous. Pour le pôle sud, on prend le point rouge juste au dessus.
523     On pourrait imaginer d'interpoler les valeurs en plusieurs points
524     rouges pour chaque point de la grille physique. Et on pourrait de même
525     imaginer des interpolations pour les valeurs de \verb+zcufi+. Cela
526     aurait plus de sens. Mais Phu L. V. semble dire que la faible
527     importance des tableaux \verb+zcufi+ et \verb+zcvfi+ ne justifie pas
528     de compliquer ainsi. Cf. son message du 27/10/6.
529    
530 guez 13 La résolution horizontale standard est de 96 longitudes $\times$ 72
531     latitudes. (Un avantage annexe est que la grille des latitudes tombe
532     alors sur des valeurs rondes.) LMDZ ne converge plus lorsque la
533     résolution devient trop fine. \textit{Cf.} aussi la documentation
534     officielle de LMDZ4 sur le
535     \href{http://www.lmd.jussieu.fr/~lmdz/LMDZ4/choisir_une_resolution.html}{choix
536     d'une résolution horizontale}.
537 guez 11
538     \subsection{Maillage vertical}
539    
540     L'indice de niveau vertical est croissant de la surface au sommet de
541     l'atmosphère. Cf.
542     \href{http://www.lmd.jussieu.fr/~lmdz/manuelGCM/main.ps}{manuel de
543     LMDZ pour Mars}, figure 2.4.
544    
545     D'après François L., le temps passé dans les calculs de transfert
546     radiatif est proportionnel au cube du nombre de niveaux verticaux.
547    
548     Dans \verb+disvert+, $s$ peut être calculé de quatre façons
549     selon la valeur de \verb+s_sampling+. D'après Phu L. V., le cas
550     \verb+param+ n'est plus utilisé (il n'est pas utilisé non plus par
551     François L. pour son extension à la haute atmosphère). Les quatre
552     échantillonnages de $s$ sont comparés pour quelques valeurs
553     de \verb+llm+ dans les figures (\ref{fig:compare_sampl_9}),
554     (\ref{fig:compare_sampl_19}), (\ref{fig:compare_sampl_30}) et
555     (\ref{fig:compare_sampl_41}).
556     \begin{figure}[htbp]
557     \centering
558     \input{Graphiques/compare_sampl_9.tex}
559     \caption[Maillage vertical, échantillonnages de $s$ pour :
560     \texttt{llm} = 9]{Maillage vertical. Comparaison des quatre
561     échantillonnages de $s$ pour : \texttt{llm} = 9 ; \texttt{h} = 7 ;
562     \texttt{deltaz} = \nombre{0,04} ; \texttt{beta} = \nombre{1,3} ;
563     \texttt{k0} = 20 ; \texttt{k1} = \nombre{1,2}. La pression à la
564     surface choisie est de 101325 Pa.}
565     \label{fig:compare_sampl_9}
566     \end{figure}
567     \begin{figure}[htbp]
568     \centering
569     \input{Graphiques/compare_sampl_19.tex}
570     \caption[Maillage vertical, échantillonnages de $s$ pour :
571     \texttt{llm} = 19]{Maillage vertical. Comparaison des quatre
572     échantillonnages de $s$ pour : \texttt{llm} = 19 ; \texttt{h} = 7
573     ; \texttt{deltaz} = \nombre{0,04} ; \texttt{beta} = \nombre{1,3} ;
574     \texttt{k0} = 20 ; \texttt{k1} = \nombre{1,2}. La pression à la
575     surface choisie est de 101325 Pa.}
576     \label{fig:compare_sampl_19}
577     \end{figure}
578     \begin{figure}[htbp]
579     \centering
580     \input{Graphiques/compare_sampl_30.tex}
581     \caption[Maillage vertical, échantillonnages de $s$ pour :
582     \texttt{llm} = 30]{Maillage vertical. Comparaison des quatre
583     échantillonnages de $s$ pour : \texttt{llm} = 30 ; \texttt{h} = 7
584     ; \texttt{deltaz} = \nombre{0,04} ; \texttt{beta} = \nombre{1,3} ;
585     \texttt{k0} = 20 ; \texttt{k1} = \nombre{1,2}. La pression à la
586     surface choisie est de 101325 Pa.}
587     \label{fig:compare_sampl_30}
588     \end{figure}
589     \begin{figure}[htbp]
590     \centering
591     \input{Graphiques/compare_sampl_41.tex}
592     \caption[Maillage vertical, échantillonnages de $s$ pour :
593     \texttt{llm} = 41]{Maillage vertical. Comparaison des quatre
594     échantillonnages de $s$ pour : \texttt{llm} = 41 ; \texttt{h} = 7
595     ; \texttt{deltaz} = \nombre{0,04} ; \texttt{beta} = \nombre{1,3} ;
596     \texttt{k0} = 20 ; \texttt{k1} = \nombre{1,2}. La pression à la
597     surface choisie est de 101325 Pa.}
598     \label{fig:compare_sampl_41}
599     \end{figure}
600    
601     On pose :
602     \begin{align*}
603     & b(0) = 0 \\
604     & b(s) = \exp(1 - 1 / s^2)
605     \qquad \mathrm{pour}\ s \in \mathbb{R}^*
606     \end{align*}
607     $b$ est $\mathscr{C}^\infty$ sur $\mathbb{R}$, paire, strictement croissante
608     sur $\mathbb{R}^+$. On a :
609     \begin{align*}
610     & \exists \lim_{s \to +\infty} b(s) = e \\
611     & b'(0) = 0 \\
612     & b'(1) = 2
613     \end{align*}
614     et $b$ admet un point d'inflexion en $\sqrt{6} / 3$ ($\approx
615     \nombre{0,8}$). Cf. figure (\ref{fig:disvert}).
616     \begin{figure}[htbp]
617     \centering
618     \input{Graphiques/disvert.tex}
619     \caption[Maillage vertical : $a$ et $b$]{Maillage vertical. Pour
620     $p_a = 5 \cdot 10^4$ Pa et $p_s = \nombre{101325}$ Pa.}
621     \label{fig:disvert}
622     \end{figure}
623     Puis, étant donné $p_a \in \mathbb{R}^{+*}$, on pose, pour tout
624     $s$ :
625     \begin{displaymath}
626     a(s) = p_a (s - b(s))
627     \end{displaymath}
628     Pour $s > 0$ :
629     \begin{displaymath}
630     a'(s) \ge 0 \Leftrightarrow b(s) \le s^3 / 2
631     \end{displaymath}
632     L'équation $b(s) = s^3 / 2$ admet deux solutions strictement
633     positives. Notons-les $s_1$ et $s_2$, $s_1 < 1 <
634     s_2$. $a$ est strictement croissante sur $[0, s_1]$,
635     strictement décroissante sur $[s_1, s_2]$, strictement
636     croissante sur $[s_2, + \infty[$. Cf. figure (\ref{fig:disvert}).
637     Enfin, étant donné $p_s \in \mathbb{R}^{+*}$, on pose, pour tout
638     $s$ :
639     \begin{align*}
640     p(s) & = a(s) + b(s) p_s \\
641     & = p_a s + b(s) (p_s - p_a)
642     \end{align*}
643     Cf. figure (\ref{fig:disvert}). On a :
644     \begin{displaymath}
645     s \le \nombre{0,3} \Rightarrow b(s) \ll s
646     \end{displaymath}
647     Cf. figure (\ref{fig:b_s}).
648     \begin{figure}[htbp]
649     \centering
650     \input{Graphiques/b_s.tex}
651     \caption[Maillage vertical : $b(s) / s$]{Maillage vertical. Les
652     niveaux de $s$ sont des niveaux de pression lorsque $b(s) / s$ est
653     très petit.}
654     \label{fig:b_s}
655     \end{figure}
656     En supposant que $p_s - p_a$ soit de l'ordre de $p_a$, on a donc, aux
657     plus hauts niveaux de l'atmosphère, tels que $s(l) \le
658     \nombre{0,3}$ :
659     \begin{displaymath}
660     p(s(l)) \approx a(s(l))
661     \approx p_a s(l)
662     \end{displaymath}
663     En haut de l'atmosphère, les niveaux de $s$ sont des niveaux de
664     pression. Ces niveaux de pression sont les valeurs de \verb+ap+.
665     (Après une exécution de \verb+etat0_lim+, \verb+ap+ est dans le
666     fichier \verb+start.nc+.)
667    
668     \subsubsection{Cas \texttt{LMD5}}
669    
670     Pour $l \in \{1, \dots,
671     \mathtt{llm}\}$, posons :
672     \begin{displaymath}
673     x_l = \frac{\pi (l - 1/2)}{\mathtt{llm} + 1}
674     \end{displaymath}
675     Pour $x \in \mathbb{R}$, posons :
676     \begin{displaymath}
677     f(x) = 1 + 7 \sin^2 x
678     \end{displaymath}
679     $f$ est périodique de période $\pi$. Cf. figure (\ref{fig:f_x}).
680     \begin{figure}[htbp]
681     \centering
682     \input{Graphiques/f_x.tex}
683     \caption{Maillage vertical, fonction utilisée dans le cas
684     \texttt{LMD5}.}
685     \label{fig:f_x}
686     \end{figure}
687     $(x_l)$ est un échantillonnage de $[0, \pi]$ d'autant plus fin que
688     \verb+llm+ est grand :
689     \begin{align*}
690     & \forall l \in \{1, \dots, \mathtt{llm}\}, x_l \in ]0, \pi[ \\
691     & \exists \lim_{\mathtt{llm} \to +\infty} x_1 = 0 \\
692     & \exists \lim_{\mathtt{llm} \to +\infty} x_\mathtt{llm} = \pi \\
693     & x_{l+1} - x_l = \frac{\pi}{\mathtt{llm} + 1}
694     \underset{\mathtt{llm} \to + \infty}{\longrightarrow} 0
695     \end{align*}
696     Le programme calcule :
697     \begin{displaymath}
698     \mathtt{ds(l)} = \frac{f(x_l)}{\sum_{l'=1}^\mathtt{llm} f(x_{l'})}
699     \end{displaymath}
700     Or :
701     \begin{displaymath}
702     \sum_{l=1}^\mathtt{llm} f(x_{l}) \frac{\pi}{\mathtt{llm} + 1}
703     \underset{\mathtt{llm} \to + \infty}{\longrightarrow} \int_0 ^\pi f
704     \end{displaymath}
705     Notons :
706     \begin{displaymath}
707     I := \int_0 ^\pi f = 9 \pi / 2
708     \end{displaymath}
709     On a donc :
710     \begin{displaymath}
711     \sum_{l=1}^\mathtt{llm} f(x_{l})
712     \underset{\mathtt{llm} \to +\infty}{\sim} \frac{I}{\pi} \mathtt{llm}
713     \end{displaymath}
714     (L'erreur est de 2 \% environ pour \verb+llm+ = 41.) Le niveau
715     $s$ le plus petit est 0, le deuxième plus petit est :
716     \begin{displaymath}
717     s(\mathtt{llm}) = \mathtt{ds(llm)}
718     \underset{\mathtt{llm} \to +\infty}{\sim} \frac{\pi f(\pi)}{I\ \mathtt{llm}}
719     \end{displaymath}
720    
721     Donc :
722     \begin{displaymath}
723     p(s(\mathtt{llm}))
724     \underset{\mathtt{llm} \to +\infty}{\sim}
725     \frac{\pi f(\pi) p_a}{I\ \mathtt{llm}}
726     = \frac{2 p_a}{9\ \mathtt{llm}}
727     \end{displaymath}
728     On a :
729     \begin{align*}
730     & \mathtt{llm} = 9 \Rightarrow \mathtt{ap(llm)}
731     \approx 3 \cdot 10\ \mathrm{hPa} \\
732     & \mathtt{llm} = 19 \Rightarrow \mathtt{ap(llm)} \approx 8\ \mathrm{hPa} \\
733     & \mathtt{llm} = 50 \Rightarrow \mathtt{ap(llm)} \approx 2\ \mathrm{hPa}
734     \end{align*}
735     Il faudrait prendre \verb+llm+ de l'ordre de $10^3$ pour résoudre la
736     région décrite par la paramétrisation de la chimie de l'ozone.
737    
738     \subsubsection{Cas \texttt{strato1}}
739    
740     On pose, pour $(x, y) \in
741     \mathbb{R}^2$ :
742     \begin{displaymath}
743     f(x, y) = \tgh x + \frac{1}{2} \tgh \frac{x - y}{2}
744     \end{displaymath}
745     Relevons quelques propriétés de $f$, considérée comme une fonction de
746     $x$, à $y$ fixé. $f$ est une fonction strictement croissante sur
747     $\mathbb{R}$, de $- 3/2$ à $3/2$. Par rapport à la fonction $\tgh$, le
748     second terme de $f$ est 2 fois plus large, translaté de $y$ et 2 fois
749     moins haut. Puisque $\tgh 3$ est déjà très proche de 1, les domaines
750     de variation des deux termes de $f$ sont clairement séparés dès que $y
751     \ge 9$. Cf. figure (\ref{fig:strato1}).
752     \begin{figure}[htbp]
753     \centering
754     \input{Graphiques/strato1.tex}
755     \caption[Maillage vertical, cas \texttt{strato1}]{Maillage vertical,
756     cas \texttt{strato1}. Fonction utilisée pour \texttt{llm} = 70.}
757     \label{fig:strato1}
758     \end{figure}
759    
760     Le programme calcule :
761     \begin{displaymath}
762     \mathtt{dz(l)}
763     = \nombre{1,56}
764     + f\left(\frac{\mathtt{l} - 12}{5}, \frac{\mathtt{llm} - 12}{5}\right)
765     \end{displaymath}
766     D'après l'étude de $f$, $\mathtt{dz(l)} \in ]\nombre{0,06} ;
767     \nombre{3,06}[$, \verb+dz(l)+ croît avec $l$. Pour \verb+llm+
768     suffisamment grand :
769     \begin{align*}
770     & \mathtt{dz(1)} \approx \nombre{1,06} - \tgh\nombre{2,2}
771     \approx \nombre{8,43} \cdot 10^{-2} \\
772     & \mathtt{dz(llm)} \approx \nombre{2,56}
773     \end{align*}
774     (l'erreur relative sur \verb+dz(1)+ devient inférieure à 1 \% si
775     \verb+llm+ $\ge 37$ ; l'erreur relative sur \verb+dz(llm)+ devient
776     inférieure à 1 \% si \verb+llm+ $\ge 23$). Les domaines de variation
777     des deux termes $\tgh$ de \verb+dz+ sont clairement séparés dès que
778     \verb+llm+ $\ge 57$.
779    
780     Posons, pour $z \in \mathbb{R}$ :
781     \begin{displaymath}
782     s(z)
783     = \frac{\exp(- z / h) - \exp(- \mathtt{zz(llm + 1)} / h)}
784     {1 - \exp(- \mathtt{zz(llm + 1)} / h)}
785     \end{displaymath}
786     Le programme calcule $s(\mathtt{zz})$. On a, pour $h = 7$ km :
787     \begin{align*}
788     & \mathtt{llm} = 40
789     \Rightarrow \mathtt{ap(llm)} \approx \nombre{2,70}\ \mathrm{Pa} \\
790     & \mathtt{llm} = 41
791     \Rightarrow \mathtt{ap(llm)} \approx \nombre{2,01}\ \mathrm{Pa} \\
792     & \mathtt{llm} = 50
793     \Rightarrow \mathtt{ap(llm)} \approx \nombre{0,14}\ \mathrm{Pa}
794     \end{align*}
795    
796     Si $\exp[- \mathtt{zz(llm + 1)} / h] \ll 1$, pour des valeurs de $z$
797     telles que :
798     \begin{equation}
799     \label{eq:z_interm}
800     \left\{
801     \begin{array}{l}
802     \exp(- z / h) \gg \exp[- \mathtt{zz(llm + 1)} / h] \\
803     \exp(- z / h) \le \nombre{0,3}
804     \end{array}
805     \right.
806     \end{equation}
807     on a :
808     \begin{align*}
809     & s(z) \approx \exp(- z / h) \\
810     & b[s(z)] \ll s(z)
811     \end{align*}
812     Donc, en supposant que $p_s - p_a$ soit de l'ordre de $p_a$ :
813     \begin{displaymath}
814     p[s(z)] \approx a[s(z)] \approx p_a \exp(- z / h)
815     \end{displaymath}
816     Si $h$ est proche de la hauteur d'échelle réelle dans la région
817     considérée alors les variations d'altitude entre deux niveaux
818     $s$ sont proches de \verb+dz+. Par exemple, pour \verb+llm+ =
819     70, \verb=zz(llm + 1)= $\approx 125$ km. Si $h = 7$ km, la condition
820     (\ref{eq:z_interm}) devient $z \in [9\ \mathrm{km}, 92\ \mathrm{km}]$,
821     qui correspond aux niveaux 17 à 56.
822    
823     \subsubsection{Cas \texttt{strato2}}
824    
825     C'est le cas conseillé par François L. pour un domaine incluant la
826     stratosphère. Ce cas est analogue au cas \verb+LMD5+. Seule la
827     fonction $f$ utilisée change. Pour $x \in \mathbb{R}$, posons :
828     \begin{displaymath}
829     g(x)
830     = \frac{1}{2} \left[1 - \tgh\left(\frac{x - \pi / 2}{\pi / 2}\right)\right]
831     \end{displaymath}
832     Par rapport à la fonction $\tgh$, $g$ est translatée de $\pi / 2$ vers
833     la droite, dilatée horizontalement d'un facteur $\pi / 2$, inversée
834     verticalement, translatée verticalement de 1 et contractée
835     verticalement d'un facteur 2. Elle décroît donc de 1 à $-1$. La
836     fonction $f$ utilisée est maintenant :
837     \begin{displaymath}
838     f(x) = (1 + 7 \sin^2 x) g(x)^2
839     \end{displaymath}
840     \begin{figure}[htbp]
841     \centering
842     \input{Graphiques/strato2.tex}
843     \caption[Maillage vertical, cas \texttt{strato2}]{Maillage vertical,
844     cas \texttt{strato2}. $f(\pi) \approx \nombre{0,014}$.}
845     \label{fig:strato2}
846     \end{figure}
847     On a :
848     \begin{displaymath}
849     I := \int_0 ^\pi f \approx \nombre{4,02}
850     \end{displaymath}
851     donc :
852     \begin{displaymath}
853     p(s(\mathtt{llm}))
854     \underset{\mathtt{llm} \to +\infty}{\sim}
855     \frac{\pi f(\pi) p_a}{I\ \mathtt{llm}}
856     = \frac{\nombre{0,011} p_a}{\mathtt{llm}}
857     \end{displaymath}
858    
859     \subsection{Module \texttt{inter\_barxy\_m}}
860    
861     Cf.
862 guez 15 \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/LMDZ/LMDZE/Documentation/inter_barxy.odg}{graphique
863     de transmission de données}.
864 guez 11
865     Le seul cas où \verb+size(champint, 2)+ vaut \verb+jjm+ dans
866     \verb+inter_barxy+ se produit suite à l'appel :
867     \begin{verbatim}
868     vvent = start_inter_3d("V", ...)
869     \end{verbatim}
870     C'est aussi le seul cas où \verb+rlatimod+ reçoit \verb+rlatu(:jjm)+.
871     Dans tous les autres cas, \verb+rlatimod+ dans \verb+inter_barxy+
872     reçoit \verb+rlatv+.
873    
874     Dans le cas le plus fréquent, dans \verb+inter_barxy+ :
875     \begin{verbatim}
876     size(champint, 2) == jjm + 1
877     \end{verbatim}
878     et \verb+rlatimod+ reçoit \verb+rlatv+. On veut interpoler sur les
879     \verb+jjm+ + 1 latitudes \verb+rlatu+ mais on reçoit \verb+rlatv+.
880     Bizarre.
881    
882     Je crois que \verb+inter_bary+ réalise une moyenne et non une
883     interpolation. (Par exemple, pour l'initialisation de l'abondance de
884     vapeur d'eau, on veut calculer \verb+q3d+ aux points \verb+rlatu+.)
885     Cf.
886     \href{file:///user/guez/Documents/Utilisation_LMDZ/Utilisation_LMDZ.texfol/Utilisation-LMDZ.pdf}{analyse}.
887     Je crois que le calcul suppose une fonction en escalier, dont les
888     marches sont limitées par \verb+yjdat+. Pour $i \ge 2$, \verb+fdat(i)+
889     est interprété comme la hauteur de la marche $[\mathtt{yjdat(i-1)},
890     \mathtt{yjdat(i)}]$. Pour $i \ge 2$, \verb+inter_bary(i)+ est la
891     moyenne sur l'intervalle $[\mathtt{yjmod(i-1)}, \mathtt{yjmod(i)}]$.
892    
893     Cf. le remaillage \verb+@ave+ dans Ferret. On pourrait imaginer une
894     procédure qui reçoit les tableaux \verb+x1edge+, \verb+x2edge+ et
895     \verb+y1+, qui retourne un tableau \verb+y2+, où \verb+x1edge+ et
896     \verb+x2edge+ sont deux listes de frontières d'intervalles, \verb+y1+
897     et \verb+y2+ ont un élément de moins que \verb+x1edge+ et
898     \verb+x2edge+, \verb+y1+ donne les valeurs d'une fonction en escalier
899     dont les marches sont limitées par \verb+x1edge+, et \verb+y2+ est la
900     moyenne de cette fonction sur les intervalles limités par
901     \verb+x2edge+.
902    
903     \subsection{Les traceurs en général}
904    
905     Procédures qui concernent les traceurs dans le programme
906     \verb+etat0_lim+ : \verb+iniadvtrac+, \verb+etat0+. Procédures qui
907     concernent les traceurs dans le programme \verb+gcm+ :
908     \verb+iniadvtrac+, \verb+dynetat0+, \verb+caladvtrac+, \verb+advtrac+,
909     \verb+physiq+, \verb+phytrac+. Laurent L. connaît peut-être bien le
910     traitement des traceurs. Il a écrit une grande partie de la
911     ``physique'' du modèle.
912    
913     Dans le fichier \verb+traceur.def+, le premier nombre est le nombre de
914     traceurs. Chaque ligne suivante correspond à un traceur. Pour chaque
915     traceur, on indique le numéro du schéma
916     d'advection à utiliser. Les numéros sont définis dans
917     \verb+iniadvtrac+.
918    
919     \verb+traceur.def+ est lu uniquement dans le sous-programme
920     \verb+iniadvtrac+. \verb+nq+ est lu dans \verb+traceur.def+.
921     \verb+iniadvtrac+ impose \verb+nqmx+ $\ge$ \verb+nq+. \verb+nq+ est
922     passé à \verb+calfis+ et à \verb+physiq+. \verb+physiq+ impose
923     \verb+nq+ $\ge 2$. Donc \verb+nqmx+ doit être supérieur à 2.
924     \verb+nbtr+ (variable de \verb+dimphy+) vaut 1 pour \verb+nqmx+
925     \verb+=+ \verb+2+ et \verb+nqmx+ -- \verb+2+ pour \verb+nqmx+ $\ge 3$.
926 guez 18 \verb+nq-2+ est passé à \verb+phytrac+ et devient \verb+nq_phys+ dans
927 guez 11 \verb+phytrac+. À cause de l'appel de \verb+dynredem1+ par
928     \verb+etat0+, \verb+nq+ doit être égal à \verb+nqmx+. \verb+initrrnpb+
929     impose \verb+nbtr+ $\ge 2$, mais il n'est appelé que si \verb+rnpb+
930     est vrai. Cf. aussi message de Ionela M. du 29/11/6.
931    
932     \verb+phytrac+ peut effectuer un traitement spécial pour les traceurs
933     plomb et radon (décroissance radioactive etc.). \verb+phytrac+
934     suppose que ce sont les traceurs numérotés 3 et 4. Donc si on veut
935     laisser les traceurs plomb et radon, avec le traitement spécial qui
936     leur est réservé, alors il faut les laisser en troisième et quatrième
937     position dans \verb+traceur.def+ et laisser \verb+rnpb+ à
938     \verb+.true.+ dans \verb+physiq+. Cette variable est définie dans
939     \verb+physiq+ et \verb+phytrac+ uniquement. Cf. le message de
940     Frédéric H. du 26/1/7.
941    
942     Dans le programme \verb+etat0_lim+, la variable qui contient la
943     distribution initiale des traceurs est \verb+q3d+. Cette variable est
944     définie dans \verb+etat0+. Pour la vapeur d'eau (traceur numéro 1), la
945     distribution initiale est calculée à partir de la variable \verb+R+ du
946     fichier \verb+ECDYN.nc+. La distribution initiale des traceurs est
947     écrite dans \verb+start.nc+.
948    
949     Dans le programme \verb+gcm+, la procédure \verb+iniadvtrac+ lit les
950     noms des traceurs. La procédure \verb+dynetat0+ lit les distributions
951     initiales à partir du fichier \verb+start.nc+ vers la variable
952     \verb+q+. Cette variable se retrouve intacte dans \verb+leapfrog+. Par
953     ailleurs, la concentration de radon dans le sol est lue dans
954     \verb+starttrac+ par \verb+phytrac+. Dans \verb+phytrac+, on calcule
955     la fraction massique à $t + \ud t$ :
956     \begin{displaymath}
957     q(\vec r, t + \ud t) = q(\vec r, t) + (\partial_t q)(\vec r, t)\ud t
958     \end{displaymath}
959     Cf.
960     \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Guide_IPSL_climate_models/Traceurs.odg}{graphique
961     de flux de données}. Les distributions de traceurs calculées sont
962     écrites dans \verb+dyn_hist_ave.nc+ et \verb+histrac.nc+. Les
963     distributions finales sont écrites dans \verb+restart.nc+ par
964     \verb+dynredem1+. Par ailleurs, la concentration de radon dans le sol
965     est écrite dans \verb+restarttrac+ par \verb+phytrac+.
966    
967     \subsection{L'ozone en tant que traceur}
968    
969     Résumé. On part d'une certaine paramétrisation de la chimie
970     stratosphérique de l'ozone, préparée par Daniel Cariolle et Hubert
971 guez 18 Teyssèdre. La paramétrisation calcule en chaque point une production
972     chimique d'ozone. On suit l'ozone ainsi produit comme un traceur. Les
973     coefficients chimiques sont remaillés pour LMDZ, en latitude et en
974 guez 11 temps, dans \verb+etat0_lim+. Le remaillage vertical est fait une fois
975     par jour dans \verb+gcm+. On néglige donc l'effet sur le remaillage de
976     la variation temporelle de pression à la surface pendant une journée.
977     Le champ initial d'ozone spécifié dans \verb+etat0_lim+ est le champ
978 guez 18 de référence de D. Cariolle (un des coefficients). Pour les passages de
979 guez 11 fraction molaire d'ozone à fraction massique, on néglige la présence
980     de vapeur d'eau dans l'air. L'évolution de la fraction massique
981     d'ozone pendant un pas de temps de la physique est calculée dans
982     \verb+phytrac+ : les contributions du transport et de la chimie sont
983     intégrées séparément. La température, la masse volumique de l'air et
984     la direction du Soleil sont considérées comme constantes pendant un
985 guez 18 pas de temps de la physique. Un des coefficients de D. Cariolle est la
986 guez 11 densité-colonne d'ozone au dessus d'un point donné. Cette
987     densité-colonne est calculée dans l'approximation ``plans
988     parallèles''. La production chimique est intégrée pendant un pas de
989     temps de la physique par la méthode du point milieu. Une fois par jour
990     de simulation, dans \verb+gcm+, une procédure lit dans un fichier tous
991 guez 18 les coefficients chimiques au bon jour, remaillés en latitude pour LMDZ.
992 guez 11
993     Cf. Cariolle (1986 \#761),
994     \href{file:/user/guez/Documents/Commentaires_lectures/Autres_publications/-1991/Cariolle_1986_761.texfol/Cariolle_1986_761.dvi}{commentaires
995     sur Cariolle (1986 \# 761)}, texte des courriels (François L.,
996     29/11/6 ; D. Cariolle, 29/11/6 ; François L., 12/1/7), fichiers
997     \verb+O3_readme.txt+ de D. Cariolle et \verb+coefoz_v2_3.nc+.
998     Attention : les symboles ne désignent apparemment pas les mêmes
999     grandeurs dans Cariolle (1986, \#761) et dans la paramétrisation de
1000     2005. $r$ passe d'une concentration massique à une fraction molaire.
1001     $P$ et $L$ passent de la dimension masse$^{-1}$ temps$^{-1}$ à la
1002     dimension temps$^{-1}$.
1003    
1004     Phu L. V. conseille d'utiliser le schéma de transport numéro 10 (choix
1005     dans \verb+traceur.def+).
1006    
1007 guez 18 Nous notons avec un indice ``Mob'' les valeurs des coefficients de D.
1008     Cariolle et H. Teyssèdre, par référence au modèle Mobidic.
1009 guez 11
1010     \subsubsection{La paramétrisation de la chimie}
1011    
1012     Le taux de production photochimique par unité de volume (ou de masse
1013     d'air) est le nombre de molécules créées par unité de volume (ou de
1014     masse d'air) et par unité de temps. On peut aussi définir un taux de
1015     destruction chimique d'une espèce, de dimension temps$^{-1}$, sachant
1016     que le nombre de molécules de cette espèce détruites par unité de
1017     volume et par unité de temps est proportionnel à la densité de
1018     l'espèce. Comment $P$ est-il donc défini dans la paramétrisation de
1019     2005 ? En divisant par $N$, la densité totale de la phase gazeuse ?
1020     Quelle définition pour $L$ ? Par ailleurs, quelle grandeur la
1021     paramétrisation de 2005 permet-elle de calculer ? Certainement pas la
1022     dérivée partielle comme noté dans l'équation (5) de Cariolle (1986
1023     \#761), car la dérivée partielle doit dépendre du mouvement de
1024     l'atmosphère. Cf.
1025     \href{file:/user/guez/Documents/Commentaires_lectures/Autres_publications/-1991/Cariolle_1986_761.texfol/Cariolle_1986_761.dvi}{commentaires
1026     sur Cariolle (1986 \# 761)}. La paramétrisation donne-t-elle la
1027     dérivée lagrangienne de la fraction molaire, comme noté dans le
1028     fichier \verb+O3_readme.txt+ ? Notons :
1029     \begin{description}
1030     \item[$r$] : fraction molaire d'ozone
1031     \item[$q$] : fraction massique d'ozone
1032     \item[$s_{O_3}$] : masse nette d'ozone créée par la chimie par unité de
1033     volume et par unité de temps
1034     \item[$S$] : nombre net de molécules d'ozone créées par la chimie par
1035     unité de volume et par unité de temps
1036     \item[$N$] : densité totale de la phase gazeuse
1037     \item[$\rho$] : masse volumique totale de la phase gazeuse
1038     \end{description}
1039     On a :
1040     \begin{equation}
1041     \label{eq:o3}
1042     \left\{
1043     \begin{array}{l}
1044     \partial_t \rho_{\mathrm{O}_3} + \diverg(\rho_{\mathrm{O}_3} \vec v)
1045     = s_{O_3} \\
1046     \partial_t \rho + \diverg(\rho \vec v) = 0
1047     \end{array}
1048     \right.
1049     \end{equation}
1050     Remarquer que l'équation bilan sur le nombre total de molécules en
1051     phase gazeuse est plus compliquée que celle sur la masse totale : le
1052     second membre n'est a priori pas nul. D'après (\ref{eq:o3}) :
1053     \begin{equation}
1054     \label{eq:dqdt}
1055     \frac{\ud q}{\ud t} = s_{O_3} / \rho
1056     \end{equation}
1057     D'où :
1058     \begin{displaymath}
1059     \frac{\ud r}{\ud t}
1060     =
1061     \frac{1}{\mu_\mathrm{moy}} \frac{\ud \mu_\mathrm{moy}}{\ud t} r + S / N
1062     \end{displaymath}
1063     Donc il serait bizarre que la paramétrisation donne $\ud r/\ud t$. Je
1064     vais supposer qu'elle donne $S/N$. $P$ et $L$ sont alors les taux de
1065     production et de destruction chimique par unité de volume divisés par
1066     $N$. Je note : $P_\mathrm{net} := S / N$, taux de production chimique
1067     d'ozone, par molécule d'air.
1068    
1069     Désignons par $R_\mathrm{het}$ le taux de production chimique
1070     hétérogène par molécule d'ozone, interpolé journalièrement, remaillé
1071     horizontalement et verticalement pour LMDZ. Notons $\phi$ la latitude
1072     et $\lambda$ la longitude. Notons $d(t)$ le jour contenant une date
1073     $t$, $s$ la coordonnée verticale hybride et $\alpha$ l'angle entre la
1074     direction du Soleil et la verticale (\Eng{solar zenith angle?}). Nous
1075     pouvons définir un taux de destruction par chimie hétérogène corrigé :
1076     \begin{multline*}
1077     R_\mathrm{het,corr}(\lambda, \phi, s, t)
1078     =
1079     R_\mathrm{het}(\lambda, \phi, s, d(t))
1080     1_{T(\lambda, \phi, s, t) > 195\ \mathrm{K}}
1081     1_{\phi \notin [- 45°, 45°]} \\
1082     \times 1_{\alpha(\lambda, \phi, t) < 87°}
1083     \left(\frac{\mathrm{Clx}}{\nombre{3,8} \cdot 10^{-9}}\right)^2
1084     \end{multline*}
1085     (La définition de Clx n'est pas claire pour moi.) Clx est supposé être
1086     une constante. On calcule alors :
1087     \begin{multline*}
1088     P_\mathrm{net}(\lambda, \phi, s, t)
1089     =
1090     P_\mathrm{net,Mob}(\lambda, \phi, s, d(t)) \\
1091     + \frac{\partial P_\mathrm{net}}{\partial r}(\lambda, \phi, s, d(t))
1092     [r(\lambda, \phi, s, t) - r_\mathrm{Mob}(\lambda, \phi, s, d(t))] \\
1093     + \frac{\partial P_\mathrm{net}}{\partial T}(\lambda, \phi, s, d(t))
1094     [T(\lambda, \phi, s, t) - T_\mathrm{Mob}(\lambda, \phi, s, d(t))] \\
1095     + \frac{\partial P_\mathrm{net}}{\partial \Sigma}
1096     (\lambda, \phi, s, d(t))
1097     [\Sigma(\lambda, \phi, s, t) - \Sigma_\mathrm{Mob}
1098     (\lambda, \phi, s, d(t))] \\
1099     + R_\mathrm{het,corr}(\lambda, \phi, s, t) r(\lambda, \phi, s, t)
1100     \end{multline*}
1101     Ou encore :
1102     \begin{displaymath}
1103     S = P_\mathrm{net,Mob} N + \ldots
1104     + R_\mathrm{het,corr} n_{\mathrm{O}_3}
1105     \end{displaymath}
1106     Donc $R_\mathrm{het,corr}$ est le taux de production (algébrique) par
1107     chimie hétérogène par unité de volume et par molécule d'ozone.
1108    
1109     Soit une position dans l'atmosphère. Soit $\pseudov{\ud^2 S} = \ud^2 S
1110     \vec u_r$ une surface élémentaire à cette position. Notons $\ud^2
1111     \tau$ le volume compris dans l'angle solide de sommet le centre de la
1112     Terre, limitant $\ud^2 S$, et aux rayons $r'$ supérieurs au rayon $r$
1113     de la position considérée. J'interprète $\Sigma$ et
1114     $\Sigma_\mathrm{Mob}$ comme les nombres de molécules d'ozone dans
1115     $\ud^2 \tau$, divisés par $\ud^2 S$. D'où :
1116     \begin{displaymath}
1117     \mu_{\mathrm{O}_3} \Sigma
1118     = \frac{1}{r^2} \int_r ^{+ \infty} q \rho r'^2 \ud r'
1119     \end{displaymath}
1120     Avec l'équilibre hydrostatique vertical :
1121     \begin{displaymath}
1122     \mu_{\mathrm{O}_3} \Sigma
1123     = \frac{1}{r^2} \int_0 ^p q r'^2 \frac{\ud p'}{g}
1124     \end{displaymath}
1125    
1126     $a_2$, $a_4$ et $a_6$ sont constants sur les quatre niveaux de
1127     pression les plus proches de la surface, sur toutes les latitudes et
1128     tous les mois : $a_2 \approx - 2 \cdot 10^{-6}$, $a_4 \equiv 0$, $a_6
1129     \equiv 0$. L'intervalle de pression correspond à une couche de 400 ou
1130     500 m au dessus de la surface. Pour $a_2$, il y a une discontinuité
1131     entre la valeur dans cette couche proche de la surface et les valeurs
1132     au-dessus. Cf.
1133     \href{file:///user/guez/Documents/Utilisation_LMDZ/Input_etat0_lim/Ozone/a2.ps}{exemple
1134     de variation de $a_2$}.
1135    
1136     Ordres de grandeur dans \verb+coefoz_v2_3.nc+ :
1137     \begin{displaymath}
1138     \begin{array}{rcl}
1139     - 10^{-11} \lesssim & P_\mathrm{net,Mob} & \lesssim 10^{-12} \\
1140     - 10^{-5} \lesssim & a_2 & \lesssim 10^{-11} \\
1141     10^{-8} \lesssim & r_\mathrm{Mob} & \lesssim 10^{-5} \\
1142     - 10^{-12} \lesssim & a_4 & \lesssim 10^{-13} \\
1143     184 \le & T_\mathrm{Mob} & \le 320 \\
1144     - 10^{-27} \lesssim & a_6 & \lesssim 10^{-28} \\
1145     10^{12} \lesssim & \Sigma_\mathrm{Mob} & \lesssim 10^{19} \\
1146     10^{-13} \lesssim & - R_\mathrm{het} & \lesssim 10^{-5}
1147     \end{array}
1148     \end{displaymath}
1149     Deux valeurs de $|a_6|$ sont non nulles inférieures à $1,2 \cdot
1150     10^{-38}$ : environ $7 \cdot 10^{-39}$ et $2 \cdot 10^{-39}$. $1,2
1151     \cdot 10^{-38}$ est le plus petit nombre strictement positif normalisé
1152     dans l'ensemble IEEE des réels simple précision. Les deux petites
1153     valeurs de $|a_6|$ sont donc dénormalisées dans le fichier NetCDF. La
1154     perte de précision n'est pas importante. Ce problème ne se produit pas
1155     pour les autres coefficients.
1156    
1157     \subsubsection{Passage de la fraction molaire à la fraction massique d'ozone}
1158    
1159     Nous avons besoin de la masse moléculaire moyenne de l'air. Nous
1160     pourrions considérer l'air comme un mélange de trois espèces : une
1161     espèce fictive ``air sec'', l'eau (vapeur) et l'ozone. Nous supposons
1162     connue la fraction massique d'eau (elle est calculée par
1163     \verb+etat0+). Notons ici $q_i$ la fraction massique de l'espèce $i$
1164     et $x_i$ sa fraction molaire. Nous avons donc le système de quatre
1165     équations :
1166     \begin{displaymath}
1167     \left\{
1168     \begin{array}{ll}
1169     q_{\mathrm{H}_2\mathrm{O}}
1170     & = \frac{\mu_{\mathrm{H}_2\mathrm{O}}}{\mu_\mathrm{moy}}
1171     x_{\mathrm{H}_2\mathrm{O}} \\
1172     \mu_\mathrm{moy}
1173     & = \mu_{\mathrm{H}_2\mathrm{O}} x_{\mathrm{H}_2\mathrm{O}}
1174     + \mu_{\mathrm{O}_3} x_{\mathrm{O}_3}
1175     + \mu_\textrm{air sec} x_\textrm{air sec} \\
1176     1 & = x_{\mathrm{H}_2\mathrm{O}} + x_{\mathrm{O}_3}
1177     + x_\textrm{air sec} \\
1178     q_{\mathrm{O}_3} & = \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1179     x_{\mathrm{O}_3}
1180     \end{array}
1181     \right.
1182     \end{displaymath}
1183     pour les quatre inconnues : $\mu_\mathrm{moy}$,
1184     $x_{\mathrm{H}_2\mathrm{O}}$, $x_\textrm{air sec}$, $q_{\mathrm{O}_3}$. La
1185     solution de ce système est :
1186     \begin{equation}
1187     \label{eq:qO3}
1188     \left\{
1189     \begin{array}{ll}
1190     \mu_\mathrm{moy}
1191     & =
1192     \frac{[(\mu_{\mathrm{O}_3} - \mu_\textrm{air sec}) x_{\mathrm{O}_3}
1193     + \mu_\textrm{air sec}] \mu_{\mathrm{H}_2\mathrm{O}}}
1194     {\mu_{\mathrm{H}_2\mathrm{O}}
1195     + (\mu_\textrm{air sec} - \mu_{\mathrm{H}_2\mathrm{O}})
1196     q_{\mathrm{H}_2\mathrm{O}}} \\
1197     q_{\mathrm{O}_3}
1198     & =
1199     \frac{\mu_{\mathrm{O}_3}
1200     [(\mu_\textrm{air sec} - \mu_{\mathrm{H}_2\mathrm{O}})
1201     q_{\mathrm{H}_2\mathrm{O}}
1202     + \mu_{\mathrm{H}_2\mathrm{O}}]}
1203     {\mu_{\mathrm{H}_2\mathrm{O}}
1204     \left[
1205     \mu_{\mathrm{O}_3}
1206     + \mu_\textrm{air sec}
1207     \left(
1208     \frac{1}{x_{\mathrm{O}_3}} - 1
1209     \right)
1210     \right]}
1211     \end{array}
1212     \right.
1213     \end{equation}
1214     Les valeurs typiques semblent être :
1215     \begin{align*}
1216     \max q_{\mathrm{H}_2\mathrm{O}} \# 10^{-2} \\
1217     \max x_{\mathrm{O}_3} \# 10^{-5}
1218     \end{align*}
1219     L'écart entre $\mu_\mathrm{moy}$ et $\mu_\textrm{air sec}$ est alors
1220     $\lesssim 10^{-2}$, et essentiellement dû à la présence de l'eau. Une
1221     approximation intermédiaire entre :
1222     \begin{displaymath}
1223     \left\{
1224     \begin{array}{ll}
1225     \mu_\mathrm{moy} & = \mu_\textrm{air sec} \\
1226     q_{\mathrm{O}_3} & = \frac{\mu_{\mathrm{O}_3}}{\mu_\textrm{air sec}}
1227     x_{\mathrm{O}_3}
1228     \end{array}
1229     \right.
1230     \end{displaymath}
1231     et le système (\ref{eq:qO3}) serait de calculer $\mu_\mathrm{moy}$ en
1232     ne tenant compte que de la présence de l'eau :
1233     \begin{displaymath}
1234     \mu_\mathrm{moy}
1235     =
1236     \frac{\mu_\textrm{air sec}}
1237     {1 +
1238     \left(
1239     \frac{\mu_\textrm{air sec}}{\mu_{\mathrm{H}_2\mathrm{O}}} - 1
1240     \right)
1241     q_{\mathrm{H}_2\mathrm{O}}}
1242     \end{displaymath}
1243    
1244     \subsubsection{Choix du type de remaillage}
1245    
1246     Copiant ce qui était déjà fait pour la vapeur d'eau, j'ai d'abord
1247 guez 18 choisi de remailler verticalement les coefficients de Cariolle en
1248 guez 11 interpolant une spline cubique de la pression. (Noter que ce n'est pas
1249     une interpolation en logarithme de pression.) Si on interpole
1250     simplement les données de Cariolle et que la pression à laquelle on
1251     interpole est à l'extérieur du tableau de pressions de Cariolle alors
1252     la formule d'interpolation devient sans crier gare une formule
1253     d'extrapolation. C'est la formule pour l'intervalle extrême qui est
1254     utilisée. Pour mieux contrôler cette extrapolation, j'ai ajouté aux
1255     données de Cariolle un point correspondant à une pression nulle. Le
1256     but était d'avoir approximativement une fraction molaire constante
1257     au-dessus du point le plus haut de Cariolle et une production qui tend
1258     vers 0.
1259    
1260     Mais l'interpolation avec une spline cubique produit de fortes
1261     oscillations. (Elle donne d'ailleurs souvent des fractions molaires
1262     négatives.) Cf. exécutions
1263     \href{file:/user/guez/Documents/Utilisation_LMDZ/Utilisation_LMDZ.texfol/Utilisation-LMDZ.dvi}{28}
1264     et
1265     \href{file:///user/guez/Documents/Utilisation_LMDZ/Results_etat0_lim/check_coefoz_38.ps}{38}
1266     de \verb+etat0_lim+. Le remaillage vertical est donc maintenant fait
1267 guez 18 par moyenne pour la plupart des coefficients chimiques, comme le
1268 guez 11 remaillage horizontal.
1269    
1270     Considérons le remaillage de la fraction molaire $r_\mathrm{Mob}$ (le
1271     raisonnement est le même pour $P_\mathrm{net,Mob}$). Nous avons choisi
1272     un remaillage par moyenne donc nous voulons associer à une cellule de
1273     la grille tri-dimensionnelle de LMDZ une moyenne de $r_\mathrm{Mob}$
1274     sur cette cellule. Plus généralement, considérons un volume quelconque
1275     de l'espace réel humain. Le plus sensé est d'associer à ce volume une
1276     moyenne de $r_\mathrm{Mob}$ pondérée par la densité de l'air :
1277     \begin{align*}
1278     \langle r_\mathrm{Mob} \rangle
1279     & = \frac{\iiint r_\mathrm{Mob} N \ud^3 \tau}{\iiint N \ud^3 \tau} \\
1280     & = \frac{\iiint (a + z)^2 r_\mathrm{Mob} N \cos\phi\,\ud z\, \ud \phi\, \ud \lambda}
1281     {\iiint (a + z)^2 N \cos\phi\, \ud z\, \ud \phi\, \ud \lambda}
1282     \end{align*}
1283     Opérons le changement de variable $(z, \phi, \lambda) \to (p, \phi,
1284     \lambda)$, avec l'hypothèse d'équilibre hydrostatique vertical. Notons
1285     $\ud(z, \phi, \lambda) / \ud(p, \phi, \lambda)$ le jacobien de ce
1286     changement de variable :
1287     \begin{align*}
1288     \ud z\, \ud \phi\, \ud \lambda
1289     & = | \frac{\ud(z, \phi, \lambda)}{\ud(p, \phi, \lambda)} |
1290     \ud p\, \ud \phi\, \ud \lambda \\
1291     & = | \partial_p z | \ud p\, \ud \phi\, \ud \lambda \\
1292     & = \frac{\ud p}{\rho g} \ud \phi\, \ud \lambda
1293     \end{align*}
1294     D'où :
1295     \begin{displaymath}
1296     \langle r_\mathrm{Mob} \rangle = \frac
1297     {
1298     \iiint (a + z)^2 r_\mathrm{Mob} \cos\phi \frac{\ud p}{\mu_\mathrm{moy} g}
1299     \ud \phi\, \ud \lambda
1300     }
1301     {
1302     \iiint (a + z)^2 \cos\phi \frac{\ud p}{\mu_\mathrm{moy} g}
1303     \ud \phi\, \ud \lambda
1304     }
1305     \end{displaymath}
1306     Si $z \ll a$ et $\mu_\mathrm{moy}$ et $g$ sont approximativement
1307     constants sur le domaine considéré alors :
1308     \begin{displaymath}
1309     \langle r_\mathrm{Mob} \rangle \approx \frac
1310     {\iiint r_\mathrm{Mob} \cos\phi\, \ud p\, \ud \phi\, \ud \lambda}
1311     {\iiint \cos\phi \, \ud p\, \ud \phi\, \ud \lambda}
1312     \end{displaymath}
1313     (Attention : même si $r_\mathrm{Mob}$ ne dépend pas de $\lambda$, l'intégrale sur
1314     $\lambda$ ne se simplifie que si le domaine en $(p, \phi)$ est
1315     indépendant de $\lambda$.) Considérons maintenant le cas particulier
1316     où le domaine est une cellule de LMDZ. Nous considérons cette cellule
1317     comme un parallélépipède rectangle dans l'espace $(p, \phi, \lambda)$,
1318     d'où :
1319     \begin{displaymath}
1320     \langle r_\mathrm{Mob} \rangle = \frac{1}{\Delta p \Delta(\sin\phi)}
1321     \iint r_\mathrm{Mob} \cos\phi\, \ud p\, \ud \phi
1322     \end{displaymath}
1323     Cf. figure (\ref{fig:cell}).
1324     \begin{figure}[htbp]
1325     \centering
1326     \includegraphics{Graphiques/Cellule}
1327     \caption[Remaillage de la paramétrisation de la chimie de
1328     l'ozone]{En noir, cellule sur laquelle on moyenne les données
1329     concernant l'ozone. En rouge, cellules de Mobidic.}
1330     \label{fig:cell}
1331     \end{figure}
1332     Nous n'avons pas a priori $r_\mathrm{Mob}$ en tout point $(p, \phi)$,
1333     nous avons un nombre fini de valeurs de $r_\mathrm{Mob}$. Il nous
1334     reste donc à supposer une forme de variation de $r_\mathrm{Mob}$ en
1335     fonction de $(p, \phi)$. Le plus simple est de supposer que
1336     $r_\mathrm{Mob}$ est constant sur des cellules rectangulaires du plan
1337     $(p, \phi)$. Nous devons choisir les limites de ces cellules. En
1338     latitude, nous prenons les milieux des valeurs de Mobidic. En
1339     pression, nous prenons les moyennes géométriques des valeurs de
1340     Mobidic (si bien que les limites de cellule en pression sont à
1341     mi-chemin des valeurs de Mobidic sur un axe logarithmique).
1342    
1343     Pour les coefficients $a_2$ et $R_\mathrm{het}$, la démarche est moins évidente. Supposons
1344     connu $a_2$ en tout point de ``l'espace humain'', quelle valeur
1345     moyenne de $a_2$, $\overline{a_2}$, associer à un volume $\tau$ ?
1346     Considérons la paramétrisation simplifiée :
1347     \begin{displaymath}
1348     P_\mathrm{net} = P_\mathrm{net,Mob} + a_2 (r - r_\mathrm{Mob})
1349     \end{displaymath}
1350     Nous voudrions que :
1351     \begin{displaymath}
1352     \overline{P_\mathrm{net}}
1353     = \overline{P_\mathrm{net,Mob}}
1354     + \overline{a_2} (\bar r - \overline{r_\mathrm{Mob}})
1355     \end{displaymath}
1356     Ce qui donne :
1357     \begin{displaymath}
1358     \overline{a_2}
1359     = \frac{\iiint a_2 (r - r_\mathrm{Mob}) N \ud^3 \tau}
1360     {\iiint (r - r_\mathrm{Mob})N \ud^3 \tau}
1361     \end{displaymath}
1362     On peut adopter :
1363     \begin{displaymath}
1364     \overline{a_2} = \frac{\iiint a_2 N \ud^3 \tau}{\iiint N \ud^3 \tau}
1365     \end{displaymath}
1366     et garder ainsi une certaine compatibilité avec l'hypothèse selon
1367     laquelle $r_\mathrm{Mob}$ est constant sur une cellule de
1368     Mobidic. Idem pour $R_\mathrm{het}$.
1369    
1370     Pour $a_4$ et $T_\mathrm{Mob}$, nous calculons aussi la moyenne
1371     pondérée par $N$.
1372    
1373     Pour $\Sigma_\mathrm{Mob}$, verticalement, une moyenne ne me
1374     semblerait pas avoir de sens. Je choisis de faire une interpolation au
1375     milieu de couche de LMDZ (pression \verb+pls+). Quelle interpolation ?
1376     On a :
1377     \begin{equation}
1378     \label{eq:sigma}
1379     \frac{\partial \Sigma_\mathrm{Mob}}{\partial z} = - r_\mathrm{Mob} N \approx - \frac{r_\mathrm{Mob} p}{k_B T}
1380     \end{equation}
1381     En remaillant $r_\mathrm{Mob}$ et $T$, nous avons supposé qu'ils
1382     étaient constants sur des intervalles de pression centrés sur les
1383     niveaux de pression de Mobidic. Considérons donc un tel intervalle,
1384     centré sur la pression $p_1$, correspondant à une altitude $z_1$.
1385     Supposons aussi $\mu_\mathrm{moy}$ et $g$ constants. Sur l'intervalle,
1386     l'échelle $H$ de gradient de pression est constante :
1387     \begin{displaymath}
1388     p(z) = p(z_1) \exp\left(- \frac{z - z_1}{H}\right)
1389     \end{displaymath}
1390     Donc, en intégrant (\ref{eq:sigma}) sur $z$ :
1391     \begin{displaymath}
1392     \Sigma_\mathrm{Mob}(p) - \Sigma_\mathrm{Mob}(p_1) = \frac{r_\mathrm{Mob}}{\mu_\mathrm{moy} g} (p - p_1)
1393     \end{displaymath}
1394     $\Sigma_\mathrm{Mob}$ varie linéairement avec la pression. Nous connaissons les
1395     valeurs de $\Sigma_\mathrm{Mob}$ aux niveaux de Mobidic, que nous supposons être
1396     les centres des intervalles de fraction molaire constante, et non les
1397     limites des intervalles. Nous pourrions commencer par calculer
1398     $\Sigma_\mathrm{Mob}$ aux limites des intervalles. Notons $p_1$ et $p_2$ deux
1399     niveaux de pression successifs de Mobidic, $r_{\mathrm{Mob},1}$ et $r_{\mathrm{Mob},2}$ les
1400     fractions molaires correspondantes, $p_l = \sqrt{p_1 p_2}$ la
1401     limite entre les deux intervalles de centres $p_1$ et $p_2$. Posons :
1402     \begin{displaymath}
1403     \alpha = \frac{r_{\mathrm{Mob},1}}{r_{\mathrm{Mob},2}} \frac{p_l - p_1}{p_2 - p_l}
1404     \end{displaymath}
1405     On a :
1406     \begin{align*}
1407     & \Sigma_\mathrm{Mob}(p_l) - \Sigma_{\mathrm{Mob},1}
1408     = \frac{r_{\mathrm{Mob},1}}{\mu_\mathrm{moy} g} (p_l - p_1) \\
1409     & \Sigma_{\mathrm{Mob},2} - \Sigma_\mathrm{Mob}(p_l)
1410     = \frac{r_{\mathrm{Mob},2}}{\mu_\mathrm{moy} g} (p_2 - p_l)
1411     \end{align*}
1412     donc :
1413     \begin{displaymath}
1414     \Sigma_\mathrm{Mob}(p_l) = \frac{\Sigma_{\mathrm{Mob},1} + \alpha \Sigma_{\mathrm{Mob},2}}{1 + \alpha}
1415     \end{displaymath}
1416     Plus simplement, je choisis d'interpoler linéairement en pression
1417     entre les valeurs de Mobidic.
1418    
1419     Pour $\Sigma_\mathrm{Mob}$ horizontalement, nous moyennons simplement pour
1420     conserver le nombre de molécules d'ozone au-dessus d'une surface :
1421     \begin{align*}
1422     \bar \Sigma_\mathrm{Mob} & = \frac{\iint \Sigma_\mathrm{Mob} \ud^2 S}{S} \\
1423     & =
1424     \frac{\iint \Sigma_\mathrm{Mob} (a + z^2) \cos\phi \ud \phi \ud \lambda}
1425     {\iint (a + z^2) \cos\phi \ud \phi \ud \lambda} \\
1426     & \approx \frac{\iint \Sigma_\mathrm{Mob} \cos\phi \ud \phi \ud \lambda}
1427     {\iint \cos\phi \ud \phi \ud \lambda}
1428     \end{align*}
1429    
1430     Pour $a_6$, une moyenne pondérée par $N$ semble censée. $a_6(p) (\Sigma(p) -
1431     \Sigma_\mathrm{Mob}(p))$ est une contribution à
1432     $P_\mathrm{net}(p)$. LMDZ calcule la moyenne
1433     $\overline{P_\mathrm{net}}$ pondérée par $N$ sur une cellule. Une
1434     contribution à cette moyenne est :
1435     \begin{displaymath}
1436     \frac{\int a_6 N (\Sigma - \Sigma_\mathrm{Mob}) \ud \tau}{\int N \ud \tau}
1437     \end{displaymath}
1438     $\overline{a_6} (\Sigma - \Sigma_\mathrm{Mob})$, avec $\Sigma$ la
1439     valeur en milieu de couche dans LMDZ et $\Sigma_\mathrm{Mob}$ la
1440     valeur interpolée, se rapproche de cette contribution.
1441    
1442     Cf. figures (\ref{fig:regr_latit}), (\ref{fig:regr_p_stepav}) et
1443     (\ref{fig:regr_p_lint}).
1444     \begin{figure}[htbp]
1445     \centering
1446     \includegraphics{Graphiques/regr_latit}
1447     \caption[Remaillage en latitude de la paramétrisation de la chimie
1448     de l'ozone]{Remaillage en latitude. En bleu, les valeurs d'origine,
1449     en rouge les valeurs utilisées.}
1450     \label{fig:regr_latit}
1451     \end{figure}
1452     \begin{figure}[htbp]
1453     \centering
1454     \includegraphics{Graphiques/regr_p_stepav}
1455     \caption[Remaillage de la paramétrisation de la chimie de l'ozone,
1456     en pression par moyenne de fonction en escalier] {Remaillage en
1457     pression par moyenne de fonction en escalier. En bleu, les
1458     valeurs d'origine, en rouge les valeurs utilisées. La position de
1459     \texttt{p3d(i, j, 1)} par rapport à \texttt{plev(n\_plev)} est
1460     quelconque.}
1461     \label{fig:regr_p_stepav}
1462     \end{figure}
1463     \begin{figure}[htbp]
1464     \centering
1465     \includegraphics{Graphiques/regr_p_lint}
1466     \caption[Remaillage de la paramétrisation de la chimie de l'ozone,
1467     en pression par interpolation linéaire]{Remaillage en pression par
1468     interpolation linéaire. Les calculs aux valeurs élevées de
1469     \texttt{pls} (premiers indices de niveau vertical) peuvent être
1470     des extrapolations. La valeur supplémentaire à pression nulle du
1471     maillage source contrôle l'extrapolation aux basses pressions.}
1472     \label{fig:regr_p_lint}
1473     \end{figure}
1474    
1475     \subsubsection{Remaillage : dans quel programme, à quel moment ? Quelles
1476     entrées-sorties ?}
1477    
1478 guez 18 Les coefficients chimiques doivent être remaillés en latitude pour LMDZ.
1479 guez 11 Ce remaillage en latitude peut être fait une fois pour toutes, dans
1480     \verb+etat0_lim+. Par ailleurs, au cours d'une simulation, la pression
1481     à une longitude, une latitude et un niveau vertical donnés change
1482     parce que la pression à la surface change. Donc il faut en principe
1483     faire le remaillage en pression des données de Cariolle à chaque pas
1484     de temps physique. Enfin, nous voulons lisser les variations
1485 guez 18 temporelles des coefficients chimiques en les interpolant
1486 guez 11 journalièrement. Ce remaillage temporel peut être fait une fois pour
1487     toutes, dans \verb+etat0_lim+.
1488    
1489     En pratique, le remaillage en pression à chaque pas de temps n'est pas
1490     indispensable parce que l'essentiel de la chimie de l'ozone, avec
1491     notre paramétrisation, se déroule à haute altitude, où les niveaux
1492     verticaux de LMDZ sont pratiquement des niveaux de pression fixés.
1493     Nous pouvons donc nous demander si, pour simplifier le programme, nous
1494     pouvons faire les trois remaillages (latitude, pression, temps) dans
1495     \verb+etat0_lim+. Nous négligerions alors pour le remaillage vertical
1496     l'évolution des pressions aux interfaces des couches. Mais la
1497     \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Guide_IPSL_climate_models/taille.ods}{taille
1498 guez 18 du fichier contenant les coefficients remaillés} serait alors trop
1499 guez 11 grande.\footnote{Le remaillage en pression dans \texttt{etat0\_lim}
1500 guez 18 serait une bonne solution si nous utilisions les coefficients mensuels
1501 guez 11 sans interpolation journalière.}
1502    
1503     Nous devons donc faire un des trois remaillages dans \verb+gcm+.
1504     Lequel ? On ne peut faire le remaillage vertical sans avoir fait le
1505     remaillage en latitude. Le choix dans \verb+gcm+ se restreint donc aux
1506     remaillages vertical et temporel. Pour le calcul de la production
1507     chimique d'ozone, nous avons besoin à chaque pas de temps de cinq
1508     coefficients tri-dimensionnels (taille totale : $(\mathtt{iim} + 1)
1509     \times (\mathtt{jjm} + 1) \times \mathtt{llm} \times 5$). Si nous
1510     partons des coefficients remaillés en pression dans \verb+etat0_lim+,
1511     nous devons calculer ces cinq coefficients par interpolation
1512     temporelle pour chaque jour. Si nous partons des coefficients
1513     interpolés journalièrement dans \verb+etat0_lim+, nous pouvons aussi
1514     nous contenter de calculer ces cinq coefficients par remaillage
1515     vertical pour chaque jour. Les deux transformations :
1516     \begin{displaymath}
1517     \xymatrix{
1518     (\mathtt{jjm} + 1) \times 45 \ar[d]_{\textrm{remaillage vertical}}
1519     & (\mathtt{iim} + 1) \times (\mathtt{jjm} + 1) \times \mathtt{llm}
1520     \times 12 \ar[ld]^{\textrm{remaillage temporel}} \\
1521     (\mathtt{iim} + 1) \times (\mathtt{jjm} + 1) \times \mathtt{llm}
1522     }
1523     \end{displaymath}
1524     demandent des nombres d'opérations du même ordre de grandeur :
1525     $(\mathtt{iim} + 1) \times (\mathtt{jjm} + 1) \times \mathtt{llm}$. Le
1526     plus sensé est donc de faire le remaillage en pression dans
1527     \verb+gcm+. Pour que l'arrêt et le redémarrage du programme \verb+gcm+
1528     soient sans conséquence, nous ne pouvons faire le remaillage en
1529     pression moins d'une fois par jour. (En particulier, nous ne pouvons
1530     le faire une fois par exéuction de \verb+gcm+, au début de \verb+gcm+,
1531     à partir de la valeur courante du champ de pression.) Nous faisons
1532     donc le remaillage vertical pour chaque jour, négligeant l'évolution
1533     des pressions aux interfaces des couches pendant un jour.
1534    
1535     Nous devons encore nous demander s'il vaut mieux lire tout le contenu
1536     de \verb+coefoz_LMDZ.nc+ au début de l'exécution de \verb+gcm+ ou lire
1537 guez 18 dans le fichier une fois par jour les coefficients au bon jour. Si nous
1538 guez 11 lisons tout en une seule fois, nous gagnons en temps d'exécution (nous
1539     limitons les accès au disque) mais nous augmentons la
1540     \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Guide_IPSL_climate_models/taille.ods}{mémoire
1541     principale consommée}. La lecture une fois par jour simulé est-elle
1542     trop fréquente ? On peut se référer à une durée de 40 s de temps
1543     écoulé par jour simulé en résolution $96 \times 72 \times 50$, sur
1544     deux processus MPI. Pour le moment, la programmation de la lecture une
1545     fois par jour me paraît plus simple.
1546    
1547     \verb+etat0_lim+ fait le remaillage en latitude et en temps des huit
1548     coefficients et le remaillage vertical du coefficient $r$ seulement,
1549     au jour initial seulement, pour servir d'état initial de l'abondance
1550     d'ozone. Nous ne pouvons donc pas faire le remaillage en latitude et
1551     temps après \verb+etat0+.
1552    
1553     Dans quel fichier \verb+etat0_lim+ doit-il écrire les coefficients
1554     remaillés ? Le fichier \verb+limit.nc+ n'est pas très adapté car les
1555     coefficients ne sont pas sur la grille de la ``physique''. De plus,
1556 guez 18 les coefficients chimiques ne sont pas des conditions à la limite. Par
1557     ailleurs, les coefficients chimiques sont les mêmes dans plusieurs
1558 guez 11 exécutions successives de \verb+gcm+, donc ils ne peuvent pas être
1559     dans \verb+start+ ou \verb+startphy+. Nous créons donc un nouveau
1560     fichier \verb+coefoz_LMDZ.nc+. Cf.
1561     \href{file:///user/guez/Documents/Informatique_fonctionnement/Programs/Guide_IPSL_climate_models/inout
1562     LMDZE.odg}{schéma des entrées-sorties de \texttt{etat0\_lim} et
1563     \texttt{gcm}}. \verb+coefoz_LMDZ.nc+ contient donc les données de
1564     Cariolle remaillées en latitude pour LMDZ et interpolées
1565     journalièrement.
1566    
1567     Principe de la procédure \verb+regr_lat_time_coefoz+ :
1568     \begin{algorithmic}
1569     \FOR{chaque coefficient à remailler}
1570     \STATE remaillage en latitude
1571     \STATE remaillage en temps
1572     \ENDFOR
1573     \end{algorithmic}
1574     Cf. figure (\ref{fig:regr_lat_time_coefoz}).
1575     \begin{figure}[htbp]
1576     \centering
1577     \includegraphics{Graphiques/regr_lat_time_coefoz}
1578     \caption{Schéma des entrées-sorties de
1579     \texttt{regr\_lat\_time\_coefoz}.}
1580     \label{fig:regr_lat_time_coefoz}
1581     \end{figure}
1582    
1583     \subsubsection{Calcul de l'évolution de la distribution d'ozone dans \texttt{phytrac}}
1584    
1585     D'après l'équation (\ref{eq:dqdt}) :
1586     \begin{displaymath}
1587     \partial_t q
1588     = - \vec U \cdot \vec\nabla q
1589     + P_\mathrm{net} \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1590     \end{displaymath}
1591     Notons $\vec r$ le vecteur position. \verb+phytrac+ calcule :
1592     \begin{displaymath}
1593     q(\vec r, t + \mathtt{pdtphys}) = q(\vec r, t) + \textrm{termes de transport}
1594     + \int_t ^{t + \mathtt{pdtphys}} P_\mathrm{net}(\vec r, t')
1595     \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}} \ud t'
1596     \end{displaymath}
1597     Le dernier terme est la contribution de la chime de l'ozone. Nous
1598     avons besoin de $P_\mathrm{net}$ à chaque point de la grille
1599     horizontale de LMDZ et à chaque niveau vertical de LMDZ. Le fichier
1600     \verb+coefoz_LMDZ.nc+ contenant les grandeurs $P_\mathrm{net,Mob}$,
1601     $a_2$, $r_\mathrm{Mob}$, $a_4$, $T _\mathrm{Mob}$, $a_6$,
1602     $\Sigma_\mathrm{Mob}$ et $R_\mathrm{het}$, \verb+phytrac+ doit
1603     intégrer :
1604     \begin{multline*}
1605     P_\mathrm{net} \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1606     = P_\mathrm{net,Mob} \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1607     + a_2 \left(q - r_\mathrm{Mob} \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}\right)
1608     + a_4 \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1609     (T - T_\mathrm{Mob}) \\
1610     + \frac{a_6}{\mu_\mathrm{moy}}
1611     \left(
1612     \frac{1}{r^2} \int_r ^{+ \infty} q \rho r'^2 \ud r'
1613     - \mu_{\mathrm{O}_3} \Sigma_\mathrm{Mob}
1614     \right)
1615     + R_\mathrm{het,corr} q
1616     \end{multline*}
1617    
1618     Dans \verb+phytrac+, nous n'avons accès qu'à la température et à la
1619     masse volumique à l'instant courant, et à aucun autre instant.
1620     Calculons donc l'intégrale comme si $T$ et $\rho$ étaient des
1621     constantes pendant \verb+pdtphys+. La direction du Soleil, qui
1622     intervient dans le terme de chimie hétérogène, pourrait être
1623     considérée comme une fonction du temps. Je choisis pour simplifier de
1624     considérer aussi la direction du Soleil comme une constante pendant un
1625     pas de temps de la physique. Récrivons alors $P_\mathrm{net}
1626     \mu_{\mathrm{O}_3} / \mu_\mathrm{moy}$ en mettant en évidence les
1627     constantes. Posons :
1628     \begin{align*}
1629     & c := [P_\mathrm{net,Mob} - a_2 r_\mathrm{Mob}
1630     + a_4 (T - T_\mathrm{Mob}) - a_6 \Sigma_\mathrm{Mob}]
1631     \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}} \\
1632     & b := a_2 + R_\mathrm{het,corr} \\
1633     & a_{6m} := \frac{a_6}{\mu_\mathrm{moy}}
1634     \end{align*}
1635     $c$, $b$ et $a_{6m}$ sont des champs constants connus pendant
1636     \verb+pdtphys+. On a :
1637     \begin{equation}
1638     \label{eq:dq_dt}
1639     P_\mathrm{net} \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1640     = c + b q + a_{6m} \frac{1}{r^2} \int_r ^{+ \infty} q \rho r'^2 \ud r'
1641     \end{equation}
1642     Si on calcule l'évolution de $q$ en ne tenant compte
1643     que de la chimie (c'est-à-dire sans tenir compte des termes de
1644     transport) alors on obtient :
1645     \begin{displaymath}
1646     \partial_t q = P_\mathrm{net} \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1647     \end{displaymath}
1648    
1649     Limitons-nous d'abord aux deux premiers termes dans le membre de
1650     droite de (\ref{eq:dq_dt}) :
1651     \begin{equation}
1652     \label{eq:dq_dt_c_a2}
1653     \partial_t q = c + b q
1654     \end{equation}
1655     La solution exacte de cette équation différentielle sur $q$ donne :
1656     \begin{equation}
1657     \label{eq:delta_q_exact}
1658     \begin{array}{|ll}
1659     \delta q = (c + b q) \frac{e^{b \delta t} - 1}{b}
1660     & \textrm{si } b \ne 0 \\
1661     \delta q = c \delta t & \textrm{si } b = 0
1662     \end{array}
1663     \end{equation}
1664     pour un intervalle de temps $\delta t$ quelconque. \`A l'ordre 2 en
1665     $b \delta t$, nous avons donc, que $b$ soit nul ou non :
1666     \begin{equation}
1667     \label{eq:delta_q}
1668     \delta q = (c + b q) (1 + b \delta t / 2) \delta t
1669     \end{equation}
1670     (Ce qui revient à avoir intégré l'équation différentielle par la
1671     méthode du point milieu. Cf. Press et al. [1992 \# 318, équation
1672     (16.1.2)].) Pour $\delta t = 1800$ s, on a :
1673     \begin{displaymath}
1674     4 \cdot 10^{-11} \le |a_2| \delta t \le \nombre{0,02}
1675     \end{displaymath}
1676     Entre la valeur calculée de $e^x -1$ et la valeur calculée de $x + x^2
1677     / 2$, laquelle est la plus proche de la valeur exacte de $e^x -1$ ?
1678     Pour $x \ge 10^{-2}$, c'est la valeur calculée de $e^x -1$. Pour $0
1679     \le x \le 10^{-3}$, c'est la valeur calculée de $x + x^2 / 2$. En
1680     conséquence, l'utilisation de (\ref{eq:delta_q}) à la place de
1681     (\ref{eq:delta_q_exact}) est un bon choix.
1682    
1683     Si on tient maintenant compte du terme de densité-colonne dans
1684     (\ref{eq:dq_dt}), nous avons une équation intégro-différentielle aux
1685     dérivées partielles. Nous commençons par une discrétisation spatiale
1686     verticale, à une position horizontale fixée. Nous avons \verb+llm+
1687     couches d'atmosphère et nous supposons que $q$ est uniforme dans
1688     chaque couche. La fonction inconnue $q(\vec r, t)$ devient alors un
1689     vecteur de fonctions du temps : $[q_1(t), \dots, q_\mathtt{llm}(t)]$.
1690     La fonction connue $c(\vec r)$ devient un vecteur de constantes
1691     connues : $[c_1, \dots, c_\mathtt{llm}]$, idem pour $b$ et $a_{6m}$.
1692     Notons $r_k$ la position de la limite entre les couches $k-1$
1693     et $k$. Pour chaque couche $k$, nous avons :
1694     \begin{displaymath}
1695     \frac{\ud q_k}{\ud t}
1696     = c_k + b_k q_k
1697     + a_{6m,k} \frac{1}{r_k^2}
1698     \sum_{k'=k} ^{\mathtt{llm}} q_{k'} \int_{r_{k'}} ^{r_{k'+1}} \rho r^2 \ud r
1699     \end{displaymath}
1700     Supposons que la différence entre $r_\mathtt{llm}$ et
1701     le rayon de la Terre soit négligeable. Alors pour $k \le k' \le \mathtt{llm}
1702     - 1$ :
1703     \begin{equation}
1704     \label{eq:approx_column}
1705     \frac{1}{r_k^2} \int_{r_{k'}} ^{r_{k'+1}}\rho r'^2 \ud r'
1706     \approx \int_{z_{k'}} ^{z_{k'+1}} \rho \ud z
1707     \end{equation}
1708     Mais le cas de la couche supérieure est plus problématique :
1709     $r_{\mathtt{llm}+1} = + \infty$. Nous pouvons faire l'approximation
1710     (\ref{eq:approx_column}) pour $k' = \mathtt{llm}$ si $\rho$ décroît
1711     suffisamment rapidement au dessus de $r_\mathtt{llm}$. C'est
1712     l'approximation qui est faite dans \verb+phytrac+ pour le calcul de
1713     \verb+zmasse+, et que je garde. Alors :
1714     \begin{equation}
1715     \label{eq:dqk_dt}
1716     \frac{\ud q_k}{\ud t}
1717     = c_k + b_k q_k
1718     + a_{6m,k} \sum_{k'=k} ^{\mathtt{llm}} q_{k'} \mathtt{zmasse}_{k'}
1719     \end{equation}
1720     Nous nous sommes ramenés à un système d'équations différentielles du
1721     premier ordre.
1722    
1723     La somme partielle dans (\ref{eq:dqk_dt}) est la densité-colonne
1724     d'ozone au dessus de la base de la couche $k$. Nous pourrions raffiner
1725     en calculant à partir de là des densités-colonnes au dessus des
1726     milieux de couches (par interpolation linéaire en pression). Je reste
1727     pour l'instant à l'équation (\ref{eq:dqk_dt}).
1728    
1729     Les équations différentielles du premier ordre du système
1730     (\ref{eq:dqk_dt}) sont linéaires à coefficients constants. Nous
1731     pourrions chercher une solution exacte. Considérant l'étude que j'ai
1732     faite de l'équation (\ref{eq:dq_dt_c_a2}), je choisis d'appliquer
1733     simplement la méthode du point milieu.
1734    
1735     $c$ et $b$ doivent être recalculés à chaque pas de temps de la
1736     physique mais, parmi les termes composant $c$, les termes provenant de
1737     Mobidic ne varient que pour le remaillage en pression: leur
1738     combinaison peut être calculée une fois par jour. Distinguons donc :
1739     \begin{displaymath}
1740     c_\mathrm{Mob}
1741     :=
1742     (P_\mathrm{net,Mob} - a_2 r_\mathrm{Mob}
1743     - a_6 \Sigma_\mathrm{Mob} - a_4 T_\mathrm{Mob})
1744     \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}}
1745     \end{displaymath}
1746 guez 18 $c_\mathrm{Mob}$ regroupe les quatre coefficients ``climatologiques''.
1747 guez 11 On a :
1748     \begin{displaymath}
1749     c = c_\mathrm{Mob} + a_4 \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}} T
1750     \end{displaymath}
1751     De même, pour le calcul de $b$, le filtrage de la chimie hétérogène
1752     selon la latitude et la prise en compte du coefficient Clx peuvent
1753     être faits une fois par jour. En résumé, nous avons distingué :
1754     \begin{itemize}
1755     \item la variable $q$ à intégrer pendant un pas de temps de la
1756     physique, qui est donc considérée comme dépendant du temps pendant
1757     \verb+pdtphys+ ;
1758     \item les variables considérées comme constantes pendant
1759     \verb+pdtphys+ mais qui changent d'un pas de temps de la physique à
1760     l'autre ;
1761     \item les variables qui ne changent qu'une fois par jour.
1762     \end{itemize}
1763    
1764     \subsubsection{Les procédures \texttt{regr\_pr\_comb\_coefoz} et
1765     \texttt{regr\_pr\_(av|int)\_coefoz}}
1766    
1767     Les procédures du module \verb+regr_pr+ (cf. figure
1768     (\ref{fig:regridding_proced})) fournissent des variables ayant un
1769     double indice horizontal alors que \verb+tr_seri+ dans \verb+phytrac+
1770     a un indice horizontal simple.
1771     \begin{figure}[htbp]
1772     \centering
1773     \includegraphics{Graphiques/regridding_proced}
1774     \caption{Arbre des appels des procédures de remaillage. Les cadres
1775     verts symbolisent des modules. Les procédures du plus bas niveau
1776     sont celles qui effectuent réellement le remaillage. Elles sont
1777     les plus générales et ne font pas référence aux notions de
1778 guez 18 pression, latitude ou temps. Entre parenthèses : les opérations
1779     non effectuées par les procédures de niveau inférieur.}
1780 guez 11 \label{fig:regridding_proced}
1781     \end{figure}
1782     Il faut lire dans le fichier \verb+coefoz_LMDZ.nc+, remailler en
1783     pression et faire la transformation d'indiçage une seule fois par jour
1784     de simulation. De même, $c_\mathrm{Mob}$, $a_4 \mu_{\mathrm{O}_3} /
1785     \mu_\mathrm{moy}$ et $a_{6m}$ doivent être calculés une seule fois par
1786     jour. Toutes ces opérations sont faites dans la procédure
1787     \verb+regr_pr_comb_coefoz+. Quand pouvons-nous appeler
1788     \verb+regr_pr_comb_coefoz+ ? \verb+calfis+ appelle forcément une seule
1789     fois \verb+physiq+, qui appelle forcément une seule fois
1790     \verb+phytrac+. Nous pourrions donc faire l'appel dans n'importe
1791     laquelle de ces trois procédures. Nous choisissons \verb+phytrac+ pour
1792     une plus grande modularité.
1793    
1794     La procédure \verb+regr_pr_comb_coefoz+ lit en entier les huit
1795     coefficients chimiques au jour courant et met à jour les cinq
1796     variables de module : \verb+a2+, \verb+a4_mass+, \verb+c_mob+,
1797     \verb+a6_mass+, \verb+r_het_interm+. Nous regroupons ici les
1798     définitions des quatre dernières :
1799     \begin{align*}
1800     & a_{4m} := a_4 \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}} \\
1801     & c_\mathrm{Mob}
1802     := (P_\mathrm{net,Mob} - a_2 r_\mathrm{Mob} - a_6 \Sigma_\mathrm{Mob})
1803     \frac{\mu_{\mathrm{O}_3}}{\mu_\mathrm{moy}} - a_{4m} T_\mathrm{Mob} \\
1804     & a_{6m} := \frac{a_6}{\mu_\mathrm{moy}} \\
1805     & R_\mathrm{het,interm} = R_\mathrm{het} 1_{\phi \notin [- 45°, 45°]}
1806     \left(\frac{\mathrm{Clx}}{\nombre{3,8} \cdot 10^{-9}}\right)^2
1807     \end{align*}
1808     Chacune des cinq variables de module est de profil \verb+(klon, llm)+.
1809    
1810     La procédure \verb+regr_pr_(av|int)_coefoz+ est appelée une fois par
1811     jour, pour chaque coefficient chimimque. Cf. figure (\ref{fig:regr_pr_coefoz}).
1812     \begin{figure}[htbp]
1813     \centering
1814     \includegraphics{Graphiques/regr_pr_coefoz}
1815     \caption{Entrées-sorties de la procédure
1816     \texttt{regr\_pr\_(av|int)\_coefoz}. En rouge : les données, en
1817     noir : les traitements.}
1818     \label{fig:regr_pr_coefoz}
1819     \end{figure}
1820    
1821    
1822     \subsubsection{Vue d'ensemble informatique}
1823    
1824     Cf. figure (\ref{fig:ozone}).
1825     \begin{figure}[htbp]
1826     \centering
1827     \includegraphics{Graphiques/ozone}
1828 guez 18 \caption{Vue d'ensemble de ce qui concerne le traceur ozone dans les
1829     programmes entiers \texttt{etat0\_lim} et \texttt{gcm}. On fait
1830     apparaître les fichiers, les principales procédures et variables
1831     concernées.}
1832 guez 11 \label{fig:ozone}
1833     \end{figure}
1834     Les résultats du programme \texttt{gcm} pour l'ozone apparaissent dans
1835     cinq fichiers (cf. figure (\ref{fig:ozone})). Dans \verb+histrac.nc+,
1836     ce sont les variables :
1837     \begin{itemize}
1838     \item \verb+float O3(time_counter, presnivs, lat, lon)+
1839     \item \verb+flO3+ flux
1840     \item \verb+d_tr_th_O3+ tendance thermique
1841     \item \verb+d_tr_cv_O3+ tendance convection
1842     \item \verb+d_tr_cl_O3+ tendance couche limite
1843     \end{itemize}
1844     La différence entre \verb+O3+ dans \verb+histrac.nc+ et :
1845     \begin{verbatim}
1846     float O3VL1(time_counter, sigss, lat, lon)
1847     \end{verbatim}
1848     dans \verb+dyn_hist_ave.nc+ n'est pas claire pour moi. Une longitude
1849     en plus, 180°, dans \verb+dyn_hist_ave.nc+. Les latitudes sont les
1850     mêmes. Cf.
1851     \hyperref{file:/user/guez/Documents/Utilisation_LMDZ/Utilisation_LMDZ.texfol/Utilisation-LMDZ.dvi}{section}{ozone}{résultats}.
1852     Faire varier les paramètres dans \verb+physiq.def+ :
1853     \begin{verbatim}
1854     OK_mensuel=y
1855     OK_instan=y
1856     lev_histhf=4
1857     lev_histmth=2
1858     \end{verbatim}
1859     n'apporte aucune sortie supplémentaire sur l'ozone. Cf. exécutions 58
1860     à 63 de \verb+gcm+.
1861    
1862     Diverses procédures s'occupent de remaillage. Elles sont de
1863     généralités différentes. Cf. figure (\ref{fig:regridding_proced}).
1864     \begin{description}
1865     \item[\texttt{regr\_pr\_comb\_coefoz}] : lecture, remaillage en pression,
1866     empaquetage, combinaison
1867     \item[\texttt{regr\_pr\_coefoz}] : lecture, remaillage en pression, empaquetage
1868     \item[\texttt{regr\_lat\_time\_coefoz}] : lecture, remaillage en temps et
1869     latitude, écriture
1870     \item[\texttt{regr\_pr\_o3}] : lecture, remaillage en pression
1871     \item[\texttt{regr\_pr}] : remaillage en pression
1872     \item[\texttt{regr1\_lint}, \texttt{regr1\_step\_av},
1873     \texttt{regr3\_lint}] : remaillage
1874     \end{description}
1875    
1876    
1877     \section{Versions de \texttt{etat0\_lim}}
1878    
1879     Problème de l'appel à \verb+startget_dyn+ pour \verb+vvent+. Cf.
1880     Flyspray, tâche numéro 29. Dans mon rapport, j'aurais dû ajouter que
1881     le même problème que pour \verb+pls+ se posait pour \verb+workvar+. Si
1882     on corrige en sélectionnant les indices de latitude de 1 à \verb+jjm+
1883     dans les arguments effectifs \verb+pls+ et \verb+workvar+ alors on
1884     obtient des modifications dans la sortie standard et dans le fichier
1885     \verb+start.nc+ uniquement. Dans la sortie standard, des petites
1886     différences seulement, entre autres dans les valeurs de \verb+V+
1887     \verb+min+ \verb+max+ affichées après l'appel incriminé de
1888     \verb+startget_dyn+. Dans le fichier \verb+start.nc+, les seules
1889     variables différentes sont \verb+controle+ et \verb+vcov+.
1890    
1891     Modifications provisoires :
1892     \begin{description}
1893     \item[M1] Mise en commentaire de l'appel à \verb+startget+ pour
1894     \verb+phis+ dans \verb+etat0+.
1895     \item[M2] \verb+q3d(:, :, :, 5) = 3.+ dans \verb+etat0+.
1896     \end{description}
1897    
1898     Modifications cumulatives :
1899     \begin{description}
1900     \item[L1] Passage à \verb+netcdf95+ dans \verb+limit.f+. Correction
1901     lecture \verb+Rugos+. Correction dans \verb+etat0+, appel à
1902     \verb+startget_dyn+ pour \verb+vvent+. Version 2.10a de
1903     \verb+spline+ et \verb+splint+.
1904     \item[L2] Initialisation d'un traceur ozone (sans rétroaction sur
1905     l'atmosphère) à partir des données de Mobidic. Modification de
1906     \verb+nqmx+, 5 au lieu de 4 dans \verb+dimens_m.f+.
1907     \item[L3] Correction dans \verb+etat0+ : \verb+q3d+ doit contenir des
1908     fractions massiques et non molaires.
1909     \item[L4] Correction : attribut \verb+save+ dans les modules
1910     \verb+comvert+, \verb+serre+, \verb+clesphys+, \verb+iniprint+,
1911     \verb+ener+, \verb+comdissnew+, \verb+dimphy+, \verb+logic+, \verb+comgeom+.
1912     \item[L5] \'Ecriture du fichier \verb+coefoz_LMDZ.nc+ (ajout de la
1913     procédure \verb+aver_interp_coefoz+), lecture de la distribution
1914     initiale d'ozone dans ce fichier (suppression de la procédure
1915     \verb+initial_o3+).
1916     \item[L6] Pour l'écriture de \verb+coefoz_LMDZ.nc+, modification de
1917     l'extrapolation aux basses pressions. Nouveau cas \verb+strato1+ dans
1918     \verb+disvert+.
1919     \item[L7] Création des modules \verb+regr_coefoz_m+, \verb+pressure_m+
1920     et \verb+regrid+. Clarification de \verb+inter_barxy+. Modification
1921     du remaillage en latitude des coefficients pour l'ozone : en
1922     supposant une fonction en escalier et non une fonction linéaire par
1923     morceaux.
1924     \item[L8] Modification du remaillage en latitude des coefficients pour
1925     l'ozone : pondération avec le cosinus de la latitude.
1926     \item[L9] Modification du remaillage en pression des coefficients pour
1927     l'ozone : moyenne au lieu d'une interpolation par spline cubique.
1928     \item[L10] Nouveau cas \verb+strato2+ dans \verb+disvert+.
1929     Correction de bogue dans \verb+inter_bary+ : \verb+y0+ initialisé à
1930     $-90$ au lieu de 0.
1931     \item[L11] Remaillage de la variable \verb+a2+ dans \verb+regr_coefoz+.
1932     \item[L12] Changement de nom : \verb+sigma+ en \verb+s+ dans
1933     \verb+disvert+. Changement de noms : \verb+r+ et \verb+P_net+ en
1934     \verb+r_Mob+ et \verb+P_net_Mob+ dans \verb+coefoz_LMDZ.nc+.
1935     \item[L13] Remaillage de \verb+a4+ et \verb+temperature+ dans
1936     \verb+regr_coefoz+.
1937     \item[L14] Remaillage de \verb+a6+ et \verb+Sigma+ dans
1938     \verb+regr_coefoz+.
1939     \item[L15] Remaillage de \verb+R_Het+ dans \verb+regr_coefoz+.
1940     Suppression de la variable \verb+newlmt+ dans \verb+limit+.
1941     \end{description}
1942    
1943     \section{Versions de \texttt{gcm}}
1944    
1945     Modifications provisoires :
1946     \begin{description}
1947     \item[M1] Modifications de François L. dans \verb+ini_histday.h+,
1948     \verb+physiq.F+, \verb+phytrac.F+, \verb+write_histday+\verb+.h+.
1949     Avec ces modifications, les fichiers \verb+ini_histhf.h+,
1950     \verb+write_histhf.h+, \verb+ini_histmth.h+, \verb+write_histmth.h+,
1951     \verb+ini_histmthNMC.h+ et \verb+write_histmthNMC.h+ ne sont plus
1952     utilisés. Les variables \verb+lev_histhf+, \verb+lev_histmth+ et
1953     \verb+ok_mensuel+ ne sont donc pas utilisées.
1954     \item[M2] Dans \verb+gcm+, après l'appel à \verb+dynetat0+ :
1955     \verb+teta+ moyenné horizontalement, \verb+ucov=vcov=0+,
1956     \verb+q=0+.
1957     \item[M3] Dans \verb+gcm+, après l'appel à \verb+dynetat0+ :
1958     \verb+ps+ = 101325.
1959     \item[M4] Dans \verb+leapfrog.F+, mise en commentaire des appels
1960     à \verb+writedynav+ et \verb+bilan_dyn+ (deux appels
1961     de chaque sous-programme). Pour que le fichier \verb+dyn_hist_ave.nc+
1962     soit presque vide et que le fichier \verb+dynzon.nc+ ne
1963     soit pas créé.
1964     \end{description}
1965    
1966     Modifications cumulatives :
1967     \begin{description}
1968     \item[L1] Sur la base de la version téléchargée le 2/3/6, corrections
1969     de Phu L. V. dans \verb+physiq.F+ et \verb+write_histmthNMC.h+, \textit{cf.}
1970     messages des 13/3/6 et 14/3/6.
1971     \item[L2] Décroissance radioactive de l'ozone (modification dans
1972     \verb+phytrac+).
1973     \item[L3] Correction : attribut \verb+save+ dans les modules
1974     \verb+comvert+, \verb+conema3_m+, \verb+serre+, \verb+clesphys+,
1975     \verb+iniprint+, \verb+ener+, \verb+comgeomphy+, \verb+yoethf+,
1976     \verb+comdissnew+, \verb+dimphy+, \verb+logic+, \verb+comgeom+.
1977     \item[L4] \'Evolution du traceur ozone selon la paramétrisation de
1978     Cariolle, à l'ordre 0 (terme $P_\mathrm{net}$ uniquement) et sans la
1979     chimie hétérogène.
1980     \item[L5] Correction dans \verb+phytrac+, pour empêcher la fraction
1981     massique d'ozone de devenir négative. Nouveaux cas \verb+strato1+ et
1982     \verb+strato2+ dans \verb+disvert+.
1983     \item[L6] Augmentation de \verb+lmx+ de 20 à 100 dans \verb+gradsdef+.
1984     \item[L7] Ajout du terme en $a_2$ dans le calcul de la production
1985     chimique d'ozone, dans \verb+phytrac+.
1986     \item[L8] Ajout du terme en $a_4$ dans le calcul de la production
1987     chimique d'ozone, dans \verb+phytrac+.
1988     \item[L9] Ajout du terme en $a_6$ dans le calcul de la production
1989     chimique d'ozone, dans \verb+phytrac+.
1990     \item[L10] Ajout du terme de chimie hétérogène dans le calcul de la
1991     production chimique d'ozone, dans \verb+o3_chem_m+.
1992     \item[L11] Correction d'un bogue dans \verb+o3_chem+ : le filtrage
1993     selon la direction du Soleil doit affecter $b$ et non \verb+r_het+.
1994     \end{description}
1995    
1996     \end{document}

  ViewVC Help
Powered by ViewVC 1.1.21