1 | \chapter{Main features of the model} |
---|
2 | |
---|
3 | \label{sc:apercu} |
---|
4 | |
---|
5 | \section{Basic principles} |
---|
6 | The General Circulation Model (GCM) calculates the temporal evolution of |
---|
7 | the different {\bf variables} (listed below) |
---|
8 | that control or describe the planetary meteorology and climate |
---|
9 | at different points of a {\bf 3D ``grid" } (see below) that covers |
---|
10 | the entire atmosphere. |
---|
11 | |
---|
12 | From an initial state, the model calculates the evolution of these variables, |
---|
13 | timestep by timestep: |
---|
14 | \begin{itemize} |
---|
15 | \item At instant $t$, we know variable $X_t$ (temperature for example) |
---|
16 | at 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. |
---|
21 | arising from each physical phenomenon, |
---|
22 | calculated 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}$ |
---|
26 | from $X_t$ and $(\frac{\partial X}{\partial t})$. |
---|
27 | This 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 | |
---|
40 | In practice, the 3D model operates in two parts:\\ |
---|
41 | - a {\bf dynamical part} containing the numerical solution of |
---|
42 | the general equations for atmospheric circulation. |
---|
43 | This part (including the programming) is common to all terrestrial-type atmospheres, and applicable |
---|
44 | in certain cases to the upper atmospheres of gas giant planets.\\ |
---|
45 | - a {\bf physical part} that is specific to the planet in question and |
---|
46 | which calculates the circulation forcing and climatic details at each point. |
---|
47 | |
---|
48 | The calculations for the dynamical part are made on a 3D grid |
---|
49 | with horizontal exchanges between the grid boxes, |
---|
50 | whereas 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 | |
---|
53 | The dynamical and physical parts deal with variables of different natures, |
---|
54 | and operate on grids that are differently constructed. |
---|
55 | The temporal integration of the variables is based |
---|
56 | on different numerical schemes |
---|
57 | (simple, such as the one above for the physical part, |
---|
58 | and more complicated, the ``Matsuno-Leapfrog'' scheme for the dynamical part). |
---|
59 | The timesteps are also different. |
---|
60 | The physical timestep is {\tt iphysiq} times longer than the dynamical |
---|
61 | timestep, as the solution of the dynamic equations requires a shorter timestep |
---|
62 | than the forced calculation for the physical part. |
---|
63 | |
---|
64 | In practice, the main program that handles the whole model (\verb+gcm.F+) |
---|
65 | is located in the dynamical part. |
---|
66 | When the temporal evolution is being calculated, |
---|
67 | at 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 |
---|
73 | of the variables at the following timesteps (subroutine \verb+integrd.F+) |
---|
74 | \item Every {\tt iphysiq} dynamical timestep, a call to the interface |
---|
75 | subroutine (\verb+calfis.F+) with the physical model (\verb+physiq.F90+), |
---|
76 | that 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})$ |
---|
79 | arising 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 |
---|
82 | the horizontal dissipation and the ``sponge layer'' is done |
---|
83 | every {\tt idissip} dynamical time step. |
---|
84 | \end{enumerate} |
---|
85 | {\em {Remark:} The physical part can be run separately for a 1-D calculation |
---|
86 | for a single column using program \verb+rcm1d.F+.} |
---|
87 | |
---|
88 | |
---|
89 | \section{Grid boxes:} Examples of typical grid values are 64x48x25, |
---|
90 | 64x48x32 or 32x24x25 in longitudexlatitudexaltitude. Grid box size depends |
---|
91 | on the planetary radius: for Mars (radius$\sim$3400~km), for example, a 64x48 horizontal grid corresponds |
---|
92 | to 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. |
---|
109 | In the dynamics (but not in the physics) winds u and v are on specific |
---|
110 | staggered grids. Other dynamical variables are on the dynamical ``scalar'' grid. |
---|
111 | The physics uses the same ``scalar'' grid for all the variables, |
---|
112 | except that nodes are indexed in a single vector containing |
---|
113 | NGRID=2+(JM-1)$\times$IM points when counting from the north pole. |
---|
114 | N.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 | |
---|
119 | Dynamics and physics use different grids. |
---|
120 | Figure~\ref{fg:grid} shows the correspondence and indexing |
---|
121 | of the physical and dynamical grids |
---|
122 | as well as the different locations of variables on these grids. |
---|
123 | To identify the coordinates of a variable (at one grid point up, |
---|
124 | down, right or left) |
---|
125 | we use coordinates {\tt rlonu}, {\tt rlatu}, |
---|
126 | {\tt rlonv}, {\tt rlatv} (longitudes and |
---|
127 | latitudes, in {\bf radians}). |
---|
128 | |
---|
129 | On the dynamical grid, values at {\tt i=1} are the same as at {\tt i=IM+1} |
---|
130 | as the latter node is a redundant point (due to the periodicity in longitude, |
---|
131 | these two nodes are actualy located at the same place). |
---|
132 | Similarly, the extreme {\tt j=1} and {\tt j=JM+1} nodes on the |
---|
133 | dynamical grid (respectively corresponding to North and South poles) |
---|
134 | are duplicated IM+1 times.\\ |
---|
135 | In contrast, the physical grid does not contain redundant points |
---|
136 | (only one value for each pole and no extra point along longitudes), |
---|
137 | as shown in figure~\ref{fg:grid}. |
---|
138 | In practice, computations relative to the physics are made |
---|
139 | for a series of {\tt ngrid} atmospheric |
---|
140 | columns, 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 | |
---|
153 | The GCM was initially programmed using sigma coordinates $\sigma = p/ps$ |
---|
154 | (atmospheric pressure over surface pressure ratio) |
---|
155 | which had the advantage of using a constant domain |
---|
156 | ($\sigma=1$ at the surface and $\sigma=0$ at the top of the atmosphere) |
---|
157 | whatever the underlying topography. |
---|
158 | However, it is obvious that these coordinates significantly disturb |
---|
159 | the stratospheric dynamical representation as the topography is propagated |
---|
160 | to the top of the model by the coordinate system. |
---|
161 | This problem can elegantly be solved by using a hybrid sigma-P (sigma-pressure) |
---|
162 | hybrid coordinate which is equivalent to using $\sigma$ coordinates |
---|
163 | near the surface and gradually shifting to purely pressure $p$ |
---|
164 | coordinates with increasing altitude. |
---|
165 | Figure~\ref{fg:hybrid} illustrates the importance of using these |
---|
166 | hybrid coordinates compared to simple $\sigma$ coordinates. |
---|
167 | The distribution of the vertical layers is irregular, |
---|
168 | to enable greater precision at ground level. |
---|
169 | In general we use 25 levels to describe the atmosphere to a height of 80 km, |
---|
170 | 32 levels for simulations up to 120~km, or 50 levels to rise |
---|
171 | up to thermosphere. |
---|
172 | The first layer describes the first few meters above the ground, |
---|
173 | whereas the upper layers span several kilometers. |
---|
174 | Figure~\ref{fg:sigma} describes the vertical grid representation |
---|
175 | and associated variables. |
---|
176 | |
---|
177 | \begin{figure} |
---|
178 | \begin{verbatim} |
---|
179 | DYNAMICS PHYSICS |
---|
180 | -------- ------- |
---|
181 | [coordinates ap(),bp()] [pressures] |
---|
182 | |
---|
183 | ap(llm+1)=0,bp(llm+1)=0 **************************** plev(nlayer+1)=0 |
---|
184 | aps(llm),bps(llm) .. llm .......... nlayer ... play(nlayer) |
---|
185 | ap(llm),bp(llm) **************************** plev(nlayer) |
---|
186 | aps(llm-1),bps(llm-1) .. llm-1 ........ nlayer-1 . play(nlayer-1) |
---|
187 | ap(llm-1),bp(llm-1) **************************** plev(nlayer-1) |
---|
188 | : : |
---|
189 | : : |
---|
190 | : : |
---|
191 | aps(2),bps(2) ... 2 ............. 2 .... play(2) |
---|
192 | ap(2),bp(2) **************************** plev(2) |
---|
193 | aps(1),bps(1) ... 1 ............. 1 .... play(1) |
---|
194 | ap(1)=0,bp(1)=1 **********surface*********** plev(1)=Ps |
---|
195 | \end{verbatim} |
---|
196 | \caption{Vertical grid description of the {\tt llm (or nlayer)} |
---|
197 | atmospheric layers |
---|
198 | in the programming code ({\tt llm} is the variable used in the dynamical part, |
---|
199 | and {\tt nlayer} is used in the physical part). |
---|
200 | Variables {\tt ap, bp} and {\tt aps, bps} indicate the hybrid levels at |
---|
201 | the interlayer levels and at middle of the layers respectively. |
---|
202 | Pressure at the interlayer is $Plev(l)=ap(l)+bp(l) \times Ps$ and pressure |
---|
203 | in the middle of the layer is defined by $Play(l)=aps(l)+bps(l) \times Ps$, |
---|
204 | (where $Ps$ is surface pressure). |
---|
205 | Sigma coordinates are merely a specific case of hybrid |
---|
206 | coordinates such that $aps=0$ and $bps=P/Ps$. |
---|
207 | Note that for the hybrid coordinates, $bps=0$ above $\sim50$~km, leading to |
---|
208 | purely pressure levels. |
---|
209 | The user can choose whether to run the model using hybrid coordinates or not |
---|
210 | by 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} |
---|
217 | The dynamical state variables are the atmospheric temperature, |
---|
218 | surface pressure, winds and tracer concentrations. |
---|
219 | In practice, the formulation selected to solve the equations in |
---|
220 | the dynamics %(see chapter~\ref{sc:dynamic}) |
---|
221 | is optimised using the following less ``natural'' variables: |
---|
222 | |
---|
223 | \begin{description} |
---|
224 | \item - {\bf potential temperature} $\theta$ ({\tt teta} in the code), |
---|
225 | linked to temperature {\bf T} by $\theta = T{(P/Pref)}^{-\kappa}$ |
---|
226 | with $\kappa = R/C_p$ |
---|
227 | (note that $\kappa$ is called {\tt kappa} in the dynamical code, and {\tt rcp} |
---|
228 | in 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} |
---|
231 | in the code). |
---|
232 | \item - {\bf the covariant meridional and zonal winds} |
---|
233 | {\tt ucov} and {\tt vcov}. |
---|
234 | These 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 |
---|
239 | expressed 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'', |
---|
246 | are stored on the ``scalar'' grid of the dynamics. |
---|
247 | |
---|
248 | |
---|
249 | |
---|
250 | \subsection{Physical variables} |
---|
251 | |
---|
252 | In the physics, the state variables of the dynamics are transmitted |
---|
253 | via an interface that interpolates the winds on the scalar grid |
---|
254 | (that corresponds to the physical grid) and transforms the dynamical variables |
---|
255 | into more ``natural'' variables. |
---|
256 | Thus we have winds {\bf u} and {\bf v} (m.s$^{-1}$), |
---|
257 | temperature {\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 | |
---|
261 | Furthermore, the physics also handle the evolution of the purely |
---|
262 | physical 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 |
---|
269 | the 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} |
---|
277 | The 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 | |
---|
284 | In the code, all tracers are stored in one three-dimensional array {\tt q}, |
---|
285 | the third index of which corresponds to each individual tracer. |
---|
286 | In input and output files (``start.nc'', ``startfi.nc'', |
---|
287 | see Section~\ref{loc:contact1}) tracers are stored separately using their |
---|
288 | individual names. Loading specific tracers requires that |
---|
289 | the approriate tracer names are set in the {\tt traceur.def} file |
---|
290 | (see Section~\ref{sc:traceur.def}), and specific computations |
---|
291 | for given tracers (e.g. computing the water or CO$_2$ cycles) |
---|
292 | is controlled by setting the corresponding options in the |
---|
293 | {\tt callphys.def} file (see Section~\ref{sc:callphys.def}). |
---|
294 | |
---|