123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 |
- \documentclass[12pt,twoside,a4paper]{book}
- \usepackage[pdftex]{graphicx}
- \usepackage[pdftex]{hyperref}
- \usepackage{epsfig}
- \usepackage{a4}
- \usepackage[margin=2cm]{geometry}
- \pagestyle{headings}
- \usepackage{afterpage}
- \usepackage{latexsym}
- \usepackage{ulem}
- \usepackage{natbib}
- % macros
- \def \ba{\begin{array}}
- \def \ea{\end{array}}
- \def \be{\begin{equation}}
- \def \ee{\end{equation}}
- \def \bd{\begin{displaymath}}
- \def \ed{\end{displaymath}}
- \def \bfl{\begin{flushleft}}
- \def \efl{\end{flushleft}}
- \def \beqa{\begin{eqnarray}}
- \def \eeqa{\end{eqnarray}}
- \def \di{\displaystyle}
- \def \degrees{^\circ}
- \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}}
- \newcommand{\module}{\sf}
- \newcommand{\sub}{\it}
- \newcommand{\nam}{\it}
- \newcommand{\file}{\bf}
- \newcommand{\modir}{puma}
- % end of macro definition
- %------- [PUMA - constants]-------%
- \def \dtep{$(\Delta T_R)_{\ÄP}\;$}
- \def \dtepE{$(\Delta T_R)_{EP}\;$}
- \def \dtns{$(\Delta T_R)_{NS}\;$}
- \def \dtepk{$(\Delta T_R)_{\ÄP}$}
- \def \dtepkE{$(\Delta T_R)_{EP}$}
- \def \dtnsk{$(\Delta T_R)_{NS}$}
- %---------------------------------%
- \begin{document}
- \begin{titlepage}
- \begin{center}
- \begin{figure}
- \hspace{1cm}
- \parbox{7cm}{
- \includegraphics[width=7cm]{Pics/UHH_Logo_RGB}}
- \hspace{0.5cm}
- \parbox{7cm}{
- \includegraphics[width=7cm]{Pics/KC-Logo_RGB}}
- \end{figure}
- \vspace*{1cm}
- {\Huge\bf PUMA} \\
- \vspace*{1cm}
- \includegraphics[width=15cm]{Pics/guisnap} \\
- \vspace*{1cm}
- {\huge \bf User's Guide} \\
- \vspace*{1cm}
- {\huge \bf Version 17}
- \vspace*{1cm}
- Frank Lunkeit -
- Edilbert Kirk \\
- Klaus Fraedrich -
- Valerio Lucarini \\
- Simon Blessing -
- Hartmut Borth \\
- Torben Kunz -
- Alastair McDonald \\
- Silke Schubert -
- Frank Sielmann \\
- \end{center}
- \end{titlepage}
- \begin{verbatim}
- The PUMA User's Guide is a publication of the
- Theoretical Meteorology at the Meteorological Institute of
- the University of Hamburg.
- Address:
- Prof. Dr. Valerio Lucarini
- Meteorological Institute
- KlimaCampus
- University of Hamburg
- Grindelberg 5
- D-20144 Hamburg
- Germany
- Contact:
- Valerio.Lucarini@uni-hamburg.de.
- Frank.Lunkeit@uni-hamburg.de
- Edilbert.Kirk@uni-hamburg.de
- \end{verbatim}
- \bibliographystyle{plainnat}
- \tableofcontents
- \chapter{Installation}
- \input{install.tex}
- \chapter{Introduction}
- \input{introduction.tex}
- \nocite{KunzFraeLun09}
- \nocite{Perez2005}
- \nocite{Blessetal2008}
- \nocite{fraelun2008}
- \nocite{KunzFraeKirk2008}
- \chapter{Horizontal Grid}
- \input{grid.tex}
- \chapter{Modules}
- \input{modules.tex}
- \chapter{Parallel Program Execution}
- \input{parallel.tex}
- \chapter{Graphical User Interface}
- \input{gui.tex}
- \chapter{Postprocessor Pumaburner}
- \label{Pumaburner}
- \input{pumaburn}
- \chapter{Graphics}
- %\section{\verb/GrADS/}
- \section{GrADS}
- \input{graphics_grads}
- %\section{Vis5D}
- %\input{graphics_vis5d}
- \chapter{Model Dynamics}
- \input{dynamics.tex}
- \section{Scaling of Variables}
- The variables are rendered dimensionless using the following
- characteristic scales:
- \begin{tabular}{|l|l|l|} \hline
- Variable & Scale & Scale description \\ \hline \hline
- Divergence & $\Omega$ & $\Omega$ = angular velocity \\ \hline
- Vorticity & $\Omega$ & $\Omega$ = angular velocity \\ \hline
- Temperature & $(a^2 {\Omega}^2)/R$ & a = planet radius, R = gas constant \\ \hline
- Pressure & 101100 Pa & PSURF = mean sea level pressure \\ \hline
- Orography & $(a^2 {\Omega}^2)/g$ & g = gravity \\ \hline
- \end{tabular}
- \section{Vertical Discretization}
- \begin{figure}[h]
- \setlength{\unitlength}{1cm}
- \begin{picture}(14,10)
- \thicklines
- \multiput(2 ,2)(0,1.5){5}{\line(1,0){8}}
- \multiput(10.5,1.25)(0,1.5){5}{\makebox(2,1.5){$\zeta,D,T'$}}
- \multiput(10.5,2.00)(0,1.5){4}{\makebox(2,1.5){$\dot{\sigma}$}}
- \put(10.5,0.50){\makebox(2,1.5){$p = p_s , \dot{\sigma} = 0$}}
- \put(10.5,8.00){\makebox(2,1.5){$p = 0 , \dot{\sigma} = 0$}}
- \put(0,8.75){\makebox(1,1.5){$ Level $}}
- \put(1,8.75){\makebox(1,1.5){$ \sigma $}}
- \put(10.5,8.75){\makebox(2,1.5){$ Variables $}}
- \thinlines
- \multiput(2,1.25)(0,1.5){6}{\line(1,0){8}}
- \put(1,0.50){\makebox(1,1.5){1.0}}
- \put(1,1.25){\makebox(1,1.5){0.9}}
- \put(1,2.00){\makebox(1,1.5){0.8}}
- \put(1,2.75){\makebox(1,1.5){0.7}}
- \put(1,3.50){\makebox(1,1.5){0.6}}
- \put(1,4.25){\makebox(1,1.5){0.5}}
- \put(1,5.00){\makebox(1,1.5){0.4}}
- \put(1,5.75){\makebox(1,1.5){0.3}}
- \put(1,6.50){\makebox(1,1.5){0.2}}
- \put(1,7.25){\makebox(1,1.5){0.1}}
- \put(1,8.00){\makebox(1,1.5){0.0}}
- \put(0,0.50){\makebox(1,1.5){5.5}}
- \put(0,1.25){\makebox(1,1.5){5 }}
- \put(0,2.00){\makebox(1,1.5){4.5}}
- \put(0,2.75){\makebox(1,1.5){4 }}
- \put(0,3.50){\makebox(1,1.5){3.5}}
- \put(0,4.25){\makebox(1,1.5){3 }}
- \put(0,5.00){\makebox(1,1.5){2.5}}
- \put(0,5.75){\makebox(1,1.5){2 }}
- \put(0,6.50){\makebox(1,1.5){1.5}}
- \put(0,7.25){\makebox(1,1.5){1 }}
- \put(0,8.00){\makebox(1,1.5){0.5}}
- \end{picture}
- \caption{Vertical geometry of PUMA with associated variables (5 level version)}
- \label{figlevel}
- \end{figure}
-
- The model is represented by finite differences in the vertical
- as shown in figure \ref{figlevel}. The number of vertical levels
- is variable. The vertical coordinate is defined as $\sigma = p/p_s$.
- The prognostic variables $\zeta,D$, and $T'$ are calculated at full levels.
- At the two outer half levels $\sigma = 0$ (upper boundary) and
- $\sigma = 1$ (lower boundary) the vertical velocity is set to zero.
- The vertical advection at level $r$ is approximated as follows:
- \begin{equation}
- \left( \overline{\dot{\sigma} \delta_{\sigma} Q_{\sigma}} \right)_r =
- \frac{1}{2} \left(
- \dot{\sigma}_{r+\frac{1}{2}}
- \frac{Q_{r+1}-Q_r}{\Delta \sigma}
- + \dot{\sigma}_{r-\frac{1}{2}}
- \frac{Q_r - Q_{r-1}}{\Delta \sigma}
- \right)
- \end{equation}
- The tendencies of temperature, divergence and surface pressure
- are solved by the implicit time step. The vorticity equation
- is approximated by the centred differences in time \citep{hossim75}.
-
- \section{PUMA Flow Diagram}
- \begin{figure}[h]
- \setlength{\unitlength}{1cm}
- \begin{picture}(14,18)
- \thicklines
- \newsavebox{\srbox}
- \savebox{\srbox}(0,0){
- \thicklines
- \put(0,-0.3){\oval(2.5,0.6)}}
- \newsavebox{\cobox}
- \savebox{\cobox}(0,0){
- \thinlines
- \put(0,-0.3){\fbox}}
- \put(0,16){\usebox{\srbox}\makebox(0,0){puma}}
- \put(8,15.9){\fbox{Main program}}
- \put(1.25,16){\line(1,0){0.75}}
- \put(2,16){\vector(0,-1){0.7}}
- \put(2,15){\usebox{\srbox}\makebox(0,0){mpstart}}
- \put(8,14.9){\fbox{Multi processing startup}}
- \put(2,14.7){\vector(0,-1){0.4}}
- \put(2,14){\usebox{\srbox}\makebox(0,0){prolog}}
- \put(8,13.9){\fbox{Call initialization routines}}
- \put(2,13.7){\vector(0,-1){0.4}}
- \put(2,13){\usebox{\srbox}\makebox(0,0){master}}
- \put(8,12.9){\fbox{Perform time loop for NRUN time steps}}
- \put(3.25,13){\line(1,0){0.75}}
- \put(4,13){\vector(0,-1){0.7}}
- \put(4,12){\usebox{\srbox}\makebox(0,0){gridpoint}}
- \put(8,11.9){\fbox{Call transformation and grid point routines}}
- \put(5.25,12){\line(1,0){0.75}}
- \put(6,12){\vector(0,-1){0.7}}
- \put(6,11){\usebox{\srbox}\makebox(0,0){sp2fc}}
- \put(8,10.9){\fbox{Inverse Legendre transformation}}
- \put(6,10.7){\vector(0,-1){0.4}}
- \put(6,10){\usebox{\srbox}\makebox(0,0){dv2uv}}
- \put(8,9.9){\fbox{Divergence and vorticity to u,v - wind components}}
- \put(6, 9.7){\vector(0,-1){0.4}}
- \put(6, 9){\usebox{\srbox}\makebox(0,0){fc2gp}}
- \put(8,8.9){\fbox{Fourier coefficients to grid points (Inverse FFT)}}
- \put(6, 8.7){\vector(0,-1){0.4}}
- \put(6, 8){\usebox{\srbox}\makebox(0,0){\bf calcgp}}
- \put(8,7.9){\fbox{Calculations in grid point space}}
- \put(6, 7.7){\vector(0,-1){0.4}}
- \put(6, 7){\usebox{\srbox}\makebox(0,0){gp2fc}}
- \put(8,6.9){\fbox{Grid point to Fourier coefficients (FFT)}}
- \put(6, 6.7){\vector(0,-1){0.4}}
- \put(6, 6){\usebox{\srbox}\makebox(0,0){mktend}}
- \put(8,5.9){\fbox{Make tendencies for spectral domain}}
- \put(6, 5.7){\vector(0,-1){0.4}}
- \put(6, 5){\usebox{\srbox}\makebox(0,0){mpsumsc}}
- \put(8,4.9){\fbox{MP sum and scatter}}
- \put(4, 5){\line(1,0){0.75}}
- \put(4, 5){\vector(0,-1){0.7}}
- \put(4, 4){\usebox{\srbox}\makebox(0,0){outsp}}
- \put(8,3.9){\fbox{Write prognostic fields to file (puma\_data)}}
- \put(4, 3.7){\vector(0,-1){0.4}}
- \put(4, 3){\usebox{\srbox}\makebox(0,0){diag}}
- \put(8,2.9){\fbox{Write diagnostics to standard output}}
- \put(4, 2.7){\vector(0,-1){0.4}}
- \put(4, 2){\usebox{\srbox}\makebox(0,0){\bf spectral}}
- \put(8,1.9){\fbox{Perform spectral calculations and time stepping}}
- \put(2, 2){\line(1,0){0.75}}
- \put(2, 2){\line(0,1){10}}
- \put(2, 7){\makebox(0,0){time \hspace{2mm} loop}}
- \put(2, 12){\vector(1,0){0.75}}
- \put(4, 1.7){\line(0,-1){0.7}}
- \put(4, 1){\vector(-1,0){0.75}}
- \put(2, 1){\usebox{\srbox}\makebox(0,0){epilog}}
- \put(8,0.9){\fbox{Write restart file (puma\_status)}}
- \put(2, 0.7){\vector(0,-1){0.4}}
- \put(2, 0){\usebox{\srbox}\makebox(0,0){mpstop}}
- \put(8,-0.1){\fbox{MP terminate (end all processes)}}
- \end{picture}
- \caption{Flow diagram of main routines}
- \label{figflow}
- \end{figure}
- The diagram \ref{figflow} shows the route through the main program
- PUMA, with the names of the most important subroutines.
-
- PUMA is the main program. It calls the three subroutines {\sub Prolog},
- {\sub Master} and {\sub Epilog} .
- {\sub Prolog} does all initialization. It calls the following subroutines:
- {\sub gauaw} computes gaussian abscissas and weights.
- {\sub inilat} initializes some utility arrays like square of cosine of latitude etc.
- {\sub legpri} prints the arrays of {\sub gauaw} and {\sub inilat}.
- {\sub readnl} reads the namelist from standard input.
- {\sub initpm} initializes most vertical arrays and some in the spectral domain.
- {\sub initsi} computes arrays for the semi-implicit scheme.
- {\sub legini} computes all polynomials needed for the Legendre transformation.
- {\sub restart} starts the model from the restart file, if selected of a previous run.
- {\sub initfd} initializes spectral arrays.
- {\sub setzt} sets up the restoration temperature array.
- {\sub noise} puts a selectable form of noise into $lnPs$.
- {\sub setztex} is a special version of setzt for dipole experiments.
-
- {\sub Master} does some initial timesteps on initial runs, then it runs the
- time loop for the selected integration time. It calls the following subroutines:
- {\sub makebm} constructs the array bm, {\sub gridpoint} does all transformations
- and calculations in the grid point domain. {\sub sp2fc} converts spectral to
- Fourier coefficients (inverse Legendre transf.), {\sub dv2uv} divergence and
- vorticity to u and v (implies spectral to Fourier), {\sub fc2gp} Fourier
- coefficients to grid points (fast Fourier transformation), {\sub calcgp}
- calculations in grid point space, {\sub gp2fc} grid points to Fourier coefficients
- (fast Fourier transformation), {\sub fc2sp} Fourier coefficients to spectral
- (direct Legendre transf.), {\sub mktend} makes tendencies (implies Fourier to spectral),
- {\sub spectral} does all calculations in the spectral domain, {\sub outsp}
- writes spectral fields in physical dimensions on an output file, and
- {\sub diag} writes selected fields and parameters to the standard output.
- {\sub Epilog} writes the restart file.
-
-
- \section{Initialization}
-
- The model starts either from a restart file or with the atmosphere
- at rest. The defaults make the initial state a motionless, stable
- stratified atmosphere. For an initial start the divergence and
- the relative vorticity are set to zero (only mode(1,0) of vorticity
- is set to the planetary vorticity). The temperature is initialized
- as a constant horizontal field. The vertical distribution is
- adopted from the restoration temperature, usually a stable stratification.
- The initialization of the logarithm of the surface pressure
- is controlled by the namelist variable \textbf{kick}:
- \textbf{kick}=0 sets all modes to zero, so the model runs with constant
- zones without eddies, \textbf{kick}=1 generates random white noise and
- \textbf{kick}=2 generates random white noise that is symmetrical about the equator.
- Runs started with \textbf{kick}=1 or 2 are irreproducible due to the randomization.
- For reproducible runs with eddies use \textbf{kick}=3 which only initializes mode(1,2)
- of $lnPs$ with a small constant.
- The amplitude of the noise perturbation is normalized to 0.1 hPa
- (1.e-4 of the mean surface pressure).
-
- A radiative equilibrium temperature field for the run is set
- up by {\sub setzt}: First, a global mean radiative equilibrium
- temperature profile $T_R(\sigma)$ is defined.
- A hyperbolic function of height is used to provide
- $T_R(\sigma)$, as illustrated in Figure \ref{Tr_z}.
- With $z \rightarrow{} - \infty$ the profile tends to a uniform lapse rate,
- \textbf{alr}, passing through the temperature \textbf{tgr} at \textit{z} = 0.
- With $z \rightarrow{} + \infty$ the profile becomes isothermal. The transition
- takes place at the height \textbf{ztrop}. The sharpness of the tropopause
- is controlled by the parameter \textbf{dttrp}.
- When \textbf{dttrp} = 0,the lapse rate changes discontinuously at \textbf{ztrop}.
- For \textbf{dttrp} small but positive, the transition is spread. The hydrostatic
- relation is used to determine the heights and hence the temperatures
- of the model levels.
-
- \section{Computations in spectral domain}
- The subroutine{\sub spectral} performs one timestep. Details of the time
- stepping scheme are
- given in \citep{hossim75}. The adiabatic tendencies
- (advection, etc.) are used. The normal time step is centered in
- time, and includes a Robert time filter to control time splitting.
- For the first \textbf{nkits} time steps, short initial time steps, an initial
- forward timestep
- followed by a centred step, each twice its predecessor, are taken
- in order to initiate a run from data at only one time level.
- No Robert filter is included in the short steps. The subroutine
- calculates the spectral tendencies due to Newtonian cooling, Rayleigh
- friction and hyperdiffusion:
-
- \chapter{Preprocessor}
- \input{preprocessor.tex}
- \chapter{Benchmark}
- \input{benchmark.tex}
- \bibliography{ref}
- \begin{appendix}
- \chapter{List of Constants and Symbols}
- \input{symb}
- \chapter{PUMA Codes for Variables}
- \label{Pumacodes}
- \input{puma_codes}
- \chapter{Namelist}
- \label{Namelist}
- \input{namelist}
- \end{appendix}
- \end{document}
|