% $Id: palm_overview.tex 1233 2013-09-23 10:20:49Z witha $
\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}
      \item<7->{Code is under the GNU public license (GPL V3)}
   \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{EXAMPLES/}};}
      \uncover<3->{
      \node [green, below=0.3cm of third] (fourth) {\textbf{INSTALL/}};}
      \uncover<4->{\node [green, below=0.25cm of fourth] (fifth) {\textbf{SCRIPTS/}};}
      \uncover<5->{\node [green, below=0.25cm of fifth] (sixth) {\textbf{SOURCE/}};}
      \uncover<6->{\node [green, below=0.25cm of sixth] (seventh) {\textbf{TUTORIAL/}};}
      \uncover<7->{\node [green, below=0.25cm of seventh] (eighth) {\textbf{UTIL/}};}
      \uncover<2->{\node [white, right=0.25cm of third] (ninth) {\textbf{parameter files and run control output for a variety of application examples}};}
      \uncover<3->{\node [white, right=0.25cm of fourth] (tenth) {\textbf{parameter file and run control output to check and verify the PALM installation}};}
      \uncover<4->{\node [white, right=0.25cm of fifth] (eleventh) {\textbf{shell scripts and helper programs for running PALM, default configuration files for the shell scripts}};}
      \uncover<5->{\node [white, right=0.25cm of sixth] (twelfth) {\textbf{PALM source code + Makefile}};}
      \uncover<6->{\node [white, right=0.25cm of seventh] (thirteen) {\textbf{pdf files of the seminar presentations, also accessible via the PALM trac-server}};}
      \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}