% $Id: installation.tex 1649 2015-09-15 16:34:42Z maronga $
% $Id: installation.tex 1649 2015-09-15 16:34:42Z maronga $
\input{header_tmp.tex}

\usepackage[utf8]{inputenc}
\usepackage{ngerman}
\usepackage{pgf}
\usetheme{Dresden}
\usepackage{subfigure}
\usepackage{units}
\usepackage{multimedia}
\usepackage{hyperref}
\newcommand{\event}[1]{\newcommand{\eventname}{#1}}
\usepackage{xmpmulti}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,decorations.pathreplacing}
\def\Tiny{\fontsize{4pt}{4pt}\selectfont}

%---------- neue Pakete
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{multicol}
\usepackage{pdfcomment}
\usepackage{xcolor}

\institute{Institut für Meteorologie und Klimatologie, Leibniz Universität Hannover}
\date{last update: \today}
\event{PALM Seminar}
\setbeamertemplate{navigation symbols}{}
\setbeamersize{text margin left=.5cm,text margin right=.2cm}
\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.eps}}

\title[PALM - Installation]{PALM - Installation}
\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}

% Folie 1
\begin{frame}
\titlepage
\end{frame}

% Folie 2
\begin{frame}
   \frametitle{Before we start: Some Definitions About Runs (I)}
   \begin{itemize}
      \item<1->{Interactive run}
      \begin{itemize}
         \item<1->{Run command ({\tt mrun}) is called in terminal and program (PALM) immediately starts to run.}
      \end{itemize} 
      \item<2->{Batch run}
      \begin{itemize}
         \item<2->{Run command is called in terminal and creates a so called batch job, which is send to a queueing system. It may run at a later time (over night), depending on how many other jobs are waiting in the queue.}
      \end{itemize}
      \item<3->{Batch run on \textcolor{red}{remote} machine}
      \begin{itemize}
         \item<3->{Like a batch run, but the batch job is send (via {\tt scp}) to a queue on a \textcolor{red}{remote} computer.}
      \end{itemize}
   \end{itemize} 
\end{frame}

% Folie 3
\begin{frame}
   \frametitle{Before we start: Some Definitions About Runs (II)}
   
   \begin{itemize}
      \item<1->{Initial run / restart run}\\ \par\medskip
      \begin{itemize}
         \item<2->{Every queuing system has CPU time limits. If a run needs more time than these limits allow, it has to be split into several parts.}\\ \par\medskip
         \item<3->{The first part is called \textbf{initial run}.}\\ \par\medskip
         \item<4->{The other parts are called \textbf{restart runs}.}\\ \par\medskip
         \item<5->{All runs together form a so-called \textbf{job-chain}.}\\ \par\medskip
      \end{itemize} 
   \end{itemize}
\end{frame}

% Folie 4
\begin{frame}
   \frametitle{PALM - Installation on a personal Notebook or a CUHK Desktop PC}
   
   \small
   \begin{itemize}
      \item<1->{Participants of this seminar can install and use PALM in different ways:} 
      \item<2->{Installation on a personal notebook.}
      \item<3->{Installation on a CUHK desktop PC.}
      %\item<4->{We will start with installing PALM on a \textcolor{green}{local} computer and running it interactively.}
      \item<4->{The installation instructions can also be found in the PALM online-documentation under\\ \par\medskip
            \url{http://palm.muk.uni-hannover.de/trac/wiki/doc/install}}
   \end{itemize}
\end{frame}

% Folie 5
% \begin{frame}
%    \frametitle{PALM - Installation}
   
%    \begin{itemize}
%       \item<1->{The following slides describe the installation procedure for running PALM on a \textcolor{green}{local} computer and how to verify the installation.}\\ \par\medskip
%       \item<2->{The installation instructions can also be found in the PALM online-documentation under\\ \par\medskip
%             \url{http://palm.muk.uni-hannover.de/trac/wiki/doc/install}}
%    \end{itemize}
% \end{frame}

% Folie 6
\begin{frame}
   \frametitle{PALM - Installation / General Requirements (I)}
   
   \footnotesize 
   \begin{itemize}
      \item<1->[1.]{The Korn-shell (AT\&T ksh or public domain ksh) must be available under {\tt /bin/ksh}.}  
      \item<2->[2.]{The netCDF-library with version number not earlier than 3.6.3 (for netCDF, see under www.unidata.ucar.edu).}
      \item<3->[3.]{A FORTRAN90/95 compiler.}
      \item<4->[4.]{The Message Passing Interface (MPI),  if the parallel version of PALM shall be used.}
      \item<5->[5.]{The revision control system subversion (see subversion.tigris.org). This is already included in many Linux distributions (e.g. SuSe). Subversion requires port 3690 to be open for tcp/udp. If there are firewall restrictions concerning this port, the PALM code cannot be accessed. The user needs a permit to access the PALM repository. For getting a permit please contact the PALM group (raasch@muk.uni-hannover.de) and define a username and a password under which you like to access the repository. This username and password also gives you access to advanced features of the online documentation. (trac-server)}
   \end{itemize}
\end{frame}


% Folie 6a
\begin{frame}
   \frametitle{PALM - Installation / General Requirements (II)}
   
   \footnotesize 
   \begin{itemize}
      \item<1->[6.]{All participants of this seminar are already permitted to access the repository.
                    Use \dq seminar\_cuhk\dq as username and \dq palm2013\dq as password.}
   \end{itemize}
\end{frame}

% Folie 7
\begin{frame}
   \frametitle{Accounts and Passwords for PALM 2013 Seminar}
   
   \begin{itemize}
      \item<1->{On all the CUHK PCs you can log into the account ``student'' with the corresponding password ``fed19pa!m''.} 
   \end{itemize}
\end{frame}

% Folie 8
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Download on Linux Notebooks and CUHK PCs}
   
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.15\textwidth, font=\scriptsize]
   \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.35\textwidth, font=\scriptsize]
   \tikzstyle{green4} = [rectangle, draw, fill=green!75!black, text width=0.4\textwidth, font=\scriptsize]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{arrow} = [draw, -latex']
   
   \scriptsize
   \uncover<2->{It is assumed that the ksh (Korn-shell) or bash is the user‘s default shell!}
   \begin{columns}[c]
   \column{0.5\textwidth}
      \begin{itemize}
         \item<3->[1.]{Create your working directory \\ \par\medskip
            \qquad {\tt mkdir -p $\sim$/palm/current\_version}}
      \end{itemize}
   \column{0.42\textwidth}
      \uncover<4->{
      \begin{tikzpicture}[auto]
         \node[yellow1] (home) {\$HOME/};
         \node[yellow1] (palm) [right=0.4cm of home] {palm/};
         \node[yellow2] (currentv) [right=0.4cm of palm] {current\_version/};
         
         \path[line] (home) -- (palm);
         \path[line] (palm) -- (currentv);
      \end{tikzpicture}
      }
   \end{columns}
   \par\medskip
   \begin{itemize}
      \item<5->[2.]{Create a working copy of the newest PALM version (currently 3.9) from the subversion repository: \\ \par\medskip
         \qquad {\tt cd $\sim$/palm/current\_version} \\ 
         \qquad {\tt svn checkout --username \textless your username\textgreater \textbackslash} \\
	     \qquad \qquad {\tt svn://130.75.105.7/palm/tags/release-3.9  trunk} } \\ \par\medskip
      \uncover<6->{
      \begin{tikzpicture}[auto]
         \hspace{3cm}
         \node[yellow3] (home) {\$HOME/};
         \node[yellow3] (palm) [right=0.4cm of home] {palm/};
         \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/};
         \node[green1] (trunk) [right=0.4cm of currentv] {trunk/};
         
         \path[line] (home) -- (palm);
         \path[line] (palm) -- (currentv);
         \path[line] (currentv) -- (trunk);
      \end{tikzpicture}
      }
      \par\medskip
      \item<7->[]{Alternatively, check out the most recent (test) version: \\ \par\smallskip
         \qquad {\tt cd $\sim$/palm/current\_version} \\ 
         \qquad {\tt svn checkout --username \textless your username\textgreater \textbackslash} \\
	     \qquad \qquad {\tt svn://130.75.105.7/palm/trunk  trunk} }\\ \par\medskip  
      \item<8->[]{Generally, this version may contain bugs and new features may not be documented! \textbf{Anyhow, using the most recent version is recommended for this seminar!}}
   \end{itemize}
\end{frame}

% Folie 9
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Configuration on Linux Notebooks}
   
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt]
   
   \scriptsize
   \begin{itemize}
      \item<1->{Set environment variables in the respective profile of the user‘s default shell (e.g. in {\tt .profile}, when ksh is used, or in {\tt .bashrc}, when bash is used): \\ \par\medskip
      \uncover<2->{{\tiny \textcolor{red}{Note: .profile / .bashrc have to be located in \$HOME; recommended text editors are e.g. xedit / vi}}} \\ \par\medskip
         \qquad {\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\
         \qquad {\tt export PATH=\$PALM\_BIN:\$PATH}}\\ \par\medskip
      \uncover<3->{
           \begin{tikzpicture}[auto, >=latex']
              \hspace{0.5cm}
              \node[yellow3] (home) {\$HOME/};
              \node[yellow3] (palm) [right=0.4cm of home] {palm/};
              \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/};
              \node[green1] (trunk) [right=0.4cm of currentv] {trunk/};
              \node[green1] (scripts) [right=0.4cm of trunk] {SCRIPTS/};
              
              \path[line] (home) -- (palm);
              \path[line] (palm) -- (currentv);
              \path[line] (currentv) -- (trunk);
              \path[line] (trunk) -- (scripts);
              
              \uncover<6->{\draw [->, thick] {(scripts.south) .. controls (8.0,-1.0) and (4.0,-1.0) .. (currentv.south)};}
              
              \node[label, right=0pt of scripts] (scriptlabelbase2) {};
              \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {};
              \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {};
              \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {mrun};
              \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {mbuild};
              \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {...};
           \end{tikzpicture}
      }
      \item<4->{Restart the shell  (e.g. exit and login (via ssh) again). Otherwise settings are not active.}
      \item<5->{Create your personal configuration file, needed by {\tt mbuild} and {\tt mrun}: \\ \par\medskip
         \qquad {\tt cd ~/palm/current\_version} \\
         \qquad {\tt cp trunk/SCRIPTS/.mrun.config.default .mrun.config} \\ \par\medskip
      \uncover<7->{The next two slides explain parts of the format of the configuration file.}}
   \end{itemize}
\end{frame}

% Folie 11
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ The Configuration File (I)}
   
   \tikzstyle{box} = [rectangle, draw, text width=0.8\textwidth, font=\tiny]
   
   \small
   \begin{itemize}
      \item<1->{In the first part of the file, environment-variables used by {\tt mbuild} and {\tt mrun} are set to their required values. The format is like} 
   \end{itemize}
   \uncover<2->{
   \begin{center}
   \begin{tikzpicture}[auto, node distance=0]      
      \node[box](box){ \begin{tabbing} 
         {\tt \#column 1} \hspace{1.5cm}  \={\tt column 2} \hspace{3.5cm} \={\tt column 3} \\
         {\tt \#name of variable} \>{\tt value of variable (must not be used)} \>{\tt scope} \\ 
         {\tt \#-------------------------------------------------------------------------------------} \\ 
         {\tt \%mainprog} \>{\tt palm.f90} \\
         {\tt \%base\_directory} \>{\tt \$HOME/palm/current\_version/} \>{\tt \textcolor{blue}{\uncover<4->{lcsgih}}} \\ \end{tabbing}};       
   \end{tikzpicture}
   \end{center}
   }
   \begin{itemize}
      \item<3->{The configuration file allows settings for different computers \\ (e.g. \textcolor{green}{local} / \textcolor{red}{remote} host). These are done in different blocks of lines, and these blocks are marked with the so-called \textcolor{blue}{host-identifier} of the respective computer. This identifier is given in column 3. No entry in column 3 means that the respective setting is valid for all computers (hosts).}
   \end{itemize}
\end{frame}

% Folie 12
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ The Configuration File (II)}
   
   \tikzstyle{box} = [rectangle, draw, text width=0.65\textwidth, font=\tiny]
   
   \scriptsize
   \begin{itemize}
      \item<2->{The host identifier string can be freely chosen, but the first characters must match the type of operating system on the respective host:}\\ \par\medskip
      \begin{itemize}\scriptsize
         \item<2->{Linux(-Cluster): \hspace{1.15cm} {\tt lc}}
         \item<2->{IBM-AIX: \hspace{1.9cm} {\tt ibm}}
         \item<2->{NEC-SX: \hspace{2.01cm} {\tt nec}}
      \end{itemize}
      \par\medskip
      \item<3->{Here is an example for settings of compiler names for different hosts: \\
            {\tiny {\tt (compiler\_name}: for compiling MPI-programs, {\tt compiler\_name\_ser}: for compiling serial code)}}
   \end{itemize}
   \uncover<4->{
   \begin{center}
   \begin{tikzpicture}[auto, node distance=0]      
      \node[box](box){ \begin{tabbing} 
         {\tt \%compiler\_name} \hspace{1cm}  \={\tt mpif90} \hspace{3cm} \={\tt lcsgih} \\
         {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt lcsgih} \\
         {\tt \%compiler\_name} \>{\tt mpif90} \>{\tt lcother} \\
         {\tt \%compiler\_name\_ser} \>{\tt f95} \>{\tt lcother} \\
         {\tt \%compiler\_name} \>{\tt ftn} \>{\tt lcxt4} \\
         {\tt \%compiler\_name\_ser} \>{\tt ftn} \>{\tt lcxt4}
         \end{tabbing}};
   \end{tikzpicture}
   \end{center}
   }
   \begin{itemize}
      \item<5->{If value-strings contain blanks, they have to be replaced by colon (\dq:\dq): \\
            {\tiny ({\tt fopts}: compiler options to be used)}}
   \end{itemize}
   \uncover<5->{
   \begin{center}
   \begin{tikzpicture}[auto, node distance=0]      
      \node[box](box){ 
         {\tt \%fopts} \hspace{0.4cm}  {\tt -g:-w:-xT:-O3:-cpp:-r8:-nbs} \hspace{1cm} {\tt lcother parallel}};       
   \end{tikzpicture}
   \end{center}
   }
\end{frame}

% Folie 13
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks}
   
   \small
   \begin{itemize}
      \item<1->{Now edit the configuration file and adjust it for your \textcolor{green}{local} computer. \\ \par\medskip
      For this, you will need informations about all paths where the netCDF- and MPI-libraries reside, as well as the hostname of your \textcolor{green}{local} computer. You can find out the hostname by simply typing the unix-command: \\ \par\medskip
         \qquad {\tt hostname}}\\ \par\medskip
      \item<2->{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.}  
      \item<3->{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.}
   \end{itemize}
\end{frame}

% Folie 14a
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks}
   
   \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny]
   
   \scriptsize
   \begin{itemize}
      \item{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.}
      \item{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.}
   \end{itemize}
      \begin{center}
      \begin{tikzpicture}[auto, node distance=0]      
         \node[box](box){ 
            {\tt \# The next line is just an example. Add your own line below or replace this line.} \\
            {\tt \%host\_identifier  myhostname lcmy} \\
            {\tt \#} \\
            {\tt \# The next block contains all informations for compiling the PALM code} \\
            {\tt \#} \\
            \begin{tabbing} 
            {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /tmp} \hspace{6.0cm} \={\tt <hi> parallel} \\
            {\tt \%compiler\_name} \>{\tt \textcolor{blue}{mpif90}} \>{\tt <hi> parallel} \\
            {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt <hi> parallel} \\
            {\tt \%cpp\_options} \>{\tt \textcolor{orange}{-D\_\_mpi2}:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt <hi> parallel} \\
            {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\
            {\tt \%netcdf\_inc} \>{\tt -I:\textcolor{cyan}{<replace by netcdf include path>}} \>{\tt <hi> parallel} \\
            {\tt \%netcdf\_lib} \>{\tt -L\textcolor{cyan}{<replace by netcdf include path>}:-lnetcdf} \>{\tt <hi> parallel} \\
            {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt <hi> parallel} \\
            {\tt } \>{\tt -I:\textcolor{cyan}{<replace by mpi include path>}} \>{\tt } \\
            {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt <hi> parallel} \\
            {\tt } \>{\tt -L\textcolor{cyan}{<replace by mpi library path>}} \>{\tt } \\
            {\tt \# if you want to use your own hostfile, uncomment next line} \>{\tt } \>{\tt } \\
            {\tt \#\%hostfile} \>{\tt \$base\_directory/.hostfile} \>{\tt <hi> parallel} \\
            {\tt \# if you want this host to be used as a \textcolor{red}{remote} host, uncomment next line} \>{\tt } \>{\tt } \\
            {\tt \#\%remote\_username} \>{\tt <replace by your username om this host>} \>{\tt <hi> parallel}
            \end{tabbing}};
      \end{tikzpicture}
      \end{center}
\end{frame}

% Folie 14b
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks}
   
   \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny]
   
   \scriptsize
   \begin{itemize}
      \item{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.}  
      \item{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.}
   \end{itemize}
      \begin{center}
      \begin{tikzpicture}[auto, node distance=0]      
         \node[box](box){ 
            {\tt \# The next line is just an example. Add your own line below or replace this line.} \\
            {\tt \%host\_identifier  scirocco \textcolor{purple}{lcsci}} \\
            {\tt \#} \\
            {\tt \# The next block contains all informations for compiling the PALM code} \\
            {\tt \#} \\
            \begin{tabbing} 
            {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /tmp} \hspace{6.0cm} \={\tt <hi> parallel} \\
            {\tt \%compiler\_name} \>{\tt \textcolor{blue}{mpif90}} \>{\tt <hi> parallel} \\
            {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt <hi> parallel} \\
            {\tt \%cpp\_options} \>{\tt \textcolor{orange}{-D\_\_mpi2}:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt <hi> parallel} \\
            {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\
            {\tt \%netcdf\_inc} \>{\tt -I:\textcolor{cyan}{<replace by netcdf include path>}} \>{\tt <hi> parallel} \\
            {\tt \%netcdf\_lib} \>{\tt -L\textcolor{cyan}{<replace by netcdf include path>}:-lnetcdf} \>{\tt <hi> parallel} \\
            {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt <hi> parallel} \\
            {\tt } \>{\tt -I:\textcolor{cyan}{<replace by mpi include path>}} \>{\tt } \\
            {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt <hi> parallel} \\
            {\tt } \>{\tt -L\textcolor{cyan}{<replace by mpi library path>}} \>{\tt } \\
            {\tt \# if you want to use your own hostfile, uncomment next line} \>{\tt } \>{\tt } \\
            {\tt \#\%hostfile} \>{\tt \$base\_directory/.hostfile} \>{\tt <hi> parallel} \\
            {\tt \# if you want this host to be used as a \textcolor{red}{remote} host, uncomment next line} \>{\tt } \>{\tt } \\
            {\tt \#\%remote\_username} \>{\tt <replace by your username om this host>} \>{\tt <hi> parallel}
            \end{tabbing}};
      \end{tikzpicture}
      \end{center}
\end{frame}

% Folie 14c
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on Linux Notebooks}
   
   \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny]
   
   \scriptsize
   \begin{itemize}
      \item{The default configuration file assumes that an \textcolor{blue}{Intel FORTRAN compiler} and the \textcolor{orange}{mpich2} - MPI-version is installed on the \textcolor{green}{local} computer.}  
      \item{Please give all respective \textcolor{cyan}{paths} and replace \textless hi\textgreater by your host identifier.}
   \end{itemize}
      \begin{center}
      \begin{tikzpicture}[auto, node distance=0]      
         \node[box](box){ 
            {\tt \# The next line is just an example. Add your own line below or replace this line.} \\
            {\tt \%host\_identifier  scirocco \textcolor{purple}{lcsci}} \\
            {\tt \#} \\
            {\tt \# The next block contains all informations for compiling the PALM code} \\
            {\tt \#} \\
            \begin{tabbing} 
            {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /tmp} \hspace{6.0cm} \={\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt \%compiler\_name} \>{\tt \textcolor{blue}{mpif90}} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt \%cpp\_options} \>{\tt \textcolor{orange}{-D\_\_mpi2}:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\
            {\tt \%netcdf\_inc} \>{\tt -I:\textcolor{cyan}{<replace by netcdf include path>}} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt \%netcdf\_lib} \>{\tt -L\textcolor{cyan}{<replace by netcdf include path>}:-lnetcdf} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt } \>{\tt -I:\textcolor{cyan}{<replace by mpi include path>}} \>{\tt } \\
            {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt } \>{\tt -L\textcolor{cyan}{<replace by mpi library path>}} \>{\tt } \\
            {\tt \# if you want to use your own hostfile, uncomment next line} \>{\tt } \>{\tt } \\
            {\tt \#\%hostfile} \>{\tt \$base\_directory/.hostfile} \>{\tt \textcolor{purple}{lcsci} parallel} \\
            {\tt \# if you want this host to be used as a \textcolor{red}{remote} host, uncomment next line} \>{\tt } \>{\tt } \\
            {\tt \#\%remote\_username} \>{\tt <replace by your username om this host>} \>{\tt \textcolor{purple}{lcsci} parallel}
            \end{tabbing}};
      \end{tikzpicture}
      \end{center}
\end{frame}

% Folie 15
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Configuration on the CUHK PCs}
   
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.15\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt]
   
   \scriptsize
   \begin{itemize}
      \item<1->[1.]{Set environment variables in the respective profile of the user‘s default shell, (which is .bashrc, on the CUHK PCs): \\ \par\medskip
          \uncover<2->{\qquad {\tiny \textcolor{red}{Note: .profile / .bashrc have to be located in \$HOME; recommended text editors are e.g. kate / vi}}} \\ 
          \qquad {\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\
          \qquad {\tt export PATH=\$PALM\_BIN:\$PATH}}\\ \par\medskip
      \item<3->[2.]{Restart the shell. Otherwise settings are not active.}\\ \par\medskip
      \item<4->[3.]{Create your personal configuration file, needed by {\tt mbuild} and {\tt mrun}: \\ \par\medskip
         \qquad {\tt cd ~/palm/current\_version} \\
         \qquad {\tt cp trunk/SCRIPTS/.mrun.config.cuhk .mrun.config} \\ \par\medskip
         \uncover<5->{
         \begin{tikzpicture}[auto, >=latex']
              \hspace{0.5cm}
              \node[yellow3] (home) {\$HOME/};
              \node[yellow3] (palm) [right=0.4cm of home] {palm/};
              \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/};
              \node[green1] (trunk) [right=0.4cm of currentv] {trunk/};
              \node[green1] (scripts) [right=0.4cm of trunk] {SCRIPTS/};
              
              \path[line] (home) -- (palm);
              \path[line] (palm) -- (currentv);
              \path[line] (currentv) -- (trunk);
              \path[line] (trunk) -- (scripts);
              
              \uncover<6->{\draw [->, thick] {(scripts.south) .. controls (8.0,-1.0) and (4.0,-1.0) .. (currentv.south)};}
              
              \node[label, right=0pt of scripts] (scriptlabelbase2) {};
              \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {};
              \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {};
              \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {mrun};
              \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {mbuild};
              \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {...};
         \end{tikzpicture}}}
   \end{itemize}
\end{frame}

% Folie 14a
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Configuring {\tt .mrun.config} on CUHK PCs}
   
   \tikzstyle{box} = [rectangle, draw, text width=0.9\textwidth, font=\tiny]
   
   \scriptsize
   \begin{itemize}
      \item{The only parameter that has to be changed is the hostname.}
      \item{You can find out the hostname by running the program ``hostname'' in your terminal.}
   \end{itemize}
      \begin{center}
      \begin{tikzpicture}[auto, node distance=0]      
         \node[box](box){ 
            {\tt \# The next line is just an example. Add your own line below or replace this line.} \\
            {\tt \%host\_identifier  \textcolor{cyan}{<replace with your hostname>} lccuhk} \\
            {\tt \#} \\
            {\tt \# The next block contains all informations for compiling the PALM code} \\
            {\tt \#} \\
            \begin{tabbing} 
            {\tt \%tmp\_use\_catalog} \hspace{0.3cm} \={\tt /home/student/tmp} \hspace{4.0cm} \={\tt lccuhk parallel} \\
            {\tt \%compiler\_name} \>{\tt mpif90} \>{\tt lccuhk parallel} \\
            {\tt \%compiler\_name\_ser} \>{\tt ifort} \>{\tt lccuhk parallel} \\
            {\tt \%cpp\_options} \>{\tt -D\_\_mpi2:-DMPI\_REAL=MPI\_DOUBLE\_PRECISION:} \>{\tt lccuhk parallel} \\
            {\tt } \>{\tt :-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf} \>{\tt } \\
            {\tt \%netcdf\_inc} \>{\tt -I:/opt/netcdf-3.6.3/include} \>{\tt lccuhk parallel} \\
            {\tt \%netcdf\_lib} \>{\tt -L/opt/netcdf-3.6.3/lib:-lnetcdf} \>{\tt lccuhk parallel} \\
            {\tt \%fopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-convert:little\_endian:} \>{\tt lccuhk parallel} \\
            {\tt } \>{\tt -I:/opt/mpich2/include} \>{\tt } \\
            {\tt \%lopts} \>{\tt -xS:-cpp:-openmp:-r8:-nbs:-Vaxlib:} \>{\tt lccuhk parallel} \\
            {\tt } \>{\tt -L/opt/mpich2/lib} \>{\tt } \\
            {\tt \%remote\_username} \>{\tt student} \>{\tt lccuhk parallel}
            \end{tabbing}};
      \end{tikzpicture}
      \end{center}
\end{frame}

% Folie 16
% \begin{frame}
%     \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Package Configuration on CUHK PCs (II)}
   
%    \tikzstyle{box} = [rectangle, draw, text width=0.8\textwidth, font=\tiny]
   
%    \small
%    \begin{itemize}
%       \item<1->[5.]{Edit the configuration file and replace the string {\tt<replace by your IMUK username>}  by your IMUK username and uncomment the respective lines:\\ \par\medskip
%          \qquad {\tt vi .mrun.config}} \\ \par\medskip
%       \begin{itemize}
%       \item<1->{Old: \\
%    \begin{center}
%    \begin{tikzpicture}[auto, node distance=0]      
%       \node[box](box){ 
%          .\\.\\
%          {\tt \# The next block contains all informations for compiling the PALM code}\\ {\tt\#} \\.\\.\\
%          \begin{tabbing} 
%          {\tt \#\%remote\_username} \hspace{0.2cm}  \={\tt \textcolor{blue}{<replace by your IMUK username>}} \hspace{1.6cm} \={\tt lcmuk parallel} \\
%          {\tt \#\%tmp\_use\_catalog} \>{\tt /localdata/\textcolor{blue}{<replace by your IMUK username>}} \>{\tt lcmuk parallel}
%          \end{tabbing}};
%    \end{tikzpicture}
%    \end{center}
%    }
%    \item<2->{New: \\
%    \begin{center}
%    \begin{tikzpicture}[auto, node distance=0]      
%       \node[box](box){
%          \begin{tabbing}
%          {\tt \%remote\_username} \hspace{0.2cm}  \={\tt \textcolor{blue}{your\_name}} \hspace{4.1cm} \={\tt lcmuk parallel} \\
%          {\tt \%tmp\_use\_catalog} \>{\tt /localdata/\textcolor{blue}{your\_name}} \>{\tt lcmuk parallel}
%          \end{tabbing}};
%    \end{tikzpicture}
%    \end{center}
%    }
%       \end{itemize}
%    \end{itemize}
% \end{frame}

% Folie 17
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Creating the Utility Programs}
   
   \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize]
   \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize]
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny]
   \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.08\textwidth, font=\tiny]
   \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.05\textwidth, font=\tiny]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt]
   
   \scriptsize
   \begin{itemize}
      \item<1->{The shellscript {\tt mrun} which is used to run PALM needs a few more utility programs (written in FORTRAN) and the respective executables have to be created on the local host:\\ \par\smallskip
           \qquad {\tt cd ~/palm/current\_version} \\
           \qquad {\tt mbuild -u -h <hi>}} \\ \par\bigskip
           
           \begin{tikzpicture}[auto, >=latex']
              \node[blanc] (base) {};
              \node[blanc] (basebefore) [below=0.0cm of base] {};
              \node[blanc] (baseafter) [below=2.0cm of base] {};
           \uncover<2->{
              \node[white] (before) [left=1.0cm of basebefore] {\textbf{Before:}};
              
              \node[yellow3] (home) [below=0.3cm of before] {\$HOME/};
              \node[yellow5] (palm) [right=0.4cm of home] {palm/};
              \node[yellow4] (currentv) [right=0.4cm of palm] {current\_version/};
              \node[green2] (trunk) [right=0.4cm of currentv] {trunk/};
              \node[green1] (utils) [right=0.4cm of trunk] {UTIL/};
              
              \path[line] (home) -- (palm);
              \path[line] (palm) -- (currentv);
              \path[line] (currentv) -- (trunk);
              \path[line] (trunk) -- (utils);
              
              \node[label, right=0pt of utils] (utillabelbase2) {};
              \node[label, above=0pt of utillabelbase2] (utillabelbase1) {};
              \node[label, below=0pt of utillabelbase2] (utillabelbase3) {};
              \node[label, right=0pt of utillabelbase1] (utillabel1) {interpret\_config.f90};
              \node[label, right=0pt of utillabelbase2] (utillabel2) {combine\_plot\_fields.f90};
           }
           \uncover<3->{
              \node[white] (after) [left=1.0cm of baseafter] {\textbf{After:}};
              
              \node[yellow3] (home2) [below=0.3cm of after] {\$HOME/};
              \node[yellow5] (palm2) [right=0.4cm of home2] {palm/};
              \node[yellow4] (currentv2) [right=0.4cm of palm2] {current\_version/};
              \node[green2] (trunk2) [right=0.4cm of currentv2] {trunk/};
              \node[green1] (scripts) [right=0.4cm of trunk2] {SCRIPTS/};
              
              \path[line] (home2) -- (palm2);
              \path[line] (palm2) -- (currentv2);
              \path[line] (currentv2) -- (trunk2);
              \path[line] (trunk2) -- (scripts);
              
              \node[label, right=0pt of scripts] (scriptlabelbase2) {};
              \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {};
              \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {};
              \node[label, above=0pt of scriptlabelbase1] (scriptlabelbase0) {};
              \node[label, below=0pt of scriptlabelbase3] (scriptlabelbase4) {};
              \node[label, right=0pt of scriptlabelbase0] (scriptlabel0) {mrun};
              \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {mbuild};
              \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {interpret\_config\_parallel.x};
              \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {combine\_plot\_fields\_parallel.x};
              \node[label, right=0pt of scriptlabelbase4] (scriptlabel4) {...};
           }
           
           \uncover<4->{
              \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase01) {};
              \node[label, right=40pt of scriptlabelbase01] (scriptlabe01) {};
              \node[label, below=0pt of utillabelbase2] (utillabelbase04) {};
              \node[label, right=40pt of utillabelbase04] (utiltlabe04) {};
              
              \draw[->, thick] (utiltlabe04) -- (scriptlabe01);
           }
           \end{tikzpicture}
   \end{itemize}
\end{frame}

% Folie 18
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Pre-Compiling the PALM Code}
   
   \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize]
   \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize]
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny]
   \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.25\textwidth, font=\tiny]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt]
   \tikzstyle{point} = [rectangle, draw, inner sep=0pt,minimum size=0pt,fill=black]
   
   \scriptsize
   \begin{tabbing}
      {\textcolor{blue}{Reason:}} \hspace{0.2cm}  \={Compilation is time consuming (especially when regarding short test runs).}\\
      {\tt } \>{Using pre-compiled files prevents the code from being repeatedly compiled}\\
      {\tt } \>{for each model run.}
      \end{tabbing}
      Pre-compiled files are generated by using the command {\tt mbuild}.\\
      {\tt mbuild} performs the following steps:\\
      \begin{itemize}
      \item<2->{It copies all source code files from trunk/SOURCE to a make depository,
           \begin{tikzpicture}[auto, >=latex']
           \uncover<3->{
              \node[yellow4] (currentv2) {current\_version/};
              
              \node[point] (base) [right=0.2cm of currentv2] {};
              \node[blanc] (base1) [above=0.3cm of base] {};
              \node[blanc] (base2) [below=0.3cm of base] {};
              
              \node[green2] (trunk2) [right=0.1cm of base1] {trunk/};
              \node[green1] (source) [right=0.4cm of trunk2] {SOURCE/};
              
              \path[line] (trunk2) -- (source);
              
              \node[label, right=0pt of source] (scriptlabelbase2) {};
              \node[label, above=0pt of scriptlabelbase2] (scriptlabelbase1) {};
              \node[label, below=0pt of scriptlabelbase2] (scriptlabelbase3) {};
              \node[label, below=0pt of scriptlabelbase3] (scriptlabelbase4) {};
              \node[label, right=0pt of scriptlabelbase1] (scriptlabel1) {Makefile};
              \node[label, right=0pt of scriptlabelbase2] (scriptlabel2) {advec\_particles.f90};
              \node[label, right=0pt of scriptlabelbase3] (scriptlabel3) {advec\_s\_bc.f90};
              \node[label, right=0pt of scriptlabelbase4] (scriptlabel4) {...};
              
              \node[green3] (makedep) [right=0.1cm of base2] {MAKE\_DEPOSITORY\_parallel/};
              
              \path[line] (currentv2) -- (base);
              \path[line] (base.south) |- (trunk2);
              \path[line] (base.north) |- (makedep);
              
              \draw[->, thick] (scriptlabel3) |- (makedep);
           }
           \end{tikzpicture}
      }\\
      \item<4->{It calls the compiler using the {\tt unix} make mechanism. Compilation informations (i.e. files to be translated, dependencies, etc.) are given in file {\tt trunk/SOURCE/Makefile}. {\tt mbuild} transfers compiler options given in {\tt .mrun.config} to Makefile.}\\
      \item<5->{The compiled files (object files with suffix .o) are stored in the make depository. This directory should \textbf{never} be directly modified by the user.}\\
      \item<6->{If more than one block of settings for the \textcolor{green}{local} host (host identifier) is given in {\tt .mrun.config}, {\tt mbuild} creates further depositories, one for each block ({\tt MAKE\_DEPOSITORY\_block1, MAKE\_DEPOSITORY\_block2}, etc.).}\\
   \end{itemize}
\end{frame}

% Folie 19
\begin{frame}
   \frametitle{Installing PALM on the \textcolor{green}{local} Computer \\ Pre-Compiling the PALM Code, Running {\tt mbuild}}
   
   \small
   The pre-compiled PALM code is generated with the command\\ \par\medskip
      \qquad {\tt mbuild -h \textless host identifier\textgreater}\\ \par\medskip
   \begin{itemize}
       \item<2->{Informations will appear on the terminal.} 
       \item<3->{Please read them carefully and answer the questions asked by {\tt mbuild}.}
       \item<4->{You will get continuous informations about the progress of compilation.}
       \item<5->{Compilation on Intel machines may take several minutes. On multicore systems less time is needed,
             because parallel compilation is switched on by default (see setting of environment variable {\tt mopts} in the configuration file).}
       \item<6->{No errors should (hopefully) occur, as long as the previous installation steps have been carried out without errors, and as long as the PALM source code has not yet been modified by yourself.}
   \end{itemize}
\end{frame}

% Folie 20
\begin{frame}
   \frametitle{Checking the PALM Installation (I) \\ on the \textcolor{green}{local} Computer}
   
   \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize]
   \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize]
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny]
   \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.25\textwidth, font=\tiny]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt]
   \tikzstyle{point} = [rectangle, draw, inner sep=0pt,minimum size=0pt,fill=black]
   
   \small
   The installation can be checked by running a short PALM test job (\dq example run\dq) and comparing the output of this job with values from a reference file. \\ \par\medskip
   The test job will be started by using the mrun-tool.\\
   Details about mrun and its options will be explained later. \\ \par\medskip
   \uncover<2->{Pre-requisites on the \textcolor{green}{local} host:}\\
   \begin{itemize}
      \item<2->[1.]{Provide the configuration file {\tt .mrun.config} (already done)}
      \item<3->[2.]{Provide the parameter file for running the test job (needed for steering PALM):\\
         \qquad {\tt mkdir -p JOBS/example\_cbl/INPUT} \\
         \qquad {\tt cp trunk/INSTALL/example\_cbl\_p3d  JOBS/example\_cbl/INPUT/}}
   \end{itemize}
      \begin{center}
        \begin{tikzpicture}[auto, >=latex']
           \uncover<4->{
              \node[yellow4] (currentv2) {current\_version/};
              
              \node[point] (base) [right=0.2cm of currentv2] {};
              \node[blanc] (base1) [above=0.3cm of base] {};
              \node[blanc] (base2) [below=0.3cm of base] {};
              
              \node[green2] (trunk2) [right=0.1cm of base2] {trunk/};
              \node[green1] (instal) [right=0.4cm of trunk2] {INSTAL/};
              
              \path[line] (trunk2) -- (instal);
              
              \node[yellow3] (jobs) [right=0.1cm of base1] {JOBS/};
              \node[yellow4] (example) [right=0.4cm of jobs] {example\_cbl/};
              \node[yellow3] (input) [right=0.4cm of example] {INPUT/};
              
              \path[line] (jobs) -- (example);
              \path[line] (example) -- (input);
              
              \path[line] (currentv2) -- (base);
              \path[line] (base.south) |- (jobs);
              \path[line] (base.north) |- (trunk2);
           }
           \uncover<5->{
              \draw[<-, thick] (input) |- (instal);
           }
        \end{tikzpicture}
      \end{center}
\end{frame}

% Folie 21
\begin{frame}
   \frametitle{Checking the PALM Installation (II) \\ on the \textcolor{green}{local} Computer}
   
   \small
   Now the job can be run and results can be compared with the reference file
   \begin{itemize}
%       \item<2->[1.]{If {\tt mpich2} is used (e.g. on the IMUK-cluster), the MPI-daemon has to be started as a background process: \\ \par\medskip
%          \qquad {\tt mpd \&} } 
      \item<2->{Create and start the (interactive) test run using {\tt mrun}: \\ \par\medskip
         \qquad {\tt mrun -d example\_cbl -K parallel -X2 -T2 -r \dq d3\# ts\#\dq} \\ \par\bigskip
      Confirm the terminal query with \dq y\dq. Messages about the progress of execution will be displayed on the terminal and should end (after about 30 s) with \\ \par\medskip
         \qquad {\tt --\textgreater \quad all actions finished} \\
         \qquad {\tt Bye, bye \textless username\textgreater} !!}
   \end{itemize}
\end{frame}

% Folie 22
\begin{frame}
   \frametitle{Checking the PALM Installation (III) \\ on the \textcolor{green}{local} Computer}
   
   \tikzstyle{blanc} = [rectangle, text width=0\textwidth, font=\scriptsize]
   \tikzstyle{white} = [rectangle, text width=0.1\textwidth, font=\scriptsize]
   \tikzstyle{yellow1} = [rectangle, draw, fill=yellow!100, text width=0.2\textwidth, font=\tiny]
   \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!100, text width=0.3\textwidth, font=\tiny]
   \tikzstyle{yellow3} = [rectangle, draw, fill=yellow!100, text width=0.08\textwidth, font=\tiny]
   \tikzstyle{yellow4} = [rectangle, draw, fill=yellow!100, text width=0.13\textwidth, font=\tiny]
   \tikzstyle{yellow5} = [rectangle, draw, fill=yellow!100, text width=0.05\textwidth, font=\tiny]
   \tikzstyle{green1} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green2} = [rectangle, draw, fill=green!75!black, text width=0.1\textwidth, font=\tiny]
   \tikzstyle{green3} = [rectangle, draw, fill=green!75!black, text width=0.25\textwidth, font=\tiny]
   \tikzstyle{line} = [draw, -]
   \tikzstyle{label} = [rectangle, font=\scriptsize, minimum size=8pt]
   \tikzstyle{point} = [rectangle, draw, inner sep=0pt,minimum size=0pt,fill=black]
   
   \small
   \begin{itemize}
      \item<1->[1.]{Check output files:\\ \par\medskip
      After the above message has appeared, there should be three files in directory: {\tt JOBS/example\_cbl/MONITORING} with names {\tt example\_cbl\_cpu, example\_cbl\_header} and {\tt example\_cbl\_rc}\\
      \begin{center}
        \begin{tikzpicture}[auto, >=latex']
           \uncover<2->{
              \node[yellow4] (currentv) {current\_version/};
              \node[yellow3] (jobs) [right=0.4cm of currentv] {JOBS/};
              \node[yellow4] (example) [right=0.4cm of jobs] {example\_cbl/
              };
              
              \path[line] (currentv) -- (jobs);
              \path[line] (jobs) -- (example);
              
              \node[point] (base) [right=0.2cm of example] {};
              \node[blanc] (base1) [above=0.3cm of base] {};
              \node[blanc] (base2) [below=0.3cm of base] {};
              \node[yellow3] (input) [right=0.1cm of base1] {INPUT/};
              \node[yellow4] (monitoring) [right=0.1cm of base2] {MONITORING/};
              
              \path[line] (example) -- (base);
              \path[line] (base.south) |- (input);
              \path[line] (base.north) |- (monitoring);
           }
        \end{tikzpicture}
      \end{center}
      }
      \item<3->[2.]{Compare the contents of {\tt example\_cbl\_rc} with the contents of a reference file by using the unix command {\tt diff} or, even better, {\tt kdiff3} (if available):\\ \par\medskip
         \qquad {\tt cd JOBS/example\_cbl/MONITORING} \\
         \qquad {\tt diff example\_cbl\_rc ../../../trunk/INSTALL/example\_cbl\_rc}\\ \par\medskip
      \uncover<4->{
      \textcolor{red}{Except run date, time, and small differences in the version/processor numbers, you should not find any difference between these files!}}}
   \end{itemize}
\end{frame}

% Folie 23
\begin{frame}
  \frametitle{Installing PALM on CUHK PCs \\ Step by Step Instructions (I)}
  
  \footnotesize
  \begin{itemize}
     \item<2->[1.]{Log into the CUHK PC using the ``student'' account \\
                   and the password ``fed19pa!m''}
     FORTRAN-compiler, MPI- and netCDF-libraries and all other required software are already installed.
     \item<3->[2.]{Download the PALM package by using subversion: \\ \par\medskip
        \qquad {\tt mkdir -p $\sim$/palm/current\_version} \\
        \qquad {\tt cd $\sim$/palm/current\_version} \\
        \qquad {\tt svn checkout --username seminar\_cuhk \quad \textbackslash} \\
        \qquad \qquad{\tt svn://130.75.105.7/palm/trunk trunk }} 
     \item<4->[3.]{Set environment variables: \\ \par\medskip
        \qquad {\tt export PALM\_BIN=\$HOME/palm/current\_version/trunk/SCRIPTS} \\
        \qquad {\tt export PATH=\$PALM\_BIN:\$PATH} \\ \par\medskip
     Set these variables also in file {\tt .bashrc.}}
  \end{itemize}
\end{frame}

% Folie 24
\begin{frame}
   \frametitle{Installing PALM on CUHK PCs \\ Step by Step Instructions (II)}
   
   \footnotesize
   \begin{itemize}
      \item<1->[4.]{A pre-configured configuration file for the IMUK/HLRN system is available: \\ \par\medskip
         \qquad{\tt cp trunk/SCRIPTS/.mrun.config.cuhk .mrun.config}}\\ \par\medskip
      \item<2->[5.]{Create the utility programs: \\ \par\medskip
         \qquad {\tt mbuild -u -h lccuhk}}\\ \par\medskip
      \item<3->[6.]{Pre-compile the PALM code:\\ \par\medskip
         \qquad{\tt mbuild -h lccuhk}}\\ \par\medskip
      \item<4->[7.]{Provide the parameter file: \\ \par\medskip
         \qquad{\tt mkdir -p JOBS/example\_cbl/INPUT} \\
         \qquad{\tt cp trunk/INSTALL/example\_cbl\_p3d JOBS/example\_cbl/INPUT}}
   \end{itemize}
\end{frame}

% Folie 25
\begin{frame}
   \frametitle{Installing PALM on CUHK PCs \\ Step by Step Instructions (III)}
   
   \footnotesize
   \begin{itemize}
      \item<1->[8.]{Carry out the test run: \\ \par\medskip
         \qquad{\tt mrun -d example\_cbl -K parallel -X2 -T2 -r \dq d3\#\dq}}
      \item<2->[9.]{Check results (after job has finished): \\ \par\medskip
         \qquad{\tt cd JOBS/example\_cbl/MONITORING} \\
         \qquad{\tt kdiff3 example\_cbl\_rc ../../../trunk/INSTALL/example\_cbl\_rc}}
   \end{itemize}
\end{frame}

\end{document}
