source: trunk/DOC/documentation/cpdet.tex @ 3552

Last change on this file since 3552 was 2331, checked in by slebonnois, 5 years ago

SL: update of the Cp(T) documentation

File size: 7.4 KB
Line 
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 
31Documentation for LMDZ, Planets version
32
33\vspace{1cm}
34\Large
35The Cp(T) dependency
36}
37
38\vspace{1cm}
39S\'ebastien Lebonnois
40
41\vspace{1cm}
42Latest version: \today
43\end{center}
44
45\section{Theoretical aspects}
46
47Taken from \cite{lebonnois10}.
48
49The standard version of the LMDZ dynamical core uses a single value for the
50specific heat $C_p$, but $C_p$ varies in the atmosphere of Venus from
51738~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}.
53This variation of $C_p$ with temperature needs to be taken into account,
54in order to get realistic adiabatic lapse rates in the whole atmosphere.
55We use an analytic approximation for this temperature dependence,
56that 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} 
60C_p(T) = C_{p_0} \times \left(\frac{T}{T_0}\right)^{\nu},
61\label{eq:cpdet}
62\end{equation} 
63with $C_{p_0} = 1000$~J/kg/K, $T_0 = 460$~K, and $\nu = 0.35$.
64
65In the LMDZ model, the potential temperature is one of the fundamental
66pronostic variable in the equations of energy conservation.
67The potential temperature $\theta$ is the temperature an air parcel initially at
68temperature $T$ and pressure $p$ would reach when brought to a reference
69pressure $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
76obtained from the first principle of thermodynamics when a parcel of air at
77pressure $p$ and temperature $T$ is brought adiabatically to the reference
78pressure $p_{\rm ref}$.
79
80When $C_p$ is taken as constant with temperature, Eq.~\ref{eq:tpot} yields
81the classical expression of potential temperature
82$\theta = T \times (p_{\rm ref}/p)^\kappa$, with $\kappa = R/C_p$.
83However, when $C_p$ depends on temperature, this expression is no longer valid.
84 
85To keep modifications of the dynamical core to the minimum, we have kept
86potential temperature as a key variable in the dynamics. Thus, we have
87calculated the new expression of potential temperature under these conditions.
88Introducing 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}
94then (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}
100where $\kappa_0 = \frac{R}{C_{p_0}}$. This yields the new expression for the
101potential 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
108The adjustments done in the dynamical core enable us to run the GCM with any
109formulation of $C_p$ and the corresponding potential temperature based on
110Eq.~\ref{eq:tpot}.
111
112\section{Pratical aspects in the code}
113
114A specific file has been added to the dynamical core, \textsf{dyn3d\_common/cpdet\_mod.F90}, which includes
115all the needed routines to take the $C_p(T)$ possibility into account.
116These routines take advantage of the boolean flag \textsf{cpofT} (declared in \textsf{gcm.def}, default is T for Venus, F otherwise)
117to implement different expressions of $C_p(T)$.
118It could also use the keyword \textsf{planet\_type} if needed to distinguish different planets.
119
120These routines are:
121\begin{itemize}
122\item \textsf{ini\_cpdet}: initializes the parameters $\nu$ (\textsf{nu\_venus})
123and $T_0$ (\textsf{t0\_venus}) to either the Venus values, or zero.
124It is called just once at the begining of the main routine.
125These parameters are declared in \textsf{comconst\_mod.F90}.
126\item \textsf{cpdet}: function, that computes $C_p$ for a given $T$.
127For other planets than Venus, it is just \textsf{cpdet(T)=cpp}.
128\item \textsf{t2tpot}: converts a temperature vector to a potential temperature
129vector. Serial \textsf{t2tpot} and parallel \textsf{t2tpot\_p} versions.
130\item \textsf{tpot2t}: converts a potential temperature vector to a temperature
131vector. Serial \textsf{tpot2t} and parallel \textsf{tpot2t\_p} versions.
132\end{itemize}
133
134In the physics, these routines are also defined \textsf{phyvenus/cpdet\_phy\_mod.F90}.
135They are initialized with \textsf{init\_cpdet\_phy} that is called from the dynamics/physics interface,
136passing the \textsf{cpp}, \textsf{t0\_venus} and \textsf{nu\_venus} variables.
137The value of \textsf{t0\_venus} (0 or not) is used to determine the expression of $C_p(T)$.
138
139For Venus, in the dynamics/physics interface, the routine \textsf{suphec(cpp)} needed to be called to initialize \textsf{RCPD=cpp} in the physics.
140In 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
142Since the potential temperature is the variable used in the dynamical core,
143the temperature is scarcely used. But in some places, it was computed directly
144from the potential temperature and the Exner function
145${\rm pk} = {\rm cpp}\times(\frac{\rm play}{\rm pref})^{\rm kappa}$.
146The routine \textsf{tpot2t} is now used to compute the temperature when needed,
147and the variable \textsf{tsurpk}, which is the temperature over the Exner
148function can be used as an argument instead of the former potential
149temperature (for \textsf{sortvarc0.F}, \textsf{sortvarc.F}, \textsf{dudv2.F}
150and \textsf{geopot.F}).
151This 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}
170Lebonnois, 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}
177Seiff, 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}
Note: See TracBrowser for help on using the repository browser.