[5] | 1 | \documentclass[a4paper,10pt]{article} |
---|
| 2 | %\usepackage{graphicx} |
---|
| 3 | \usepackage{natbib} % si appel à bibtex |
---|
| 4 | %\usepackage[francais]{babel} |
---|
| 5 | %\usepackage[latin1]{inputenc} % accents directs (é...), avec babel |
---|
| 6 | %\usepackage{rotating} |
---|
| 7 | |
---|
| 8 | \setlength{\hoffset}{-1.in} |
---|
| 9 | \setlength{\oddsidemargin}{3.cm} |
---|
| 10 | \setlength{\textwidth}{15.cm} |
---|
| 11 | \setlength{\marginparsep}{0.mm} |
---|
| 12 | \setlength{\marginparwidth}{0.mm} |
---|
| 13 | |
---|
| 14 | \setlength{\voffset}{-1.in} |
---|
| 15 | \setlength{\topmargin}{0.mm} |
---|
| 16 | \setlength{\headheight}{0.mm} |
---|
| 17 | \setlength{\headsep}{30.mm} |
---|
| 18 | \setlength{\textheight}{24.cm} |
---|
| 19 | \setlength{\footskip}{1.cm} |
---|
| 20 | |
---|
| 21 | \setlength{\parindent}{0.mm} |
---|
| 22 | \setlength{\parskip}{0 ex} |
---|
| 23 | \newcommand{\ten}[1]{$\times 10^{#1}$~} |
---|
| 24 | \renewcommand{\baselinestretch}{1.} |
---|
| 25 | |
---|
| 26 | \begin{document} |
---|
| 27 | \pagestyle{plain} |
---|
| 28 | |
---|
| 29 | \begin{center} |
---|
| 30 | {\bf \LARGE |
---|
| 31 | Documentation for LMDZ, Planets version |
---|
| 32 | |
---|
| 33 | \vspace{1cm} |
---|
| 34 | \Large |
---|
| 35 | The Cp(T) dependency |
---|
| 36 | } |
---|
| 37 | |
---|
| 38 | \vspace{1cm} |
---|
| 39 | S\'ebastien Lebonnois |
---|
| 40 | |
---|
| 41 | \vspace{1cm} |
---|
| 42 | Latest version: \today |
---|
| 43 | \end{center} |
---|
| 44 | |
---|
| 45 | \section{Theoretical aspects} |
---|
| 46 | |
---|
| 47 | Taken from \cite{lebonnois10}. |
---|
| 48 | |
---|
| 49 | The standard version of the LMDZ dynamical core uses a single value for the |
---|
| 50 | specific heat $C_p$, but $C_p$ varies in the atmosphere of Venus from |
---|
| 51 | 738~J/kg/K at 100~km altitude to 1181~J/kg/K near the surface |
---|
| 52 | \cite[values taken from the Venus International Reference Atmosphere,][]{seiff85}. |
---|
| 53 | This variation of $C_p$ with temperature needs to be taken into account, |
---|
| 54 | in order to get realistic adiabatic lapse rates in the whole atmosphere. |
---|
| 55 | We use an analytic approximation for this temperature dependence, |
---|
| 56 | that yields values very close to the VIRA profile for $C_p$ |
---|
| 57 | (within 4\% for temperatures below 200~K, below 1\% everywhere else): |
---|
| 58 | |
---|
| 59 | \begin{equation} |
---|
| 60 | C_p(T) = C_{p_0} \times \left(\frac{T}{T_0}\right)^{\nu}, |
---|
| 61 | \label{eq:cpdet} |
---|
| 62 | \end{equation} |
---|
| 63 | with $C_{p_0} = 1000$~J/kg/K, $T_0 = 460$~K, and $\nu = 0.35$. |
---|
| 64 | |
---|
| 65 | In the LMDZ model, the potential temperature is one of the fundamental |
---|
| 66 | pronostic variable in the equations of energy conservation. |
---|
| 67 | The potential temperature $\theta$ is the temperature an air parcel initially at |
---|
| 68 | temperature $T$ and pressure $p$ would reach when brought to a reference |
---|
| 69 | pressure $p_{\rm ref}$ (typically, the surface pressure) adiabatically: |
---|
| 70 | |
---|
| 71 | \begin{equation} |
---|
| 72 | \int_\theta^T{C_p \frac{dT}{T}} = \int_{p_{\rm ref}}^p{R \frac{dp}{p}} |
---|
| 73 | \label{eq:tpot} |
---|
| 74 | \end{equation} |
---|
| 75 | ($R$ is the atmospheric gas constant). Equation~\ref{eq:tpot} is |
---|
| 76 | obtained from the first principle of thermodynamics when a parcel of air at |
---|
| 77 | pressure $p$ and temperature $T$ is brought adiabatically to the reference |
---|
| 78 | pressure $p_{\rm ref}$. |
---|
| 79 | |
---|
| 80 | When $C_p$ is taken as constant with temperature, Eq.~\ref{eq:tpot} yields |
---|
| 81 | the classical expression of potential temperature |
---|
| 82 | $\theta = T \times (p_{\rm ref}/p)^\kappa$, with $\kappa = R/C_p$. |
---|
| 83 | However, when $C_p$ depends on temperature, this expression is no longer valid. |
---|
| 84 | |
---|
| 85 | To keep modifications of the dynamical core to the minimum, we have kept |
---|
| 86 | potential temperature as a key variable in the dynamics. Thus, we have |
---|
| 87 | calculated the new expression of potential temperature under these conditions. |
---|
| 88 | Introducing the expression of $C_p(T)$ (Eq.~\ref{eq:cpdet}) in Eq.~\ref{eq:tpot} yields |
---|
| 89 | |
---|
| 90 | \begin{equation} |
---|
| 91 | \int_\theta^T{\frac{T^{\nu-1}}{T_0^\nu}dT} |
---|
| 92 | = \frac{R}{C_{p_0}} \ln \frac{p}{p_{\rm ref}}, |
---|
| 93 | \end{equation} |
---|
| 94 | then (for $\nu \neq 0$) |
---|
| 95 | |
---|
| 96 | \begin{equation} |
---|
| 97 | \frac{1}{\nu T_0^\nu} \left( T^\nu - \theta^\nu \right) |
---|
| 98 | = \ln \left( \frac{p}{p_{\rm ref}} \right)^{\kappa_0}, |
---|
| 99 | \end{equation} |
---|
| 100 | where $\kappa_0 = \frac{R}{C_{p_0}}$. This yields the new expression for the |
---|
| 101 | potential temperature: |
---|
| 102 | |
---|
| 103 | \begin{equation} |
---|
| 104 | \theta^\nu = T^\nu + \nu T_0^\nu \ln \left( \frac{p_{\rm ref}}{p} \right)^{\kappa_0}. |
---|
| 105 | \label{eq:newtpot} |
---|
| 106 | \end{equation} |
---|
| 107 | |
---|
| 108 | The adjustments done in the dynamical core enable us to run the GCM with any |
---|
| 109 | formulation of $C_p$ and the corresponding potential temperature based on |
---|
| 110 | Eq.~\ref{eq:tpot}. |
---|
| 111 | |
---|
| 112 | \section{Pratical aspects in the code} |
---|
| 113 | |
---|
[2331] | 114 | A specific file has been added to the dynamical core, \textsf{dyn3d\_common/cpdet\_mod.F90}, which includes |
---|
[5] | 115 | all the needed routines to take the $C_p(T)$ possibility into account. |
---|
[2331] | 116 | These routines take advantage of the boolean flag \textsf{cpofT} (declared in \textsf{gcm.def}, default is T for Venus, F otherwise) |
---|
| 117 | to implement different expressions of $C_p(T)$. |
---|
| 118 | It could also use the keyword \textsf{planet\_type} if needed to distinguish different planets. |
---|
| 119 | |
---|
| 120 | These routines are: |
---|
[5] | 121 | \begin{itemize} |
---|
| 122 | \item \textsf{ini\_cpdet}: initializes the parameters $\nu$ (\textsf{nu\_venus}) |
---|
| 123 | and $T_0$ (\textsf{t0\_venus}) to either the Venus values, or zero. |
---|
| 124 | It is called just once at the begining of the main routine. |
---|
[2331] | 125 | These parameters are declared in \textsf{comconst\_mod.F90}. |
---|
[5] | 126 | \item \textsf{cpdet}: function, that computes $C_p$ for a given $T$. |
---|
| 127 | For other planets than Venus, it is just \textsf{cpdet(T)=cpp}. |
---|
| 128 | \item \textsf{t2tpot}: converts a temperature vector to a potential temperature |
---|
[2331] | 129 | vector. Serial \textsf{t2tpot} and parallel \textsf{t2tpot\_p} versions. |
---|
[5] | 130 | \item \textsf{tpot2t}: converts a potential temperature vector to a temperature |
---|
[2331] | 131 | vector. Serial \textsf{tpot2t} and parallel \textsf{tpot2t\_p} versions. |
---|
[5] | 132 | \end{itemize} |
---|
| 133 | |
---|
[2331] | 134 | In the physics, these routines are also defined \textsf{phyvenus/cpdet\_phy\_mod.F90}. |
---|
| 135 | They are initialized with \textsf{init\_cpdet\_phy} that is called from the dynamics/physics interface, |
---|
| 136 | passing the \textsf{cpp}, \textsf{t0\_venus} and \textsf{nu\_venus} variables. |
---|
| 137 | The value of \textsf{t0\_venus} (0 or not) is used to determine the expression of $C_p(T)$. |
---|
[5] | 138 | |
---|
[2331] | 139 | For Venus, in the dynamics/physics interface, the routine \textsf{suphec(cpp)} needed to be called to initialize \textsf{RCPD=cpp} in the physics. |
---|
| 140 | In the routines, instead of using the constants \textsf{cpp} (dynamical core) or \textsf{RCPD} (physical module), we need to use the function \textsf{cpdet(T)} where T is the temperature at a given point. |
---|
| 141 | |
---|
[5] | 142 | Since the potential temperature is the variable used in the dynamical core, |
---|
| 143 | the temperature is scarcely used. But in some places, it was computed directly |
---|
| 144 | from the potential temperature and the Exner function |
---|
| 145 | ${\rm pk} = {\rm cpp}\times(\frac{\rm play}{\rm pref})^{\rm kappa}$. |
---|
| 146 | The routine \textsf{tpot2t} is now used to compute the temperature when needed, |
---|
| 147 | and the variable \textsf{tsurpk}, which is the temperature over the Exner |
---|
| 148 | function can be used as an argument instead of the former potential |
---|
| 149 | temperature (for \textsf{sortvarc0.F}, \textsf{sortvarc.F}, \textsf{dudv2.F} |
---|
| 150 | and \textsf{geopot.F}). |
---|
| 151 | This affects the routines (in \textsf{dyn3d}): |
---|
| 152 | \begin{itemize} |
---|
| 153 | \item \textsf{caldyn0.F} |
---|
| 154 | \item \textsf{caldyn.F} |
---|
| 155 | \item \textsf{calfis.F} |
---|
| 156 | \item \textsf{diagedyn.F} |
---|
| 157 | \item \textsf{leapfrog.F} |
---|
| 158 | \item \textsf{vlspltqs.F} |
---|
| 159 | \end{itemize} |
---|
| 160 | |
---|
| 161 | \begin{thebibliography}{2} |
---|
| 162 | \providecommand{\natexlab}[1]{#1} |
---|
| 163 | \expandafter\ifx\csname urlstyle\endcsname\relax |
---|
| 164 | \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else |
---|
| 165 | \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup |
---|
| 166 | \urlstyle{rm}\Url}\fi |
---|
| 167 | |
---|
| 168 | \bibitem[{\textit{Lebonnois et~al.}(2010)\textit{Lebonnois, Hourdin, Eymet, |
---|
| 169 | Crespin, Fournier, and Forget}}]{lebonnois10} |
---|
| 170 | Lebonnois, S., F.~Hourdin, V.~Eymet, A.~Crespin, R.~Fournier, and F.~Forget |
---|
| 171 | (2010), {Superrotation of Venus' atmosphere analysed with a full General |
---|
| 172 | Circulation Model}, \textit{J. Geophys. Res.}, \textit{115}, E06006, |
---|
| 173 | \doi{10.1029/2009JE003458}. |
---|
| 174 | |
---|
| 175 | \bibitem[{\textit{Seiff et~al.}(1985)\textit{Seiff, Schofield, Kliore |
---|
| 176 | et~al.}}]{seiff85} |
---|
| 177 | Seiff, A., J.~T. Schofield, A.~J. Kliore, et~al. (1985), {Model of the |
---|
| 178 | structure of the atmosphere of Venus from surface to 100 km altitude}, |
---|
| 179 | \textit{Adv. Space Res.}, \textit{5}(11), 3--58. |
---|
| 180 | |
---|
| 181 | \end{thebibliography} |
---|
| 182 | |
---|
| 183 | \end{document} |
---|