% $Id: palm_overview.tex 915 2012-05-30 15:11:11Z heinze $ \input{header_tmp.tex} %\input{header_lectures.tex} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{pgf} \usetheme{Dresden} \usepackage{subfigure} \usepackage{units} \usepackage{multimedia} \newcommand{\event}[1]{\newcommand{\eventname}{#1}} \usepackage{xmpmulti} \usepackage{tikz} \usetikzlibrary{shapes,arrows,positioning} \def\Tiny{\fontsize{4pt}{4pt}\selectfont} \institute{Institut für Meteorologie und Klimatologie, Leibniz Universität Hannover} \date{last update: \today} \event{PALM Seminar} \setbeamertemplate{navigation symbols}{} \setbeamertemplate{footline} {% \begin{beamercolorbox}[rightskip=-0.1cm]& {\includegraphics[height=0.65cm]{imuk_logo.pdf}\hfill \includegraphics[height=0.65cm]{luh_logo.pdf}} \end{beamercolorbox} \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,% leftskip=.3cm,rightskip=0.3cm plus1fil]{title in head/foot}% {\leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor} \hfill \eventname \hfill \insertframenumber \; / \inserttotalframenumber}% \end{beamercolorbox}% % \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot}% % \end{beamercolorbox} } %\logo{\includegraphics[width=0.3\textwidth]{luhimuk_logo.png}} \title[PALM Overview]{PALM Overview} \author{Siegfried Raasch} % Notes: % jede subsection bekommt einen punkt im menu (vertikal ausgerichtet. % jeder frame in einer subsection bekommt einen punkt (horizontal ausgerichtet) \begin{document} \begin{frame} \titlepage \end{frame} \section{PALM Overview} \subsection{PALM Overview} %Folie 01 \begin{frame} \begin{center} PALM - Overview \end{center} \end{frame} %Folie 02 \begin{frame} \frametitle{PALM - Overview} \begin{flushleft} \textbf{PA}rallelized \textbf{L}ES \textbf{M}odel \end{flushleft} \begin{itemize} \item<2->{First version 1997, continously developed since then} \item<3->{Written in FORTRAN 95} \item<4->{Very high performance and scalability on all state-of-the-art parallel architectures} \item<5->{One code for atmosphere and ocean} \item<6->{Code is free to use for scientific applications} \end{itemize} \end{frame} %Folie 03 \begin{frame} \frametitle{PALM - Overview} \begin{flushleft} \textbf{Software-development in a professional environment} \end{flushleft} \begin{itemize} \item<2->{Detailed online-documentation} \item<3->{Interface for code-extensions by users} \item<4->{Code is managed and distributed via subversion } \begin{itemize} \item<5->{Direct code-access from the internet} \item<6->{Allows collaborative code-development} \end{itemize} \end{itemize} \end{frame} %Folie 04 \begin{frame} \frametitle{PALM - Features (General Overview)} \framesubtitle{Physics / Numerics (special characteristics)} \begin{itemize} \item<2->{Cyclic horizontal boundary conditions but also non-cyclic boundary conditions along x or y available} \item<3->{Turbulent inflow is realized for non-cyclic boundary conditions} \item<4->{Topography can be used} \item<5->{A Lagrangian particle model is embedded} \item<6->{Code can be switched to ocean, i.e. salinity equation and equation of state for seawater is included} \item<7->{Coupled ocean-atmosphere simulations are possible} \item<8->{A simple canopy model is included} \item<9->{It allows for very huge applications\\ (currently $4000^{3}$ gridpoints)} \end{itemize} \end{frame} %Folie 05 \begin{frame} \frametitle{PALM - Features (General Overview)} \begin{flushleft} \textbf{Technical features} \end{flushleft} \begin{itemize} \item<2->{Scripts allow for very comfortable operation of the model} \item<3->{Model can be adapted for any kind of (Unix) system by simply adjusting a configuration file} \item<4->{Batch jobs and job chains (restart mechanism) can be automatically created (requires manual adjustments of scripts)} \item<5->{Runs are controlled by a simple NAMELIST parameter file} \item<6->{ Error messages inform in case of parameter inconsistencies or other problems detected during runtime} \end{itemize} \end{frame} %Folie 06 \begin{frame} \frametitle{PALM - Features (General Overview)} \begin{flushleft} \textbf{Technical features} \end{flushleft} \begin{itemize} \item<1->{Standard data analysis is done within the simulation itself} \item<2->{All output is in standard netCDF data format} \item<3->{A user-interface allows for easy code extensions by the user} \item<4->{A powerful 3D-visualization software is included in the code (requires additional graphics library, (a streaming server), and a plugin for web-browsers)} \end{itemize} \end{frame} %Folie 07 \begin{frame} \begin{figure} \href{/home/maronga/dvr/data/rinne_1.html}{\includegraphics<3,5,7,9,11>[height=0.35\textheight]{palm_overview_figures/Fig08_mini_Luepkes.png}} \href{Link 2}{\includegraphics<5,7,9,11>[height=0.35\textheight]{palm_overview_figures/Fig09_mini_Raasch_Franke.png}} \href{Link 3}{\includegraphics<7,9,11>[height=0.35\textheight]{palm_overview_figures/Fig10_mini_gryschka.png}} \href{Link 4}{\includegraphics<9,11>[height=0.35\textheight]{palm_overview_figures/Fig11_mini_steinfeld.png}} \href{Link 5}{\includegraphics<11>[height=0.35\textheight]{palm_overview_figures/Fig07_mini_Letzel.png}} \end{figure} \begin{center} \includegraphics<1>[height=0.82\textheight]{palm_overview_figures/Fig05_land.png} \includegraphics<2>[height=0.82\textheight]{palm_overview_figures/Fig06_ice.png} \includegraphics<4>[height=0.82\textheight]{palm_overview_figures/Fig04_staubteufel.png} \includegraphics<6>[height=0.82\textheight]{palm_overview_figures/Fig03_clouds.png} \includegraphics<8>[height=0.82\textheight]{palm_overview_figures/Fig02_Mast.png} \includegraphics<10>[height=0.82\textheight]{palm_overview_figures/Fig01_letzel_building.png} \end{center} \end{frame} %Folie 08 \begin{frame} \frametitle{PALM – External Users / Areas of Application} \begin{itemize} \item<1->{Users / Collaborations} \begin{itemize} \item<2->{\textbf{AWI} Alfred Wegener Institute for Polar Research (Bremerhaven, Germany)} \item<3->{\textbf{ForWind} (University of Oldenburg, Germany)} \item<4->{\textbf{NERSC} Nansen Environmental And Remote Sensing Center (Bergen, Norway)} \item<5->{\textbf{FMI} Finnish Meteorological Institute (Helsinki, Finland)} \item<6->{Department of Atmospheric Sciences, \textbf{Yonsei University} (Seoul, Korea)} \item<7->{\textbf{IGSES} (Interdisciplinary Graduate School of Engineering Sciences), \textbf{Kyushu University} (Fukuoka, Japan)} \item<8->{School of Earth and Environmental Science, \textbf{Seoul National University} (Seoul, Korea)} \item<9->{Dept. of Intl. Development Eng., \textbf{Tokyo Institute of Technology} (Tokyo, Japan)} \end{itemize} \end{itemize} \end{frame} %Folie 09 \begin{frame} \frametitle{PALM – External Users / Areas of Application} \begin{itemize} \item<1->{Areas of Application} \begin{itemize} \item<2->{Interaction of boundary layer turbulence $\leftrightarrow$ wind energy converters} \item<3->{Improvement of turbulence parameterizations} \item<4->{Atmosphere-ocean coupling} \item<5->{Ocean mixed layer} \item<6->{Turbulence in the urban canopy layer} \end{itemize} \end{itemize} \end{frame} \section{Technical Issues} \subsection{Technical Issues} %Folie 10 \begin{frame} \begin{center} PALM - Overview\\ Technical Issues \end{center} \end{frame} %Folie 11 \begin{frame} \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.15\textwidth, font=\scriptsize] \tikzstyle{white} = [rectangle, text width=0.4\textwidth, font=\tiny] \tikzstyle{line} = [draw, -] \tikzstyle{alert} = [rectangle, draw, text width=0.77\textwidth, font=\scriptsize] \frametitle{PALM - Components - Overview} The PALM download not only contains the model‘s FORTRAN code but a variety of further components / files. The directory structure is as follows.\\ \ \\ \begin{tikzpicture}[auto, node distance=0] \node [green] (first) { \textbf{trunk} }; \uncover<1->{\node [white, right=1cm of first] (second) {};} \uncover<2->{\node [green, above=2cm of second] (third) {\textbf{DOC/}};} \uncover<3->{ \node [green, below=0.3cm of third] (fourth) {\textbf{EXAMPLES/}};} \uncover<4->{\node [green, below=0.25cm of fourth] (fifth) {\textbf{INSTALL/}};} \uncover<5->{\node [green, below=0.25cm of fifth] (sixth) {\textbf{SCRIPTS/}};} \uncover<6->{\node [green, below=0.25cm of sixth] (seventh) {\textbf{SOURCE/}};} \uncover<7->{\node [green, below=0.25cm of seventh] (eighth) {\textbf{UTIL/}};} \uncover<2->{\node [white, right=0.25cm of third] (ninth) {\textbf{complete documentation, also accessible from the PALM homepage}};} \uncover<3->{\node [white, right=0.25cm of fourth] (tenth) {\textbf{parameter files and run control output for a variety of application examples}};} \uncover<4->{\node [white, right=0.25cm of fifth] (eleventh) {\textbf{parameter file and run control output to check and verify the PALM installation}};} \uncover<5->{\node [white, right=0.25cm of sixth] (twelfth) {\textbf{shell scripts and helper programs for running PALM, default configuration files for the shell scripts}};} \uncover<6->{\node [white, right=0.25cm of seventh] (thirteen) {\textbf{PALM source code + Makefile}};} \uncover<7->{\node [white, right=0.25cm of eighth] (fourteen) {\textbf{source code for helper programs}};} \uncover<8->{\node [alert, below=2cm of second] (alert) {\textcolor{red}{Please never modify or delete files in trunk and its subdirectories!}};} \path<2-> [line] (first.east) -- (third.west); \path<3-> [line] (first.east) -- (fourth.west); \path<4-> [line] (first.east) -- (fifth.west); \path<5-> [line] (first.east) -- (sixth.west); \path<6-> [line] (first.east) -- (seventh.west); \path<7-> [line] (first.east) -- (eighth.west); \end{tikzpicture} \end{frame} %Folie 12 \begin{frame} \frametitle{Recommended Directory Structure for the PALM Installation} \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, font=\Tiny] \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, font=\Tiny] \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.12\textwidth, font=\Tiny] \tikzstyle{white} = [rectangle, text width=0.12\textwidth, font=\Tiny] \tikzstyle{white1} = [rectangle, text width=0.2\textwidth, font=\Tiny] \tikzstyle{line} = [draw, -] \begin{tikzpicture}[auto, node distance=0] \uncover<1->{\node [yellow] (first) {\textbf{\$HOME/} };} \uncover<2->{\node [yellow, right=0.25cm of first] (second) {\textbf{palm/}};} \uncover<3->{\node [yellow, right=0.25cm of second] (third) {\textbf{current\_version/}};} \uncover<4->{\node [green, right=0.75cm of third] (fourth) {\textbf{trunk/}};} \uncover<5->{\node [yellow, above=0.5cm of second] (fifth) {\textbf{job\_queue/}};} \uncover<6->{\node [yellow, below=1cm of third] (sixth) {\textbf{older\_version/}};} \uncover<7->{\node [yellow1, above=1.5cm of fourth] (seventh) {\textbf{JOBS/}};} \uncover<8->{\node [yellow1, above=0.5cm of fourth] (eighth) {\textbf{USER\_CODE/}};} \uncover<9->{\node [green, below=0.5cm of fourth] (ninth) {\textbf{MAKE\_DEPOSITORY\_.../}};} \uncover<10->{\node [green, below=1.5cm of fourth] (tenth) {\textbf{MAKE\_DEPOSITORY\_.../}};} \uncover<11->{\node [green, below=2.75cm of first] (eleventh) {\textbf{/tmp\_user\_catalog/}};} \uncover<12->{\node [yellow1, below=3.5cm of first] (twelfth) {\textbf{/tmp\_data\_catalog/}};} \uncover<3->{\node [white, above=0.05cm of third] (thirteen) {{working directory of PALM user}};} \uncover<5->{\node [white, above=0.05cm of fifth] (fourteen) {{contains job protocol files from batch jobs}};} \uncover<6->{\node [white, below=0.05cm of sixth] (fifteen) {{older PALM version, if needed}};} \uncover<7->{\node [white1, right=0.2cm of seventh] (sixteen) {{parameter files for steering, output data}};} \uncover<8->{\node [white1, right=0.2cm of eighth] (seventeen) {{code extensions from user (user interface)}};} \uncover<4->{\node [white1, right=0.2cm of fourth] (eighteen) {{PALM software (FORTRAN code, scripts, etc.) }};} \uncover<9->{\node [white1, right=0.2cm of ninth] (nineteen) {{precompiled routines, generated by \textbf{mbuild}}};} \uncover<10->{\node [white1, right=0.2cm of tenth] (twenty) {{$\ldots$ compiled with different options (e.g. for debugging)}};} \uncover<11->{\node [white1, right=0.2cm of eleventh] (twentyone) {{contains temporary directory created (by \textbf{mrun}) for each PALM run}};} \uncover<12->{\node [white1, right=0.2cm of twelfth] (twentytwo) {{contains large binary data files created by PALM and needed e.g. for restarts}};} \uncover<5->{\node [white1, below=1cm of tenth] (twentythree) {{}};} \uncover<5->{\node [white, right=1cm of twentythree] (twentyfour) {{optional}};} \uncover<4->{\node [white, above=0.1cm of eighteen] (twentyfifth) {{}};} \uncover<4->{\node [white, below=0.1cm of eighteen] (twentysixth) {{}};} \uncover<7->{\node [white, above=0.1cm of sixteen] (twentyseventh) {{}};} \uncover<7->{\node [white, below=0.1cm of sixteen] (twentyeighth) {{}};} \path<2-> [line] (first.east) -- (second.west); \path<3-> [line] (second.east) -- (third.west); \path<4-> [line] (third.east) -- (fourth.west); \path<4-> [line] (fourth.east) -- (twentyfifth.west); \path<4-> [line] (fourth.east) -- (twentysixth.west); \path<4-> [line] (fourth.east) -- (eighteen.west); \path<5-> [line,dashed] (first.east) -- (fifth.west); \path<5-> [line,dashed] (twentythree.east) -- (twentyfour.west); \path<6-> [line,dashed] (second.east) -- (sixth.west); \path<7-> [line] (third.east) -- (seventh.west); \path<7-> [line] (seventh.east) -- (twentyseventh.west); \path<7-> [line] (seventh.east) -- (twentyeighth.west); \path<7-> [line] (seventh.east) -- (sixteen.west); \path<8-> [line] (eighth.east) -- (twentyfifth.west); \path<8-> [line] (eighth.east) -- (twentyeighth.west); \path<8-> [line,dashed] (third.east) -- (eighth.west); \path<8-> [line] (eighth.east) -- (seventeen.west); \path<9-> [line] (third.east) -- (ninth.west); \path<10-> [line,dashed] (third.east) -- (tenth.west); \end{tikzpicture} \end{frame} %Folie 13 \begin{frame} \frametitle{PALM - Main Modes of Operation} \begin{itemize} \item<1->{\textbf{Interactive mode}} \begin{itemize} \item<2->{PALM is run in interactive shell (terminal session)} \item<3->{CPU time as well as number of processors for interactive runs is limited on many systems} \item<4->{restart runs (job chain) are not possible} \item<5->{only requires appropriate settings in the configuration file} \end{itemize} \item<6->\textbf{{Batch mode (running batch jobs)}} \begin{itemize} \item<7->{requires a batch queueing system (e.g. NQS, PBS, Loadleveler, etc.) on the computer in use} \item<8->{still may require manual adjustments of PALM scripts (\textbf{mrun, mbuild, subjob})} \end{itemize} \end{itemize} \end{frame} %Folie 14 \begin{frame} \begin{itemize} \item<1->{\textbf{Running batch jobs on remote computers}} \begin{itemize} \item<2->{requires a batch queueing system on the remote computer} \item<3->{requires ssh/scp access of the remote computer (in both directions “local $\leftrightarrow$ remote“), fixed IP-adresses for local and remote computer are required} \end{itemize} \item<4->\textbf{{Running job chains}} \begin{itemize} \item<5->{requires a batch queueing system (+ ssh/scp access)} \end{itemize} \end{itemize} \end{frame} %Folie 15 \begin{frame} \frametitle{PALM - Scripts for Operating} {\scriptsize PALM is operated by two scripts, named \textbf{mbuild} and \textbf{mrun}. \textbf{mrun} itself calls some helper programs and, if a batch job is to be submitted, the script \textbf{subjob}.} \begin{itemize} \item<2->{\textbf{mrun}} \begin{itemize} \item<3->{{\scriptsize script for running PALM (interactive or batch)}} \end{itemize} \item<4->{\textbf{mbuild}} \begin{itemize} \item<5->{{\scriptsize script for generating a pre-compiled PALM version (object files)}} \end{itemize} \item<6->{\textbf{subjob}} \begin{itemize} \item<7->{{\scriptsize script for generating an submitting batch jobs}} \end{itemize} \item<8->{\textbf{helper programs}} \begin{itemize} \item<9->{{\scriptsize small FORTRAN programs, needed e.g. for interpreting the configuration file and for collecting output data (\texttt{interpret-config.x}, \texttt{combine-plot-fields.x})}} \end{itemize} \end{itemize} \tikzstyle{white} = [rectangle, text width=0.25\textwidth, font=\scriptsize] \tikzstyle{white1} = [rectangle, text width=0.95\textwidth, font=\scriptsize] \tikzstyle{line} = [draw, -] \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.15\textwidth, font=\scriptsize] \begin{tikzpicture}[auto, node distance=0] \uncover<10->{\node [white] (first) {{Location of scripts:}};} \uncover<11->{\node [green, right=0.5cm of first] (second) {\textbf{trunk/} };} \uncover<11->{\node [white, right=0.5cm of second] (third) {{}};} \uncover<11->{\node [green, below=0.15cm of third] (fourth) {\textbf{SCRIPTS/}};} \path<11-> [line] (second.east) -- (fourth.west); \uncover<11->{\node [white1, below=0.65cm of second] (fifth) {{The scripts have a large number of options. A short summary of available options can be listed by giving the question mark as the only option, e.g. \texttt{mrun ?}}};} \end{tikzpicture} \end{frame} %Folie 16 \begin{frame} \frametitle{PALM - Configuration File} {\scriptsize \textbf{mrun and mbuild} require a lot of settings (which depend on the respective computer system used), which have to be given in a configuration file with default name \texttt{.mrun.config}}\\ \begin{itemize} \item<1->{\textbf{Main purposes of the configuration file:}} \begin{itemize} \item<2->{setting of compiler options} \item<3->{setting of paths for libraries (e.g. netCDF library)} \item<4->{setting of environment variables} \item<5->{definition of (UNIX-)commands to be executed before or after PALM execution} \item<6->{handling of input/output files by file connection statements} \end{itemize} \end{itemize} \tikzstyle{white} = [rectangle, text width=0.3\textwidth, font=\scriptsize] \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, font=\scriptsize] \tikzstyle{line} = [draw, -] \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, font=\scriptsize] \begin{tikzpicture}[auto, node distance=0] \uncover<7->{\node [white] (first) {{Default position for \\\texttt{.mrun.config}:}};} \uncover<8->{\node [yellow, right=0.2cm of first] (second) {\textbf{home/} };} \uncover<9->{\node [yellow, right=0.25cm of second] (third) {\textbf{palm/}};} \uncover<10->{\node [yellow, right=0.25cm of third] (fourth) {\textbf{current-version/}};} \path<9-> [line] (second.east) -- (third.west); \path<10-> [line] (third.east) -- (fourth.west); \uncover<11->{\node [white, below=0.15cm of first] (fifth) {{A default version of this file \texttt{.mrun.config.default} \\(to be adjusted by the user) can be found in:}};} \uncover<12->{\node [green, below=0.35cm of second] (sixth) {\textbf{trunk/}};} \uncover<13->{\node [green, below=0.7cm of third] (seventh) {\textbf{SCRIPTS/}};} \path<13-> [line] (sixth.east) -- (seventh.west); \end{tikzpicture} \end{frame} %Folie 17 \begin{frame} \frametitle{PALM - Other Requirements for Running} \tikzstyle{alert} = [rectangle, draw, text width=0.8\textwidth, font=\scriptsize] \begin{tikzpicture}[auto, node distance=0] \uncover<2->{\node [alert] (first) {\textbf{The following things are not provided with the download!}};} \end{tikzpicture} \begin{itemize} \item<3->{Korn-Shell (/bin/ksh), either AT and T or public domain} \item<4->{subversion, a version control system (www.tigris.org)} \begin{itemize} \item<5->{needed for downloading the PALM code} \end{itemize} \item<6->{FORTRAN 90/95 compiler} \item<7->{MPI-library (must fit to the compiler!), MPI-2 not required} \item<8->{netCDF-library (see www.unidata.ucar.edu/software/netcdf/)} \begin{itemize} \item<9->{needed for data output} \end{itemize} \item<10->{graphics software capable to read netCDF data format} \begin{itemize} \item<11->{e.g. NCL, IDL, ferret} \end{itemize} \item<12->{Batch-system} \item<13->{ssh/scp connection to the remote host (both ways)} \end{itemize} \end{frame} \end{document}