[987] | 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)=1,bp(1)=0 **********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 | |
---|