source: trunk/LMDZ.GENERIC/DOC/principe.tex @ 3556

Last change on this file since 3556 was 1794, checked in by jvatant, 7 years ago

Minor updates of the doc, typo + former uncompiled modifs of .tex sources
Also deleted dummy grid dimensions files that we load every time...
JVO

File size: 13.0 KB
RevLine 
[987]1\chapter{Main features of the model}
2
3\label{sc:apercu}
4
5\section{Basic principles}
6The General Circulation Model (GCM) calculates the temporal evolution of
7the different {\bf variables} (listed below)
8that control or describe the planetary meteorology and climate
9at different points of a {\bf 3D ``grid" } (see below) that covers
10the entire  atmosphere.
11
12From an initial state, the model calculates the evolution of these variables,
13timestep by timestep:
14\begin{itemize}
15\item At instant $t$, we know variable $X_t$ (temperature for example)
16at one point in the atmosphere.
17
18\item We calculate the evolution (the {\bf tendencies})
19$(\frac{\partial X}{\partial t})_1$ ,
20$(\frac{\partial X}{\partial t})_2$ , etc.
21arising from each physical phenomenon,
22calculated by a {\bf parameterization} of each of these phenomenon
23(for example, heating due to absorption of solar radiation).
24
25\item At the next time step $t + \delta t$, we can calculate $X_{t+ \delta t}$
26from  $X_t$ and $(\frac{\partial X}{\partial t})$.
27This is the {\bf``integration''} of the variables in time.
28(For example, $X_{t+ \delta t}=X_t +
29 \delta t(\frac{\partial X}{\partial t})_1 +
30 \delta t(\frac{\partial X}{\partial t})_2 + ...$)
31
32\end{itemize}
33
34{\bf The main task of the model is to calculate these tendencies}
35$(\frac{\partial X}{\partial t})$
36{\bf arising from the different parameterized phenomena.}
37
38\section{Dynamical-Physical separation}
39
40In practice, the 3D model operates in two parts:\\
41- a {\bf dynamical part} containing the numerical solution of
42the general equations for atmospheric circulation.
43This part (including the programming) is common to all terrestrial-type atmospheres, and applicable
44in certain cases to the upper atmospheres of gas giant planets.\\
45- a {\bf physical part} that is specific to the planet in question and
46which calculates the circulation forcing and climatic details at each point.
47
48The calculations for the dynamical part are made on a 3D grid
49with horizontal exchanges between the grid boxes,
50whereas the physical part can be seen as a juxtaposition of atmosphere
51``columns'' that do not interact with each other (see diagram~\ref{fg:fidyn}).
52
53The dynamical and physical parts deal with variables of different natures,
54and operate on grids that are differently constructed.
55The temporal integration of the variables is based
56on different numerical schemes
57(simple, such as the one above for the physical part,
58and more complicated, the ``Matsuno-Leapfrog'' scheme for the dynamical part).
59The timesteps are also different.
60The physical timestep  is {\tt iphysiq} times longer than the dynamical
61timestep, as the solution of the dynamic equations requires a shorter timestep
62than the forced calculation for the physical part.
63
64In practice, the main program that handles the whole model (\verb+gcm.F+)
65is located in the dynamical part.
66When the temporal evolution is being calculated,
67at each timestep the program calls the following:
68\begin{enumerate}
69\item Call to the subroutine that handles the total tendency calculation
70$(\frac{\partial X}{\partial t})$ arising from the dynamical part
71(\verb+caldyn.F+)
72\item Integration of these dynamical tendencies to calculate the evolution
73of the variables at the following timesteps (subroutine \verb+integrd.F+)
74\item Every {\tt iphysiq} dynamical timestep, a call to the interface
75subroutine (\verb+calfis.F+) with the physical model (\verb+physiq.F90+),
76that calculates the evolution of some of the purely physical variables
77(e.g: surface temperature {\tt tsurf}) and returns the tendencies
78$(\frac{\partial X}{\partial t})$
79arising from the physical part.
80\item Integration of the physical variables (subroutine \verb+addfi.F+)
81\item Similarly, calculation and integration of tendencies due to
82the horizontal dissipation and the ``sponge layer'' is done
83every {\tt idissip} dynamical time step.
84\end{enumerate}
85{\em {Remark:} The physical part can be run separately for a 1-D calculation
86for a single column using program \verb+rcm1d.F+.}
87
88
89\section{Grid boxes:} Examples of typical grid values are 64x48x25,
9064x48x32 or 32x24x25 in longitudexlatitudexaltitude. Grid box size depends
91on the planetary radius: for Mars (radius$\sim$3400~km), for example, a 64x48 horizontal grid corresponds
92to grid boxes of the order of 330x220 kilometers near the equator.
93
94
95\subsection{Horizontal grids}
96
97 \begin{figure}
98%%\centering
99\begin{center}
100\centerline{\framebox{\epsfig{figure=Fig/didi.eps,width=12.cm,clip=true}}}
101\caption{Physical/dynamical interface}
102\label{fg:fidyn}
103\end{center}
104\end{figure}
105
106\begin{figure}
107\centerline{\framebox[1.4\textwidth][c]{\includegraphics[width=1.2\textwidth]{Fig/grid.eps}}}
108\caption{Dynamical and physical grids for a 6 $\times$ 7 horizontal resolution.
109In the dynamics (but not in the physics) winds u and v are on specific
110staggered grids. Other dynamical variables are on the dynamical ``scalar'' grid.
111The physics uses the same ``scalar'' grid for all the variables,
112except that nodes are indexed in a single vector containing
113NGRID=2+(JM-1)$\times$IM points when counting from the north pole.
114N.B.: In the Fortran program, the following variables are used:
115 {\tt iim=IM , iip1=IM+1, jjm=JM , jjp1=JM+1}.\label{fg:grid}}
116\end{figure}
117
118
119Dynamics and physics use different grids.
120Figure~\ref{fg:grid} shows the correspondence and indexing
121of the physical and dynamical grids
122as well as the different locations of variables on these grids.
123To identify the coordinates of a variable (at one grid point up,
124down, right or left)
125we use coordinates {\tt rlonu}, {\tt rlatu},
126 {\tt rlonv}, {\tt rlatv} (longitudes and
127latitudes, in {\bf radians}).
128
129On the dynamical grid, values at {\tt i=1} are the same as at {\tt i=IM+1}
130as the latter node is a redundant point (due to the periodicity in longitude,
131these two nodes are actualy located at the same place).
132Similarly, the extreme {\tt j=1} and {\tt j=JM+1} nodes on the
133dynamical grid (respectively corresponding to North and South poles)
134are duplicated IM+1 times.\\
135In contrast, the physical grid does not contain redundant points
136(only one value for each pole and no extra point along longitudes),
137as shown in figure~\ref{fg:grid}.
138In practice, computations relative to the physics are made
139for a series of {\tt ngrid} atmospheric
140columns, where {\tt NGRID}={\tt IM}x({\tt JM}-1)+2.
141
142\subsection{Vertical grids}
143
144\begin{figure}[htbp]
145
146{\includegraphics[scale=0.85,clip=true]{Fig/coord.eps}}
147\caption[hybrides]
148 {Sketch illustrating the difference between hybrid and non-hybrid coordinates}
149 \label{fg:hybrid}
150\end{figure}
151
152
153The GCM was initially programmed using sigma coordinates $\sigma = p/ps$
154(atmospheric pressure over surface pressure ratio)
155which had the advantage of using a constant domain
156($\sigma=1$ at the surface and $\sigma=0$ at the top of the atmosphere)
157whatever the underlying topography.
158However, it is obvious that these coordinates significantly disturb
159the stratospheric dynamical representation as the topography is propagated
160to the top of the model by the coordinate system.
161This problem can elegantly be solved by using a hybrid sigma-P (sigma-pressure)
162hybrid coordinate which is equivalent to using $\sigma$ coordinates
163near the surface and gradually shifting to purely pressure $p$
164coordinates with increasing altitude.
165Figure~\ref{fg:hybrid} illustrates the importance of using these
166hybrid coordinates compared to simple $\sigma$ coordinates.
167The distribution of the vertical layers is irregular,
168to enable greater precision at ground level.
169In general we use 25 levels to describe the atmosphere to a height of 80 km,
17032 levels for simulations up to 120~km, or 50 levels to rise
171up to thermosphere.
172The first layer describes the first few meters above the ground,
173whereas the upper layers span several kilometers.
174Figure~\ref{fg:sigma} describes the vertical grid representation
175and associated variables.
176
177\begin{figure}
178\begin{verbatim}
179DYNAMICS                                               PHYSICS
180--------                                               -------
181[coordinates ap(),bp()]                                [pressures]
182
183ap(llm+1)=0,bp(llm+1)=0  ****************************  plev(nlayer+1)=0
184aps(llm),bps(llm)        .. llm .......... nlayer ...  play(nlayer)
185ap(llm),bp(llm)          ****************************  plev(nlayer)
186aps(llm-1),bps(llm-1)    .. llm-1 ........ nlayer-1 .  play(nlayer-1)
187ap(llm-1),bp(llm-1)      ****************************  plev(nlayer-1)
188                             :                :
189                             :                :
190                             :                :
191aps(2),bps(2)            ... 2  ............. 2  ....  play(2)
192ap(2),bp(2)              ****************************  plev(2)
193aps(1),bps(1)            ... 1  ............. 1  ....  play(1)
[1794]194ap(1)=0,bp(1)=1          **********surface***********  plev(1)=Ps
[987]195\end{verbatim}
196\caption{Vertical grid description of the {\tt llm (or nlayer)}
197atmospheric layers
198in the programming code ({\tt llm} is the variable used in the dynamical part,
199and {\tt nlayer} is used in the physical part).
200Variables {\tt ap, bp} and {\tt aps, bps} indicate the hybrid levels at
201the interlayer levels and at middle of the layers respectively.
202Pressure at the interlayer is  $Plev(l)=ap(l)+bp(l) \times Ps$ and pressure
203in the middle of the layer is defined by $Play(l)=aps(l)+bps(l) \times Ps$,
204(where $Ps$ is surface pressure).
205Sigma coordinates are merely a specific case of hybrid
206coordinates such that $aps=0$ and $bps=P/Ps$.
207Note that for the hybrid coordinates, $bps=0$ above $\sim50$~km, leading to
208purely pressure levels.
209The user can choose whether to run the model using hybrid coordinates or not
210by setting variable {\tt hybrid} in run.def to True or False.}
211\label{fg:sigma}
212\end{figure}
213
214\section{Variables used in the model}
215
216\subsection{Dynamical variables}
217The dynamical state variables are the atmospheric temperature,
218surface pressure, winds and tracer concentrations.
219In practice, the formulation selected to solve the equations in
220the dynamics %(see chapter~\ref{sc:dynamic})
221is optimised using the following less ``natural'' variables:
222
223\begin{description}
224\item - {\bf potential temperature} $\theta$ ({\tt teta} in the code),
225linked to temperature {\bf T} by $\theta = T{(P/Pref)}^{-\kappa}$
226with $\kappa = R/C_p$
227(note that $\kappa$ is called {\tt kappa} in the dynamical code, and {\tt rcp}
228in the physical code). We take $Pref=610$ Pa on  Mars.
229\item - {\bf surface pressure} ({\tt ps} in the code).
230\item - {\bf mass} the atmosphere mass in each grid box ({\tt masse}
231in the code).
232\item - {\bf the covariant meridional and zonal winds}
233{\tt ucov} and {\tt vcov}.
234These variables are linked to the "natural" winds by
235\verb+ucov = cu * u+ and \verb+vcov = cv * v+, where
236\verb+cu+ and \verb+cv+ are constants that only depend on the latitude.
237%(see Appendix A).
238\item - {\bf mixing ratio of tracers} in the atmosphere, typically
239expressed in kg/kg (array {\tt q} in the code).
240\end{description}
241
242{\tt ucov} and {\tt vcov}, ``vectorial'' variables, are stored on
243``scalari'' grids u and v respectively, in the dynamics
244(see section \ref{fg:grid}).
245{\tt teta}, {\tt q}, {\tt ps}, {\tt masse}, ``scalar variables'',
246are stored on the ``scalar'' grid of the dynamics.
247
248
249
250\subsection{Physical variables}
251
252In the physics, the state variables of the dynamics are transmitted
253via an interface that interpolates the winds on the scalar grid
254(that corresponds to the physical grid) and transforms the dynamical variables
255into more ``natural'' variables.
256Thus we have winds {\bf u} and  {\bf v} (m.s$^{-1}$),
257temperature {\bf T} (K), pressure at the middle of the layers
258{\bf play} (Pa) and at interlayers {\bf plev} (Pa), tracers
259{\bf q}, etc. (kg/kg) on the same grid.
260
261Furthermore, the physics also handle the evolution of the purely
262physical state variables:
263\begin{description}
264\item - {\bf tsurf} surface temperature (K)
265\item - {\bf tsoil} temperature at different layers under the surface (K)
266\item - {\bf emis} surface emissivity
267\item - {\bf alb} surface albedo
268\item - {\bf q2} wind variance, or more precisely the square root of
269the turbulent kinetic energy
270\item - {\bf qsurf} tracer on the surface (kg.m$^{-2}$)
271\item - {\bf rnat} surface type (0 = ocean, 1 = continent)
272\item - {\bf beta} surface wetness (0 $\to$ 1 implies dry $\to$ saturated)
273\item - [anything else?]
274\end{description}
275
276\subsection{Tracers}
277The model may include different types of tracers:
278\begin{description}
279\item - condensed species (e.g., CO$_2$, H$_2$O, dust)
280\item - chemically active species (in principle only at the moment)
281\item - radiatively active gases (e.g., water vapor)
282\end{description}
283
284In the code, all tracers are stored in one three-dimensional array {\tt q},
285the third index of which corresponds to each individual tracer.
286In input and output files (``start.nc'', ``startfi.nc'',
287see Section~\ref{loc:contact1}) tracers are stored separately using their
288individual names. Loading specific tracers requires that
289the approriate tracer names are set in the {\tt traceur.def} file
290(see Section~\ref{sc:traceur.def}), and specific computations
291for given tracers (e.g. computing the water or CO$_2$ cycles)
292is controlled by setting the corresponding options in the
293{\tt callphys.def} file (see Section~\ref{sc:callphys.def}).
294
Note: See TracBrowser for help on using the repository browser.