ugrm.tex 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. \documentclass[12pt,twoside,a4paper]{book}
  2. \usepackage[pdftex]{graphicx}
  3. \usepackage[pdftex]{hyperref}
  4. \usepackage{epsfig}
  5. \usepackage{a4}
  6. \usepackage[margin=2cm]{geometry}
  7. \pagestyle{headings}
  8. \usepackage{afterpage}
  9. \usepackage{latexsym}
  10. \usepackage{ulem}
  11. \usepackage{natbib}
  12. % macros
  13. \def \ba{\begin{array}}
  14. \def \ea{\end{array}}
  15. \def \be{\begin{equation}}
  16. \def \ee{\end{equation}}
  17. \def \bd{\begin{displaymath}}
  18. \def \ed{\end{displaymath}}
  19. \def \bfl{\begin{flushleft}}
  20. \def \efl{\end{flushleft}}
  21. \def \beqa{\begin{eqnarray}}
  22. \def \eeqa{\end{eqnarray}}
  23. \def \di{\displaystyle}
  24. \def \degrees{^\circ}
  25. \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}
  26. \newcommand{\module}{\sf}
  27. \newcommand{\sub}{\it}
  28. \newcommand{\nam}{\it}
  29. \newcommand{\file}{\bf}
  30. \newcommand{\modir}{puma}
  31. % end of macro definition
  32. %------- [PUMA - constants]-------%
  33. \def \dtep{$(\Delta T_R)_{\ÄP}\;$}
  34. \def \dtepE{$(\Delta T_R)_{EP}\;$}
  35. \def \dtns{$(\Delta T_R)_{NS}\;$}
  36. \def \dtepk{$(\Delta T_R)_{\ÄP}$}
  37. \def \dtepkE{$(\Delta T_R)_{EP}$}
  38. \def \dtnsk{$(\Delta T_R)_{NS}$}
  39. %---------------------------------%
  40. \begin{document}
  41. \begin{titlepage}
  42. \begin{center}
  43. \begin{figure}
  44. \hspace{1cm}
  45. \parbox{7cm}{
  46. \includegraphics[width=7cm]{Pics/UHH_Logo_RGB}}
  47. \hspace{0.5cm}
  48. \parbox{7cm}{
  49. \includegraphics[width=7cm]{Pics/KC-Logo_RGB}}
  50. \end{figure}
  51. \vspace*{1cm}
  52. {\Huge\bf PUMA} \\
  53. \vspace*{1cm}
  54. \includegraphics[width=15cm]{Pics/guisnap} \\
  55. \vspace*{1cm}
  56. {\huge \bf User's Guide} \\
  57. \vspace*{1cm}
  58. {\huge \bf Version 17}
  59. \vspace*{1cm}
  60. Frank Lunkeit -
  61. Edilbert Kirk \\
  62. Klaus Fraedrich -
  63. Valerio Lucarini \\
  64. Simon Blessing -
  65. Hartmut Borth \\
  66. Torben Kunz -
  67. Alastair McDonald \\
  68. Silke Schubert -
  69. Frank Sielmann \\
  70. \end{center}
  71. \end{titlepage}
  72. \begin{verbatim}
  73. The PUMA User's Guide is a publication of the
  74. Theoretical Meteorology at the Meteorological Institute of
  75. the University of Hamburg.
  76. Address:
  77. Prof. Dr. Valerio Lucarini
  78. Meteorological Institute
  79. KlimaCampus
  80. University of Hamburg
  81. Grindelberg 5
  82. D-20144 Hamburg
  83. Germany
  84. Contact:
  85. Valerio.Lucarini@uni-hamburg.de.
  86. Frank.Lunkeit@uni-hamburg.de
  87. Edilbert.Kirk@uni-hamburg.de
  88. \end{verbatim}
  89. \bibliographystyle{plainnat}
  90. \tableofcontents
  91. \chapter{Installation}
  92. \input{install.tex}
  93. \chapter{Introduction}
  94. \input{introduction.tex}
  95. \nocite{KunzFraeLun09}
  96. \nocite{Perez2005}
  97. \nocite{Blessetal2008}
  98. \nocite{fraelun2008}
  99. \nocite{KunzFraeKirk2008}
  100. \chapter{Horizontal Grid}
  101. \input{grid.tex}
  102. \chapter{Modules}
  103. \input{modules.tex}
  104. \chapter{Parallel Program Execution}
  105. \input{parallel.tex}
  106. \chapter{Graphical User Interface}
  107. \input{gui.tex}
  108. \chapter{Postprocessor Pumaburner}
  109. \label{Pumaburner}
  110. \input{pumaburn}
  111. \chapter{Graphics}
  112. %\section{\verb/GrADS/}
  113. \section{GrADS}
  114. \input{graphics_grads}
  115. %\section{Vis5D}
  116. %\input{graphics_vis5d}
  117. \chapter{Model Dynamics}
  118. \input{dynamics.tex}
  119. \section{Scaling of Variables}
  120. The variables are rendered dimensionless using the following
  121. characteristic scales:
  122. \begin{tabular}{|l|l|l|} \hline
  123. Variable & Scale & Scale description \\ \hline \hline
  124. Divergence & $\Omega$ & $\Omega$ = angular velocity \\ \hline
  125. Vorticity & $\Omega$ & $\Omega$ = angular velocity \\ \hline
  126. Temperature & $(a^2 {\Omega}^2)/R$ & a = planet radius, R = gas constant \\ \hline
  127. Pressure & 101100 Pa & PSURF = mean sea level pressure \\ \hline
  128. Orography & $(a^2 {\Omega}^2)/g$ & g = gravity \\ \hline
  129. \end{tabular}
  130. \section{Vertical Discretization}
  131. \begin{figure}[h]
  132. \setlength{\unitlength}{1cm}
  133. \begin{picture}(14,10)
  134. \thicklines
  135. \multiput(2 ,2)(0,1.5){5}{\line(1,0){8}}
  136. \multiput(10.5,1.25)(0,1.5){5}{\makebox(2,1.5){$\zeta,D,T'$}}
  137. \multiput(10.5,2.00)(0,1.5){4}{\makebox(2,1.5){$\dot{\sigma}$}}
  138. \put(10.5,0.50){\makebox(2,1.5){$p = p_s , \dot{\sigma} = 0$}}
  139. \put(10.5,8.00){\makebox(2,1.5){$p = 0 , \dot{\sigma} = 0$}}
  140. \put(0,8.75){\makebox(1,1.5){$ Level $}}
  141. \put(1,8.75){\makebox(1,1.5){$ \sigma $}}
  142. \put(10.5,8.75){\makebox(2,1.5){$ Variables $}}
  143. \thinlines
  144. \multiput(2,1.25)(0,1.5){6}{\line(1,0){8}}
  145. \put(1,0.50){\makebox(1,1.5){1.0}}
  146. \put(1,1.25){\makebox(1,1.5){0.9}}
  147. \put(1,2.00){\makebox(1,1.5){0.8}}
  148. \put(1,2.75){\makebox(1,1.5){0.7}}
  149. \put(1,3.50){\makebox(1,1.5){0.6}}
  150. \put(1,4.25){\makebox(1,1.5){0.5}}
  151. \put(1,5.00){\makebox(1,1.5){0.4}}
  152. \put(1,5.75){\makebox(1,1.5){0.3}}
  153. \put(1,6.50){\makebox(1,1.5){0.2}}
  154. \put(1,7.25){\makebox(1,1.5){0.1}}
  155. \put(1,8.00){\makebox(1,1.5){0.0}}
  156. \put(0,0.50){\makebox(1,1.5){5.5}}
  157. \put(0,1.25){\makebox(1,1.5){5 }}
  158. \put(0,2.00){\makebox(1,1.5){4.5}}
  159. \put(0,2.75){\makebox(1,1.5){4 }}
  160. \put(0,3.50){\makebox(1,1.5){3.5}}
  161. \put(0,4.25){\makebox(1,1.5){3 }}
  162. \put(0,5.00){\makebox(1,1.5){2.5}}
  163. \put(0,5.75){\makebox(1,1.5){2 }}
  164. \put(0,6.50){\makebox(1,1.5){1.5}}
  165. \put(0,7.25){\makebox(1,1.5){1 }}
  166. \put(0,8.00){\makebox(1,1.5){0.5}}
  167. \end{picture}
  168. \caption{Vertical geometry of PUMA with associated variables (5 level version)}
  169. \label{figlevel}
  170. \end{figure}
  171. The model is represented by finite differences in the vertical
  172. as shown in figure \ref{figlevel}. The number of vertical levels
  173. is variable. The vertical coordinate is defined as $\sigma = p/p_s$.
  174. The prognostic variables $\zeta,D$, and $T'$ are calculated at full levels.
  175. At the two outer half levels $\sigma = 0$ (upper boundary) and
  176. $\sigma = 1$ (lower boundary) the vertical velocity is set to zero.
  177. The vertical advection at level $r$ is approximated as follows:
  178. \begin{equation}
  179. \left( \overline{\dot{\sigma} \delta_{\sigma} Q_{\sigma}} \right)_r =
  180. \frac{1}{2} \left(
  181. \dot{\sigma}_{r+\frac{1}{2}}
  182. \frac{Q_{r+1}-Q_r}{\Delta \sigma}
  183. + \dot{\sigma}_{r-\frac{1}{2}}
  184. \frac{Q_r - Q_{r-1}}{\Delta \sigma}
  185. \right)
  186. \end{equation}
  187. The tendencies of temperature, divergence and surface pressure
  188. are solved by the implicit time step. The vorticity equation
  189. is approximated by the centred differences in time \citep{hossim75}.
  190. \section{PUMA Flow Diagram}
  191. \begin{figure}[h]
  192. \setlength{\unitlength}{1cm}
  193. \begin{picture}(14,18)
  194. \thicklines
  195. \newsavebox{\srbox}
  196. \savebox{\srbox}(0,0){
  197. \thicklines
  198. \put(0,-0.3){\oval(2.5,0.6)}}
  199. \newsavebox{\cobox}
  200. \savebox{\cobox}(0,0){
  201. \thinlines
  202. \put(0,-0.3){\fbox}}
  203. \put(0,16){\usebox{\srbox}\makebox(0,0){puma}}
  204. \put(8,15.9){\fbox{Main program}}
  205. \put(1.25,16){\line(1,0){0.75}}
  206. \put(2,16){\vector(0,-1){0.7}}
  207. \put(2,15){\usebox{\srbox}\makebox(0,0){mpstart}}
  208. \put(8,14.9){\fbox{Multi processing startup}}
  209. \put(2,14.7){\vector(0,-1){0.4}}
  210. \put(2,14){\usebox{\srbox}\makebox(0,0){prolog}}
  211. \put(8,13.9){\fbox{Call initialization routines}}
  212. \put(2,13.7){\vector(0,-1){0.4}}
  213. \put(2,13){\usebox{\srbox}\makebox(0,0){master}}
  214. \put(8,12.9){\fbox{Perform time loop for NRUN time steps}}
  215. \put(3.25,13){\line(1,0){0.75}}
  216. \put(4,13){\vector(0,-1){0.7}}
  217. \put(4,12){\usebox{\srbox}\makebox(0,0){gridpoint}}
  218. \put(8,11.9){\fbox{Call transformation and grid point routines}}
  219. \put(5.25,12){\line(1,0){0.75}}
  220. \put(6,12){\vector(0,-1){0.7}}
  221. \put(6,11){\usebox{\srbox}\makebox(0,0){sp2fc}}
  222. \put(8,10.9){\fbox{Inverse Legendre transformation}}
  223. \put(6,10.7){\vector(0,-1){0.4}}
  224. \put(6,10){\usebox{\srbox}\makebox(0,0){dv2uv}}
  225. \put(8,9.9){\fbox{Divergence and vorticity to u,v - wind components}}
  226. \put(6, 9.7){\vector(0,-1){0.4}}
  227. \put(6, 9){\usebox{\srbox}\makebox(0,0){fc2gp}}
  228. \put(8,8.9){\fbox{Fourier coefficients to grid points (Inverse FFT)}}
  229. \put(6, 8.7){\vector(0,-1){0.4}}
  230. \put(6, 8){\usebox{\srbox}\makebox(0,0){\bf calcgp}}
  231. \put(8,7.9){\fbox{Calculations in grid point space}}
  232. \put(6, 7.7){\vector(0,-1){0.4}}
  233. \put(6, 7){\usebox{\srbox}\makebox(0,0){gp2fc}}
  234. \put(8,6.9){\fbox{Grid point to Fourier coefficients (FFT)}}
  235. \put(6, 6.7){\vector(0,-1){0.4}}
  236. \put(6, 6){\usebox{\srbox}\makebox(0,0){mktend}}
  237. \put(8,5.9){\fbox{Make tendencies for spectral domain}}
  238. \put(6, 5.7){\vector(0,-1){0.4}}
  239. \put(6, 5){\usebox{\srbox}\makebox(0,0){mpsumsc}}
  240. \put(8,4.9){\fbox{MP sum and scatter}}
  241. \put(4, 5){\line(1,0){0.75}}
  242. \put(4, 5){\vector(0,-1){0.7}}
  243. \put(4, 4){\usebox{\srbox}\makebox(0,0){outsp}}
  244. \put(8,3.9){\fbox{Write prognostic fields to file (puma\_data)}}
  245. \put(4, 3.7){\vector(0,-1){0.4}}
  246. \put(4, 3){\usebox{\srbox}\makebox(0,0){diag}}
  247. \put(8,2.9){\fbox{Write diagnostics to standard output}}
  248. \put(4, 2.7){\vector(0,-1){0.4}}
  249. \put(4, 2){\usebox{\srbox}\makebox(0,0){\bf spectral}}
  250. \put(8,1.9){\fbox{Perform spectral calculations and time stepping}}
  251. \put(2, 2){\line(1,0){0.75}}
  252. \put(2, 2){\line(0,1){10}}
  253. \put(2, 7){\makebox(0,0){time \hspace{2mm} loop}}
  254. \put(2, 12){\vector(1,0){0.75}}
  255. \put(4, 1.7){\line(0,-1){0.7}}
  256. \put(4, 1){\vector(-1,0){0.75}}
  257. \put(2, 1){\usebox{\srbox}\makebox(0,0){epilog}}
  258. \put(8,0.9){\fbox{Write restart file (puma\_status)}}
  259. \put(2, 0.7){\vector(0,-1){0.4}}
  260. \put(2, 0){\usebox{\srbox}\makebox(0,0){mpstop}}
  261. \put(8,-0.1){\fbox{MP terminate (end all processes)}}
  262. \end{picture}
  263. \caption{Flow diagram of main routines}
  264. \label{figflow}
  265. \end{figure}
  266. The diagram \ref{figflow} shows the route through the main program
  267. PUMA, with the names of the most important subroutines.
  268. PUMA is the main program. It calls the three subroutines {\sub Prolog},
  269. {\sub Master} and {\sub Epilog} .
  270. {\sub Prolog} does all initialization. It calls the following subroutines:
  271. {\sub gauaw} computes gaussian abscissas and weights.
  272. {\sub inilat} initializes some utility arrays like square of cosine of latitude etc.
  273. {\sub legpri} prints the arrays of {\sub gauaw} and {\sub inilat}.
  274. {\sub readnl} reads the namelist from standard input.
  275. {\sub initpm} initializes most vertical arrays and some in the spectral domain.
  276. {\sub initsi} computes arrays for the semi-implicit scheme.
  277. {\sub legini} computes all polynomials needed for the Legendre transformation.
  278. {\sub restart} starts the model from the restart file, if selected of a previous run.
  279. {\sub initfd} initializes spectral arrays.
  280. {\sub setzt} sets up the restoration temperature array.
  281. {\sub noise} puts a selectable form of noise into $lnPs$.
  282. {\sub setztex} is a special version of setzt for dipole experiments.
  283. {\sub Master} does some initial timesteps on initial runs, then it runs the
  284. time loop for the selected integration time. It calls the following subroutines:
  285. {\sub makebm} constructs the array bm, {\sub gridpoint} does all transformations
  286. and calculations in the grid point domain. {\sub sp2fc} converts spectral to
  287. Fourier coefficients (inverse Legendre transf.), {\sub dv2uv} divergence and
  288. vorticity to u and v (implies spectral to Fourier), {\sub fc2gp} Fourier
  289. coefficients to grid points (fast Fourier transformation), {\sub calcgp}
  290. calculations in grid point space, {\sub gp2fc} grid points to Fourier coefficients
  291. (fast Fourier transformation), {\sub fc2sp} Fourier coefficients to spectral
  292. (direct Legendre transf.), {\sub mktend} makes tendencies (implies Fourier to spectral),
  293. {\sub spectral} does all calculations in the spectral domain, {\sub outsp}
  294. writes spectral fields in physical dimensions on an output file, and
  295. {\sub diag} writes selected fields and parameters to the standard output.
  296. {\sub Epilog} writes the restart file.
  297. \section{Initialization}
  298. The model starts either from a restart file or with the atmosphere
  299. at rest. The defaults make the initial state a motionless, stable
  300. stratified atmosphere. For an initial start the divergence and
  301. the relative vorticity are set to zero (only mode(1,0) of vorticity
  302. is set to the planetary vorticity). The temperature is initialized
  303. as a constant horizontal field. The vertical distribution is
  304. adopted from the restoration temperature, usually a stable stratification.
  305. The initialization of the logarithm of the surface pressure
  306. is controlled by the namelist variable \textbf{kick}:
  307. \textbf{kick}=0 sets all modes to zero, so the model runs with constant
  308. zones without eddies, \textbf{kick}=1 generates random white noise and
  309. \textbf{kick}=2 generates random white noise that is symmetrical about the equator.
  310. Runs started with \textbf{kick}=1 or 2 are irreproducible due to the randomization.
  311. For reproducible runs with eddies use \textbf{kick}=3 which only initializes mode(1,2)
  312. of $lnPs$ with a small constant.
  313. The amplitude of the noise perturbation is normalized to 0.1 hPa
  314. (1.e-4 of the mean surface pressure).
  315. A radiative equilibrium temperature field for the run is set
  316. up by {\sub setzt}: First, a global mean radiative equilibrium
  317. temperature profile $T_R(\sigma)$ is defined.
  318. A hyperbolic function of height is used to provide
  319. $T_R(\sigma)$, as illustrated in Figure \ref{Tr_z}.
  320. With $z \rightarrow{} - \infty$ the profile tends to a uniform lapse rate,
  321. \textbf{alr}, passing through the temperature \textbf{tgr} at \textit{z} = 0.
  322. With $z \rightarrow{} + \infty$ the profile becomes isothermal. The transition
  323. takes place at the height \textbf{ztrop}. The sharpness of the tropopause
  324. is controlled by the parameter \textbf{dttrp}.
  325. When \textbf{dttrp} = 0,the lapse rate changes discontinuously at \textbf{ztrop}.
  326. For \textbf{dttrp} small but positive, the transition is spread. The hydrostatic
  327. relation is used to determine the heights and hence the temperatures
  328. of the model levels.
  329. \section{Computations in spectral domain}
  330. The subroutine{\sub spectral} performs one timestep. Details of the time
  331. stepping scheme are
  332. given in \citep{hossim75}. The adiabatic tendencies
  333. (advection, etc.) are used. The normal time step is centered in
  334. time, and includes a Robert time filter to control time splitting.
  335. For the first \textbf{nkits} time steps, short initial time steps, an initial
  336. forward timestep
  337. followed by a centred step, each twice its predecessor, are taken
  338. in order to initiate a run from data at only one time level.
  339. No Robert filter is included in the short steps. The subroutine
  340. calculates the spectral tendencies due to Newtonian cooling, Rayleigh
  341. friction and hyperdiffusion:
  342. \chapter{Preprocessor}
  343. \input{preprocessor.tex}
  344. \chapter{Benchmark}
  345. \input{benchmark.tex}
  346. \bibliography{ref}
  347. \begin{appendix}
  348. \chapter{List of Constants and Symbols}
  349. \input{symb}
  350. \chapter{PUMA Codes for Variables}
  351. \label{Pumacodes}
  352. \input{puma_codes}
  353. \chapter{Namelist}
  354. \label{Namelist}
  355. \input{namelist}
  356. \end{appendix}
  357. \end{document}