source: palm/trunk/TUTORIAL/SOURCE/program_structure.tex @ 1526

Last change on this file since 1526 was 1515, checked in by boeske, 10 years ago

several updates in the tutorial

  • Property svn:keywords set to Id
File size: 57.7 KB
Line 
1% $Id: program_structure.tex 1515 2015-01-02 11:35:51Z keck $
2\input{header_tmp.tex}
3%\input{../header_lectures.tex}
4
5\usepackage[utf8]{inputenc}
6\usepackage{ngerman}
7\usepackage{pgf}
8\usepackage{subfigure}
9\usepackage{units}
10\usepackage{multimedia}
11\newcommand{\event}[1]{\newcommand{\eventname}{#1}}
12\usepackage{xmpmulti}
13\usepackage{tikz}
14\usepackage{pdfcomment}
15\usetikzlibrary{shapes,arrows,positioning}
16\def\Tiny{\fontsize{4pt}{4pt}\selectfont}
17\usepackage{listings}
18\lstset{language=[90]Fortran,
19  basicstyle=\ttfamily \tiny,
20  keywordstyle=\color{black},
21  commentstyle=\color{black},
22  morecomment=[l]{!\ }% Comment only with space after !
23}
24
25
26\institute{Institute of Meteorology and Climatology, Leibniz UniversitÀt Hannover}
27\selectlanguage{english}
28\date{last update: \today}
29\event{PALM Seminar}
30\setbeamertemplate{navigation symbols}{}
31
32\setbeamertemplate{footline}
33  {%
34    \begin{beamercolorbox}[rightskip=-0.1cm]&
35     {\includegraphics[height=0.65cm]{imuk_logo.pdf}\hfill \includegraphics[height=0.65cm]{luh_logo.pdf}}
36    \end{beamercolorbox}
37    \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
38      leftskip=.3cm,rightskip=0.3cm plus1fil]{title in head/foot}%
39      {\leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor} \hfill \eventname \hfill \insertframenumber \; / \inserttotalframenumber}%
40    \end{beamercolorbox}%
41%    \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot}%
42%    \end{beamercolorbox}
43  }
44%\logo{\includegraphics[width=0.3\textwidth]{luhimuk_logo.png}}
45
46\title[PALM Program Structure]{PALM Program Structure}
47\author{PALM group}
48
49
50% Notes:
51% jede subsection bekommt einen punkt im menu (vertikal ausgerichtet.
52% jeder frame in einer subsection bekommt einen punkt (horizontal ausgerichtet)
53\begin{document}
54
55\begin{frame}
56\titlepage
57\end{frame}
58
59\section{PALM Program Structure}
60\subsection{PALM Program Structure}
61
62%Folie 01
63\begin{frame}
64   \frametitle{Contents}
65   \begin{flushleft}
66      This part gives a brief overview about the structure of the PALM code:
67   \end{flushleft}
68   \begin{itemize}
69      \item<2->{Flow chart}
70      \item<3->{Most important variables and how they are declared}
71      \item<4->{Machine dependencies}
72   \end{itemize}
73\end{frame}
74
75%Folie 02
76\begin{frame}[fragile]
77   \frametitle{PALM Code: General Features}
78   \begin{itemize}
79      \item<2->{PALM is written in FORTRAN90. Current version number is 3.10.}
80      \vspace{2.5mm}
81      \item<3->{With some very minor exceptions, the code is using the FORTRAN standard, so it should compile without error on any FORTRAN 2003/2008 compiler. (90/95 may give problems)}
82      \vspace{2.5mm}
83      \item<4->{Data handling between subroutines is mostly done using FORTRAN90-modules instead of using parameter lists.
84      \begin{minipage}{0.5\textwidth}
85         \centering
86         \begin{lstlisting}
87SUBROUTINE parin
88   USE control_parameters, ONLY: ...
89   USE grid_variables, ONLY: ...
90   .
91   .
92         \end{lstlisting}
93      \end{minipage}
94      \begin{minipage}{0.4\textwidth}
95         \centering
96         \begin{lstlisting}
97SUBROUTINE parin( a, b, c, ... )
98   INTEGER(iwp) ::  a, b
99   REAL(wp)     ::  c, ...
100   .
101   .
102         \end{lstlisting}
103      \end{minipage}
104      \mbox{Most modules can be found in file .../trunk/SOURCE/modules.f90}}
105   \end{itemize}
106\end{frame}
107
108%Folie 03
109\begin{frame}
110   \frametitle{PALM Code: General Features}
111   \small
112   \begin{itemize}
113      \item<2->{Machine dependent code segments, e.g. calls of routines from external libraries (e.g. NetCDF or FFTW), which may not be available on some machines, are activated using preprocessor directives.}
114      \item<3->{The serial and parallel (MPI) PALM version is also activated by preprocessor directives.}
115      \item<4->{The code is splitted into several files, most of them containing just one subroutine, e.g. file ``parin.f90'' contains ``SUBROUTINE parin''.}
116      \item<5->{The code includes an interface which can be used to add your own code extensions. Advantage: These code extensions can be reused (normally) for future PALM releases without requiring any changes.}
117   \end{itemize}
118\end{frame}
119
120%Folie 04
121\begin{frame}
122   \frametitle{PALM Flow Chart (I)}
123
124   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
125   \tikzstyle{white2} = [rectangle, text width=0]
126   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=15pt, font=\tiny]
127   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=15pt, font=\tiny]
128   \tikzstyle{line} = [draw, -]
129
130   \begin{tikzpicture}[auto, node distance=0]
131      \uncover<1->{\node [yellow] (PALM) {PALM};}
132      \uncover<1->{\node [white2, right=0.2cm of PALM] (PALMspace) {};}
133     
134      \uncover<2->{\node [yellow, below=0.2cm of PALMspace] (initcoup) {init\_coupling};}
135      \path<2-> [line] (PALM.south) |- (initcoup.west);
136
137      \uncover<3->{\node [yellow, below=0.05cm of initcoup] (localtre) {local\_tremain\_ini};}
138      \path<3-> [line] (PALM.south) |- (localtre.west);
139
140      \uncover<4->{\node [yellow, below=0.05cm of localtre] (initdvrp) {init\_dvrp\_logging};}
141      \path<4-> [line] (PALM.south) |- (initdvrp.west);
142
143      \uncover<5->{\node [yellow, below=0.05cm of initdvrp] (parin) {parin};}
144      \path<5-> [line] (PALM.south) |- (parin.west);
145      \uncover<5->{\node [white, right=0.2cm of parin] (parinspace) {};}
146
147         \uncover<5->{\node [yellow, below=0cm of parinspace] (readvar) {read\_var\_list};}
148         \path<5-> [line,dashed] (parin.south) |- (readvar.west);
149
150         \uncover<5->{\node [yellow, below=0.05cm of readvar] (packageparin) {package\_parin};}
151         \path<5-> [line,dashed] (parin.south) |- (packageparin.west);
152
153          \uncover<5->{\node [green, below=0.05cm of packageparin] (userparin) {user\_parin};}
154          \path<5-> [line] (parin.south) |- (userparin.west);
155
156      \uncover<6->{\node [yellow, below=1.4cm of parin] (initpeg) {init\_pegrid};}
157      \path<6-> [line] (PALM.south) |- (initpeg.west);
158      \uncover<6->{\node [white, right=0.2cm of initpeg] (initpegspace) {};}
159
160      \uncover<7->{\node [yellow, below=0.05cm of initpeg] (initgrid) {init\_grid};}
161      \path<7-> [line] (PALM.south) |- (initgrid.west);
162      \uncover<7->{\node [white, right=0.2cm of initgrid] (initgridspace) {};}
163     
164         \uncover<7->{\node [green, below=0cm of initgridspace] (userinitgrid) {user\_init\_grid};}
165         \path<7-> [line,dashed] (initgrid.south) |- (userinitgrid.west);
166
167      \uncover<1->{\node [white, below=5.8cm of PALM] (continu2) {};}
168      \path<1-> [line,dashed] (PALM.south) |- (continu2.north);
169
170      \uncover<1->{\node [white, below=5.2cm of PALM] (continu1) {};}
171      \path<1-> [line] (PALM.south) |- (continu1.north);
172   \end{tikzpicture}
173\end{frame}
174
175%Folie 05
176\begin{frame}
177   \frametitle{PALM Flow Chart (II)}
178
179   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
180   \tikzstyle{whitelarge} = [rectangle, text width=0.43\textwidth, font=\tiny]
181   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
182   \tikzstyle{white2} = [rectangle, text width=0]
183   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
184   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
185   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
186   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.43\textwidth, minimum size=13pt, font=\tiny]
187   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
188   \tikzstyle{green1} = [rectangle, draw, fill=green!20, text width=0.23\textwidth, minimum size=13pt, font=\tiny]
189   \tikzstyle{line} = [draw, -]
190
191   \begin{tikzpicture}[auto, node distance=0]
192      \uncover<1->{\node [white2] (contino1) {};}
193      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
194
195      \uncover<1->{\node [yellow, right=0.2cm of PALM] (checkpara) {check\_parameters};}
196      \path<1-> [line] (PALM.south) |- (checkpara.west);
197      \uncover<1->{\node [white, right=0.2cm of checkpara] (checkparaspace) {};}
198      \uncover<1->{\node [white, right=0.365cm of checkpara] (checkparaspacelarge) {};}
199 
200          \uncover<2->{\node [green1, below=0cm of checkparaspacelarge] (usercheckdatapr) {user\_check\_data\_output\_pr};}
201          \path<2-> [line] (checkpara.south) |- (usercheckdatapr.west);
202
203          \uncover<2->{\node [green, below=0.52cm of checkparaspace] (usercheckdata) {user\_check\_data\_output};}
204          \path<2-> [line] (checkpara.south) |- (usercheckdata.west);
205
206          \uncover<2->{\node [yellow, below=0.05cm of usercheckdata] (initmasks) {init\_masks};}
207          \path<2-> [line,dashed] (checkpara.south) |- (initmasks.west);
208
209             \uncover<2->{\node [green, right=0.2cm of initmasks] (usercheckdata2) {user\_check\_data\_output};}
210             \path<2-> [line] (initmasks.east) |- (usercheckdata2.west);
211
212          \uncover<2->{\node [yellow, below=0.05cm of initmasks] (usercheckpara) {user\_check\_parameters};}
213          \path<2-> [line] (checkpara.south) |- (usercheckpara.west);
214
215      \uncover<3->{\node [yellow, below=1.9cm of checkpara] (init3d) {init\_3d\_model};}
216      \path<3-> [line] (PALM.south) |- (init3d.west);
217      \uncover<3->{\node [white, right=0.05cm of init3d] (init3dspace) {};}
218      \uncover<3->{\node [whitelarge, right=0.05cm of init3d] (init3dspacelarge) {};}
219
220         \uncover<4->{\node [yellowLarge, below=-0.05cm of init3dspacelarge] (init1d) {init\_1d\_model (calls various subroutines)};}
221         \path<4-> [line,dashed] (init3d.south) |- (init1d.west);
222
223         \uncover<4->{\node [yellow, below=0.5cm of init3dspace] (initslope) {init\_slope};}
224         \path<4-> [line,dashed] (init3d.south) |- (initslope.west);
225
226         \uncover<4->{\node [green, below=0.05cm of initslope] (userinit3d) {user\_init\_3d\_model};}
227         \path<4-> [line,dashed] (init3d.south) |- (userinit3d.west);
228
229         \uncover<4->{\node [yellow, below=0.05cm of userinit3d] (randomfuncini) {random\_function\_ini};}
230         \path<4-> [line] (init3d.south) |- (randomfuncini.west);
231
232         \uncover<4->{\node [yellow, below=0.05cm of randomfuncini] (disturbh) {disturb\_heatflux};}
233         \path<4-> [line,dashed] (init3d.south) |- (disturbh.west);
234
235         \uncover<4->{\node [yellow, below=0.05cm of disturbh] (initrank) {init\_rankine};}
236         \path<4-> [line,dashed] (init3d.south) |- (initrank.west);
237
238            \uncover<4->{\node [yellow, right=0.05cm of initrank] (pres) {pres};}
239            \path<4-> [line] (initrank.east) -- (pres.west);
240            \uncover<4->{\node [white, below=-0.05cm of pres] (presspace) {};}
241
242               \uncover<4->{\node [yellowsmall, right=0.05cm of presspace] (poisfft) {poisfft};}
243               \path<4-> [line] (pres.east) -| (poisfft.north);
244
245               \uncover<4->{\node [yellowsmall, right=0.05cm of poisfft] (sor) {sor};}
246               \path<4-> [line] (pres.east) -| (sor.north);
247
248               \uncover<4->{\node [yellowsmall, right=0.05cm of sor] (poismg) {poismg};}
249               \path<4-> [line] (pres.east) -| (poismg.north);
250
251         \uncover<4->{\node [yellow, below=0.05cm of initrank] (initpt) {init\_pt\_anomaly};}
252         \path<4-> [line,dashed] (init3d.south) |- (initpt.west);
253
254         \uncover<4->{\node [yellow, below=0.05cm of initpt] (readpart) {read\_part\_of\_varlist};}
255         \path<4-> [line] (init3d.south) |- (readpart.west);
256
257      \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};}
258      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
259
260      \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};}
261      \path<1-> [line] (PALM.south) |- (continu1.north);
262
263      \uncover<4->{\node [white2, below=6.6cm of checkpara] (continu3) {};}
264      \path<4-> [line,dashed] (init3d.south) |- (continu3.north);
265
266      \uncover<4->{\node [white2, below=6.0cm of checkpara] (continu4) {};}
267      \path<4-> [line] (init3d.south) |- (continu4.north);
268
269   \end{tikzpicture}
270\end{frame}
271
272%Folie 06
273\begin{frame}
274   \frametitle{PALM Flow Chart (III)}
275
276   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
277   \tikzstyle{whitelarge} = [rectangle, text width=0.43\textwidth, font=\tiny]
278   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
279   \tikzstyle{white2} = [rectangle, text width=0]
280   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
281   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
282   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
283   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.43\textwidth, minimum size=13pt, font=\tiny]
284   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
285   \tikzstyle{green1} = [rectangle, draw, fill=green!20, text width=0.23\textwidth, minimum size=13pt, font=\tiny]
286   \tikzstyle{line} = [draw, -]
287
288   \begin{tikzpicture}[auto, node distance=0]
289      \uncover<1->{\node [white2] (contino1) {};}
290      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
291
292       \uncover<1->{\node [yellow, right=0.2cm of PALM] (init3d) {init\_3d\_model};}
293       \path<1-> [line] (PALM.south) |- (init3d.west);
294       \uncover<1->{\node [white, right=0.05cm of init3d] (init3dspace) {};}
295       \uncover<1->{\node [whitelarge, right=0.05cm of init3d] (init3dspacelarge) {};}
296
297         \uncover<2->{\node [yellow, below=0.05cm of init3dspace] (read3d) {read\_3d\_binary};}
298         \path<2-> [line,dashed] (init3d.south) |- (read3d.west);
299
300            \uncover<2->{\node [green, right=0.05cm of read3d] (userreadrestart) {user\_read\_restart\_data};}
301            \path<2-> [line] (read3d.east) -- (userreadrestart.west);
302
303         \uncover<2->{\node [yellow, below=0.5cm of init3dspace] (initslope) {init\_slope};}
304         \path<2-> [line,dashed] (init3d.south) |- (initslope.west);
305
306         \uncover<2->{\node [yellow, below=0.05cm of initslope] (initadvec) {init\_advec};}
307         \path<2-> [line] (init3d.south) |- (initadvec.west);
308
309         \uncover<2->{\node [yellow, below=0.05cm of initadvec] (distfield) {disturb\_field};}
310         \path<2-> [line,dashed] (init3d.south) |- (distfield.west);
311
312         \uncover<2->{\node [yellow, below=0.05cm of distfield] (pres) {pres};}
313         \path<2-> [line,dashed] (init3d.south) |- (pres.west);
314         \uncover<2->{\node [white, below=-0.05cm of pres] (presspace) {};}
315
316            \uncover<2->{\node [yellowsmall, right=0.05cm of presspace] (poisfft) {poisfft};}
317            \path<2-> [line] (pres.east) -| (poisfft.north);
318
319            \uncover<2->{\node [yellowsmall, right=0.05cm of poisfft] (sor) {sor};}
320            \path<2-> [line] (pres.east) -| (sor.north);
321
322            \uncover<2->{\node [yellowsmall, right=0.05cm of sor] (poismg) {poismg};}
323            \path<2-> [line] (pres.east) -| (poismg.north);
324
325         \uncover<2->{\node [green, below=0.05cm of pres] (userinitplant) {user\_init\_plant\_canopy};}
326         \path<2-> [line,dashed] (init3d.south) |- (userinitplant.west);
327
328         \uncover<2->{\node [yellow, below=0.05cm of userinitplant] (initdvrp) {init\_dvrp};}
329         \path<2-> [line,dashed] (init3d.south) |- (initdvrp.west);
330
331         \uncover<2->{\node [yellow, below=0.05cm of initdvrp] (initocean) {init\_ocean};}
332         \path<2-> [line,dashed] (init3d.south) |- (initocean.west);
333
334            \uncover<2->{\node [yellow, right=0.05cm of initocean] (eqnstsea) {eqn\_state\_seawater};}
335            \path<2-> [line] (initocean.east) -| (eqnstsea.west);
336
337         \uncover<2->{\node [yellow, below=0.05cm of initocean] (initcloudphys) {init\_cloud\_physics};}
338         \path<2-> [line,dashed] (init3d.south) |- (initcloudphys.west);
339
340        \uncover<2->{\node [yellow, below=0.05cm of initcloudphys] (lpminit) {lpm\_init};}
341        \path<2-> [line,dashed] (init3d.south) |- (lpminit.west);
342        \uncover<2->{\node [white, right=0.2cm of lpminit] (lpminspace) {};}
343
344            \uncover<2->{\node [yellow, below=0.05cm of lpminspace] (lpmreadrestart) {lpm\_read\_restart\_file};}
345            \path<2-> [line,dashed] (lpminit.south) |- (lpmreadrestart.west);
346
347            \uncover<2->{\node [green, below=0.05cm of lpmreadrestart] (userlpmin) {user\_lpm\_init};}
348            \path<2-> [line] (lpminit.south) |- (userlpmin.west);
349
350      \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};}
351      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
352
353      \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};}
354      \path<1-> [line] (PALM.south) |- (continu1.north);
355
356      \uncover<2->{\node [white2, below=6.6cm of init3d] (continu3) {};}
357      \path<2-> [line,dashed] (init3d.south) |- (continu3.north);
358
359      \uncover<2->{\node [white2, below=6.0cm of init3d] (continu4) {};}
360      \path<2-> [line] (init3d.south) |- (continu4.north);
361
362   \end{tikzpicture}
363\end{frame}
364
365%Folie 07
366\begin{frame}
367   \frametitle{PALM Flow Chart (IV)}
368
369   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
370   \tikzstyle{whitelarge} = [rectangle, text width=0.43\textwidth, font=\tiny]
371   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
372   \tikzstyle{white2} = [rectangle, text width=0]
373   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
374   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
375   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
376   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.43\textwidth, minimum size=13pt, font=\tiny]
377   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
378   \tikzstyle{green1} = [rectangle, draw, fill=green!20, text width=0.23\textwidth, minimum size=13pt, font=\tiny]
379   \tikzstyle{line} = [draw, -]
380
381   \begin{tikzpicture}[auto, node distance=0]
382      \uncover<1->{\node [white2] (contino1) {};}
383      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
384
385       \uncover<2->{\node [yellow, right=0.2cm of PALM] (init3d) {init\_3d\_model};}
386       \path<2-> [line] (PALM.south) |- (init3d.west);
387       \uncover<2->{\node [white, right=0.05cm of init3d] (init3dspace) {};}
388       \uncover<2->{\node [whitelarge, right=0.05cm of init3d] (init3dspacelarge) {};}
389
390       \uncover<3->{\node [yellow, below=0.05cm of init3dspace] (lpminit) {lpm\_init};}
391       \path<3-> [line,dashed] (init3d.south) |- (lpminit.west);
392       \uncover<3->{\node [white, right=0.2cm of lpminit] (lpminspace) {};}
393
394            \uncover<4->{\node [yellow, below=0.05cm of lpminspace] (lpmsortar) {lpm\_sort\_arrays};}
395            \path<4-> [line,dashed] (lpminit.south) |- (lpmsortar.west);
396
397            \uncover<5->{\node [yellow, below=0.05cm of lpmsortar] (dataoutpdvrp) {data\_output\_dvrp};}
398            \path<5-> [line,dashed] (lpminit.south) |- (dataoutpdvrp.west);
399            \uncover<5->{\node [white, right=0.2cm of dataoutpdvrp] (dataoutpdvrpspace) {};}
400
401               \uncover<6->{\node [green, below=0.05cm of dataoutpdvrpspace] (usercoltap) {user\_dvrp\_coltab};}
402               \path<6-> [line,dashed] (dataoutpdvrp.south) |- (usercoltap.west);
403
404               \uncover<7->{\node [green, below=0.05cm of usercoltap] (userdataoutdvrp) {user\_data\_output\_dvrp};}
405               \path<7-> [line] (dataoutpdvrp.south) |- (userdataoutdvrp.west);
406
407       \uncover<8->{\node [yellow, below=1cm of lpminit] (wsinit) {ws\_init};}
408       \path<8-> [line] (init3d.south) |- (wsinit.west);
409
410       \uncover<9->{\node [green, below=0.05cm of wsinit] (userinit) {user\_init};}
411       \path<9-> [line] (init3d.south) |- (userinit.west);
412
413       \uncover<10->{\node [yellow, below=2.5cm of init3d] (header) {header};}
414       \path<10-> [line] (PALM.south) |- (header.west);
415
416          \uncover<11->{\node [green, right=0.05cm of header] (userheader) {user\_header};}
417          \path<11-> [line] (header.east) |- (userheader.west);
418
419       \uncover<12->{\node [yellow, below=0.05cm of header] (dataoutput2d) {data\_output\_2d};}
420       \path<12-> [line,dashed] (PALM.south) |- (dataoutput2d.west);
421
422          \uncover<13->{\node [green, right=0.05cm of dataoutput2d] (userdataoutput2d) {user\_data\_output\_2d};}
423          \path<13-> [line] (dataoutput2d.east) |- (userdataoutput2d.west);
424
425       \uncover<14->{\node [yellow, below=0.05cm of dataoutput2d] (dataoutput3d) {data\_output\_3d};}
426       \path<14-> [line,dashed] (PALM.south) |- (dataoutput3d.west);
427
428          \uncover<15->{\node [green, right=0.05cm of dataoutput3d] (userdataoutput3d) {user\_data\_output\_3d};}
429          \path<15-> [line] (dataoutput3d.east) |- (userdataoutput3d.west);
430
431       \uncover<16->{\node [yellow, below=0.05cm of dataoutput3d] (timeintegr) {time\_integration};}
432       \path<16-> [line] (PALM.south) |- (timeintegr.west);
433       \uncover<16->{\node [white, right=0.2cm of timeintegr] (timeintspace) {};}
434
435          \uncover<17->{\node [yellow, below=0.05cm of timeintspace] (runcontr) {run\_control};}
436          \path<17-> [line] (timeintegr.south) |- (runcontr.west);
437          \uncover<17->{\node [white, right=0.2cm of runcontr] (runcontrspace) {};}
438
439             \uncover<18->{\node [yellow, below=0.05cm of runcontrspace] (flowstat1) {flow\_statistics};}
440             \path<18-> [line,dashed] (runcontr.south) |- (flowstat1.west);
441
442                \uncover<19->{\node [green, right=0.05cm of flowstat1] (userstat1) {user\_statistics};}
443                \path<19-> [line] (flowstat1.east) |- (userstat1.west);
444
445          \uncover<20->{\node [yellow, below=0.5cm of runcontr] (surfcoup) {surface\_coupler};}
446          \path<20-> [line,dashed] (timeintegr.south) |- (surfcoup.west);
447
448
449      \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};}
450      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
451
452      \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};}
453      \path<1-> [line] (PALM.south) |- (continu1.north);
454
455   \end{tikzpicture}
456\end{frame}
457
458
459%Folie 08
460\begin{frame}
461   \frametitle{PALM Flow Chart (V)}
462
463   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
464   \tikzstyle{whitelarge} = [rectangle, text width=0.3\textwidth, font=\tiny]
465   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
466   \tikzstyle{white2} = [rectangle, text width=0]
467   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
468   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
469   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
470   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
471   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
472   \tikzstyle{green1} = [rectangle, draw, fill=green!20, text width=0.23\textwidth, minimum size=13pt, font=\tiny]
473   \tikzstyle{greenLarge} = [rectangle, draw, fill=green!20, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
474   \tikzstyle{line} = [draw, -]
475
476   \tikzstyle{Bigwhite} = [rectangle, text width=0.63\textwidth, minimum size=35pt, font=\tiny]
477   \tikzstyle{Bigbox} = [rectangle, draw, fill=gray!20, text width=0.65\textwidth, minimum size=33pt, font=\tiny]
478   \tikzstyle{redsmall} = [rectangle, draw, align=center, fill=red!100, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
479   \tikzstyle{boxinfo} = [rectangle, align=center, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
480   \tikzstyle{whitebox} = [rectangle, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
481   
482   %"align=center" hinzufÃŒgen, um in den boxen zu zentrieren.
483   
484   \begin{tikzpicture}[auto, node distance=0]
485      \uncover<1->{\node [white2] (contino1) {};}
486      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
487
488      \uncover<1->{\node [yellow, right=0.2cm of PALM] (timeintegr) {time\_integration};}
489      \uncover<1->{\node [whitebox, right=0.3cm of PALM] (timeintegrline) {};}
490      \path<1-> [line] (PALM.south) |- (timeintegr.west);
491      \uncover<1->{\node [white, right=0.05cm of timeintegr] (timeintegrspace) {};}
492      \uncover<1->{\node [whitelarge, right=0.05cm of timeintegr] (timeintegrspacelarge) {};}
493      \uncover<1->{\node [Bigwhite, right=0.05cm of timeintegr] (timeintegrspacebox) {};}
494
495         \uncover<1->{\node [yellow, below=-0.05cm of timeintegrspace] (timestep) {timestep};}
496         \path<1-> [line] (timeintegr.south) |- (timestep.west);
497
498            \uncover<1->{\node [yellow, right=0.05cm of timestep] (globminmax) {global\_min\_max};}
499            \path<1-> [line] (timestep.east) |- (globminmax.west);
500
501         \uncover<1->{\node [greenLarge, below=0.5cm of timeintegrspacelarge] (useractions) {user\_actions (before\_timestep)};}
502         \path<1-> [line] (timeintegr.south) |- (useractions.west);
503
504         \uncover<1->{\node [yellowLarge, below=0.05cm of useractions] (timestepscheme) {timestep\_scheme\_steering};}
505         \path<1-> [line] (timeintegr.south) |- (timestepscheme.west);
506
507         \uncover<1->{\node [Bigbox, below=1.3cm of timeintegrspacebox] (bigbox) {};}
508%         \path<1-> [line] (timeintegr.south) |- (bigbox.west);
509         \uncover<1->{\node [white, below=1.6cm of timeintegrline] (boxlinespace) {};}
510         \path<1-> [line] (timeintegr.south) |- (boxlinespace.north);
511
512            \uncover<1->{\node [yellowLarge, below=0.4cm of timestepscheme] (prognosticequve) {prognostic\_equations\_vector};}
513            \uncover<1->{\node [yellowLarge, right=0.05cm of prognosticequve] (prognosticequca) {prognostic\_equations\_cache};}
514            \uncover<1->{\node [yellowLarge, below=0.025cm of prognosticequca] (prognosticequacc) {prognostic\_equations\_acc};}
515            \coordinate [right=0.2cm of prognosticequacc] (testdummyhaha);
516%            \uncover<1->{\node [yellowLarge, below=0.05cm of prognosticequca] (prognosticequve) {prognostic\_equations\_vector};}
517            \uncover<1->{\node [boxinfo, below=-0.025cm of prognosticequve] (Boxinfo) {For details, see \\ PALM Flow Chart (VIII).};}
518            \path<1-> [line] (boxlinespace.north) -| (prognosticequca.north);
519            \path<1-> [line] (boxlinespace.north) -| (prognosticequve.north);
520            \path<1-> [line] (boxlinespace.north) -| (testdummyhaha) -- (prognosticequacc.east);
521%            \uncover<1->{\node [redsmall, above=0.3cm of prognosticequca] (redadv) {standard\\advection};}
522
523         \uncover<1->{\node [yellow, below=3.1cm of timeintegrspace] (lpm) {lpm};}
524         \path<1-> [line,dashed] (timeintegr.south) |- (lpm.west) ;
525
526            \uncover<1->{\node [yellowLarge, right=0.05cm of lpm] (lpmmore) {user\_lpm\_advec + more};}
527            \path<1-> [line] (lpm.east) -- (lpmmore.west);
528
529         \uncover<1->{\node [yellowLarge, below=2.15cm of timestepscheme] (interactiondrop) {interaction\_droplets\_ptq};}
530         \path<1-> [line,dashed] (interactiondrop.west) -| (timeintegr.south);
531
532         \uncover<1->{\node [yellow, below=0.65cm of lpm] (boundconds) {boundary\_conds};}
533         \path<1-> [line,dashed] (boundconds.west) -| (timeintegr.south);
534
535         \uncover<1->{\node [yellow, below=0.05cm of boundconds] (swaptimelevel) {swap\_timelevel};}
536         \path<1-> [line] (swaptimelevel.west) -| (timeintegr.south);
537
538         \uncover<1->{\node [yellow, below=0.05cm of swaptimelevel] (inflowturb) {inflow\_turbulence};}
539         \path<1-> [line,dashed] (inflowturb.west) -| (timeintegr.south);
540
541         \uncover<1->{\node [yellow, below=0.05cm of inflowturb] (distfield) {disturb\_field};}
542         \path<1-> [line,dashed] (distfield.west) -| (timeintegr.south);
543
544      \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};}
545      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
546
547      \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};}
548      \path<1-> [line] (PALM.south) |- (continu1.north);
549   \end{tikzpicture}
550\end{frame}
551
552%Folie 09
553\begin{frame}
554   \frametitle{PALM Flow Chart (VI)}
555
556   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
557   \tikzstyle{whitelarge} = [rectangle, text width=0.3\textwidth, font=\tiny]
558   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
559   \tikzstyle{white2} = [rectangle, text width=0]
560   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
561   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
562   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
563   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny]
564   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
565   \tikzstyle{greenLarge} = [rectangle, draw, fill=green!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny]
566   \tikzstyle{line} = [draw, -]
567   \tikzstyle{linered} = [draw, color=red, -]
568   \tikzstyle{Bigwhite} = [rectangle, text width=0.63\textwidth, minimum size=35pt, font=\tiny]
569   \tikzstyle{Bigbox} = [rectangle, draw, fill=gray!20, text width=0.65\textwidth, minimum size=33pt, font=\tiny]
570   \tikzstyle{redsmall} = [rectangle, draw, align=center, fill=red!100, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
571   \tikzstyle{boxinfo} = [rectangle, align=center, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
572   \tikzstyle{whitebox} = [rectangle, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
573   
574   %"align=center" hinzufÃŒgen, um in den boxen zu zentrieren.
575   
576   \begin{tikzpicture}[auto, node distance=0]
577      \uncover<1->{\node [white2] (contino1) {};}
578      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
579
580      \uncover<1->{\node [yellow, right=0.2cm of PALM] (timeintegr) {time\_integration};}
581      \path<1-> [line] (PALM.south) |- (timeintegr.west);
582      \uncover<1->{\node [white, right=0.05cm of timeintegr] (timeintegrspace) {};}
583      \uncover<1->{\node [whitelarge, right=0.05cm of timeintegr] (timeintegrspacelarge) {};}
584
585         \uncover<1->{\node [yellow, below=-0.05cm of timeintegrspace] (pres) {pres};}
586         \path<1-> [line] (timeintegr.south) |- (pres.west);
587         \uncover<1->{\node [white, below=-0.05cm of pres] (presspace) {};}
588
589            \uncover<1->{\node [yellowsmall, right=0.05cm of presspace] (poisfft) {poisfft};}
590            \path<1-> [line] (pres.east) -| (poisfft.north);
591
592            \uncover<1->{\node [yellowsmall, right=0.05cm of poisfft] (sor) {sor};}
593            \path<1-> [line] (pres.east) -| (sor.north);
594
595            \uncover<1->{\node [yellowsmall, right=0.05cm of sor] (poismg) {poismg};}
596            \path<1-> [line] (pres.east) -| (poismg.north);
597
598         \uncover<1->{\node [yellowLarge, below=0.8cm of timeintegrspacelarge] (calcliquidwatercontent) {calc\_liquid\_water\_content};}
599         \path<1-> [line,dashed] (timeintegr.south) |- (calcliquidwatercontent.west);
600
601         \uncover<1->{\node [yellow, below=0.9cm of pres] (computevpt) {compute\_vpt};}
602         \path<1-> [line,dashed] (timeintegr.south) |- (computevpt.west);
603
604         \uncover<1->{\node [yellow, below=0.05cm of computevpt] (prandtlfluxes) {prandtl\_fluxes};}
605         \path<1-> [line,dashed] (timeintegr.south) |- (prandtlfluxes.west);
606
607         \uncover<1->{\node [yellow, below=0.05cm of prandtlfluxes] (diffusivities) {diffusivities};}
608         \path<1-> [line,dashed] (timeintegr.south) |- (diffusivities.west);
609
610         \uncover<1->{\node [greenLarge, below=2.88cm of timeintegrspacelarge] (useractionsafter) {user\_actions (after\_integration)};}
611         \path<1-> [line] (timeintegr.south) |- (useractionsafter.west);
612
613         \uncover<1->{\node [yellow, below=0.575cm of diffusivities] (checkforrestart) {check\_for\_restart};}
614         \path<1-> [line,dashed] (timeintegr.south) |- (checkforrestart.west);
615
616            \uncover<1->{\node [yellow, right=0.05cm of checkforrestart] (localtremain) {local\_tremain};}
617            \path<1-> [line] (checkforrestart.east) -- (localtremain.west);
618
619         \uncover<1->{\node [yellow, below=1.1cm of diffusivities] (flowstatistics) {flow\_statistics};}
620         \path<1-> [line,dashed] (timeintegr.south) |- (flowstatistics.west);
621
622            \uncover<1->{\node [green, right=0.05cm of flowstatistics] (userstat) {user\_statistics};}
623            \path<1-> [line] (flowstatistics.east) -- (userstat.west);
624
625         \uncover<1->{\node [yellow, below=0.05cm of flowstatistics] (sumup3d) {sum\_up\_3d\_data};}
626         \path<1-> [line,dashed] (timeintegr.south) |- (sumup3d.west);
627
628            \uncover<1->{\node [greenLarge, right=0.05cm of sumup3d] (user3ddataav) {user\_3d\_data\_averaging};}
629            \path<1-> [line] (sumup3d.east) -- (user3ddataav.west);
630
631         \uncover<1->{\node [yellow, below=0.05cm of sumup3d] (calcspec) {calc\_spectra};}
632         \path<1-> [line,dashed] (timeintegr.south) |- (calcspec.west);
633
634            \uncover<1->{\node [green, right=0.05cm of calcspec] (userspec) {user\_spectra};}
635            \path<1-> [line] (calcspec.east) -- (userspec.west);
636
637      \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};}
638      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
639
640      \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};}
641      \path<1-> [line] (PALM.south) |- (continu1.north);
642   \end{tikzpicture}
643\end{frame}
644
645%Folie 10
646\begin{frame}
647   \frametitle{PALM Flow Chart (VII)}
648
649   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
650   \tikzstyle{whitelarge} = [rectangle, text width=0.3\textwidth, font=\tiny]
651   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
652   \tikzstyle{white2} = [rectangle, text width=0]
653   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
654   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
655   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
656   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny]
657   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
658   \tikzstyle{greenLarge} = [rectangle, draw, fill=green!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny]
659   \tikzstyle{line} = [draw, -]
660   \tikzstyle{linered} = [draw, color=red, -]
661   \tikzstyle{Bigwhite} = [rectangle, text width=0.63\textwidth, minimum size=35pt, font=\tiny]
662   \tikzstyle{Bigbox} = [rectangle, draw, fill=gray!20, text width=0.65\textwidth, minimum size=33pt, font=\tiny]
663   \tikzstyle{redsmall} = [rectangle, draw, align=center, fill=red!100, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
664   \tikzstyle{boxinfo} = [rectangle, align=center, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
665   \tikzstyle{whitebox} = [rectangle, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
666   
667   %"align=center" hinzufÃŒgen, um in den boxen zu zentrieren.
668   
669   \begin{tikzpicture}[auto, node distance=0]
670      \uncover<1->{\node [white2] (contino1) {};}
671      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
672
673      \uncover<1->{\node [yellow, right=0.2cm of PALM] (timeintegr) {time\_integration};}
674      \path<1-> [line] (PALM.south) |- (timeintegr.west);
675      \uncover<1->{\node [white, right=0.05cm of timeintegr] (timeintegrspace) {};}
676      \uncover<1->{\node [whitelarge, right=0.05cm of timeintegr] (timeintegrspacelarge) {};}
677
678         \uncover<1->{\node [yellow, below=-0.05cm of timeintegrspace] (runcontr) {run\_control};}
679         \path<1-> [line,dashed] (timeintegr.south) |- (runcontr.west);
680         \uncover<1->{\node [white, right=0.2cm of runcontr] (runcontrspace) {};}
681
682             \uncover<1->{\node [yellow, below=0.05cm of runcontrspace] (flowstat1) {flow\_statistics};}
683             \path<1-> [line,dashed] (runcontr.south) |- (flowstat1.west);
684
685                \uncover<1->{\node [green, right=0.05cm of flowstat1] (userstat1) {user\_statistics};}
686                \path<1-> [line] (flowstat1.east) |- (userstat1.west);
687
688         \uncover<1->{\node [yellow, below=1cm of timeintegrspace] (print1d) {print\_1d};}
689         \path<1-> [line,dashed] (timeintegr.south) |- (print1d.west);
690
691         \uncover<1->{\node [yellow, below=0.05cm of print1d] (dataoutp) {data\_output\_***};}
692         \path<1-> [line,dashed] (timeintegr.south) |- (dataoutp.west);
693
694         \uncover<1->{\node [greenLarge, below=2.15cm of timeintegrspacelarge] (useractionsaftert) {user\_actions (after\_timestep)};}
695         \path<1-> [line] (timeintegr.south) |- (useractionsaftert.west);
696
697      \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};}
698      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
699
700      \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};}
701      \path<1-> [line] (PALM.south) |- (continu1.north);
702   \end{tikzpicture}
703\end{frame}
704
705
706%Folie 11
707\begin{frame}
708   \frametitle{PALM Flow Chart (VIII)}
709
710   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
711   \tikzstyle{whitelarge} = [rectangle, text width=0.3\textwidth, font=\tiny]
712   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
713   \tikzstyle{white2} = [rectangle, text width=0]
714   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.18\textwidth, minimum size=12pt, font=\tiny]
715   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
716   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.255\textwidth, minimum size=12pt, font=\tiny]
717   \tikzstyle{yellowLarge} = [rectangle, draw, align=center, fill=yellow!20, text width=0.32\textwidth, minimum size=12pt, font=\scriptsize]
718   \tikzstyle{line} = [draw, -]
719   \tikzstyle{linered} = [draw, color=red, -]
720   \tikzstyle{Bigwhite} = [rectangle, text width=0.63\textwidth, minimum size=35pt, font=\tiny]
721   \tikzstyle{Bigbox} = [rectangle, draw, fill=gray!20, text width=1\textwidth, minimum size=183pt, font=\tiny]
722   \tikzstyle{redsmall} = [rectangle, draw, align=center, fill=red!100, text width=0.18\textwidth, minimum size=12pt, font=\tiny]
723   \tikzstyle{boxinfo} = [rectangle, align=center, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
724   \tikzstyle{whitebox} = [rectangle, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
725   \tikzstyle{bigbox} = [rectangle, draw, fill=white!100, text width=0.22\textwidth, minimum size=12pt, font=\tiny]
726   \tikzstyle{bigbox2} = [rectangle, draw, align=center, fill=white!100, text width=0.29\textwidth, minimum size=12pt, font=\tiny]
727   
728   \tikzstyle{framebox} = [rectangle, draw, text width=0.2\textwidth, minimum size=104pt, font=\tiny]
729   \tikzstyle{Endbox} = [rectangle, draw, fill=gray!20, text width=0.21\textwidth, minimum size=12pt, font=\tiny]
730   \tikzstyle{Endbox2} = [rectangle, draw, fill=gray!20, text width=0.23\textwidth, minimum size=12pt, font=\tiny]
731   
732   %"align=center" hinzufÃŒgen, um in den boxen zu zentrieren.
733   
734   \begin{tikzpicture}[auto, node distance=0, >=stealth]
735
736      \uncover<1->{\node [Bigbox] (bigbox) {};}
737
738      \uncover<1->{\node [yellow, above=-0.75cm of bigbox] (calcmeanptprofile) {calc\_mean\_pt\_profile};}
739
740%      \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationsnoopt) {prognostic\_equations\_noopt};}
741      \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationscache) {prognostic\_equations\_cache};}
742      \uncover<1->{\node [yellowLarge, right=0.5cm of calcmeanptprofile] (prognosticequationsvector) {prognostic\_equations\_vector};}
743      \uncover<1->{\node [yellowLarge, below=0.1cm of prognosticequationsvector] (prognosticequationsacc) {prognostic\_equations\_acc};}
744      \uncover<1->{\node [yellow, below=-0.05cm of calcmeanptprofile] (calcradiation) {calc\_radiation};}
745      \uncover<1->{\node [yellow, below=-0.05cm of calcradiation] (impactoflatentheat) {impact\_of\_latent\_heat};}
746      \uncover<1->{\node [yellow, below=-0.05cm of impactoflatentheat] (calcprecipitation) {calc\_precipitation};}
747      \uncover<1->{\node [yellow, below=-0.05cm of calcprecipitation] (productioneinit) {production\_e\_init};}
748     
749      \uncover<1->{\node [whitesmall, left=-1.4cm of productioneinit] (productioneinitspace1) {};}
750      \uncover<1->{\node [whitesmall, below=0cm of productioneinitspace1] (productioneinitspace2) {};}
751
752      \uncover<1->{\node [bigbox, below=0.05cm of prognosticequationscache] (listingscache) {
753         \texttt{\linespread {0.7}\selectfont\noindent
754            DO i=nxl,nxr\\
755            \quad DO j=nys,nyn\\
756            \quad \quad CALL \textcolor{blue}{u-subr(i,j)}\\
757            \quad \quad CALL \textcolor{blue}{v-subr(i,j)}\\
758            \quad \quad CALL \textcolor{blue}{w-subr(i,j)}\\
759            \quad \quad CALL \textcolor{blue}{pt-subr(i,j)}\\
760            \quad \quad CALL \textcolor{blue}{q or }\\
761            \quad \quad \hphantom{CALL} \textcolor{blue}{s-subr(i,j)}\\
762            \quad \quad CALL \textcolor{blue}{e-subr(i,j)}\\
763            \quad ENDDO\\
764            ENDDO\\
765         }
766      };}
767     
768      \uncover<1->{\node [bigbox, below=0.05cm of prognosticequationsacc] (listingsvector) {
769         \texttt{\linespread {0.7}\selectfont\noindent
770            CALL \textcolor{blue}{u-subr}\\
771            CALL \textcolor{blue}{v-subr}\\
772            .\\
773            .\\
774            .\\
775%             !within subroutines:\\
776%             DO i=nxl,nxr\\
777%             \quad DO j=nys,nyn\\
778%             \quad \quad DO k=nzb+1,nzt\\
779%             \quad \quad \quad \quad ...\\
780%             \quad \quad ENDDO\\
781%             \quad ENDDO\\
782%             ENDDO\\
783         }
784      };}
785      \uncover<1->{\node [bigbox2, below=-0.25cm of productioneinitspace2] (foreachvariable) {
786         \textcolor{blue}{
787            \textbf{\underline{For each variable:}}\\
788            u-, v-, w-component,\\
789            pt, q or s, sa, e (SGS-TKE)
790         }
791      };}
792
793      \uncover<1->{\node [whitesmall, right=-2.08cm of foreachvariable] (foreachvariablespace1) {};}
794      \uncover<1->{\node [whitesmall, below=-0.18cm of foreachvariablespace1] (foreachvariablespace2) {};}
795
796      \uncover<1->{\node [yellowlarge, below=0.05cm of foreachvariablespace2] (advecuvws) {advec\_\{uvws\}};}
797      \path<1-> [line] (advecuvws.west) -| (foreachvariable.west);
798
799      \uncover<1->{\node [yellowlarge, below=-0.05cm of advecuvws] (diffusionuvwse) {diffusion\_\{uvwse\}};}
800      \path<1-> [line] (diffusionuvwse.west) -| (foreachvariable.west);
801
802      \uncover<1->{\node [yellowlarge, below=-0.05cm of diffusionuvwse] (coriolis) {coriolis};}
803      \path<1-> [line,dashed] (coriolis.west) -| (foreachvariable.west);
804
805      \uncover<1->{\node [yellowlarge, below=-0.05cm of coriolis] (buoyancy) {buoyancy};}
806      \path<1-> [line,dashed] (buoyancy.west) -| (foreachvariable.west);
807
808      \uncover<1->{\node [yellowlarge, below=-0.05cm of buoyancy] (useractionstend) {\mbox{user\_actions (i,j,***-tendency)}};}
809      \path<1-> [line] (useractionstend.west) -| (foreachvariable.west);
810
811      \uncover<1->{\node [yellowlarge, below=-0.05cm of useractionstend] (productione) {production\_e};}
812      \path<1-> [line,dashed] (productione.west) -| (foreachvariable.west);
813
814      \uncover<1->{\node [framebox, below=-1.025cm of foreachvariable] (foreachvariableframe) {};}
815      \uncover<1->{\draw [<-,line width=5pt, color=blue] (1,0.2) -- (1.5,1);}
816      \uncover<1->{\draw [<-,line width=5pt, color=blue] (-1.54,0.2) -- (-2.04,1);}
817
818
819
820      \uncover<2->{\node [Endbox, below=1.5cm of listingscache] (endboxcache) {
821         \texttt{\linespread {0.7}\selectfont\noindent
822            !within subroutines:\\
823            DO k=nzb+1,nzt\\
824            \quad \quad \textcolor{blue}{tend(k,j,i)=...}\\
825            ENDDO\\
826         }
827      };}
828
829      \uncover<2->{\node [Endbox2, below=2.0cm of listingsvector] (endboxvec) {
830         \texttt{\linespread {0.7}\selectfont\noindent
831            !within subroutines:\\
832            DO i = nxl, nxr \\
833            \quad DO j = nys, nyn \\
834            \quad \quad DO k=nzb+1,nzt\\
835            \quad \quad \quad \textcolor{blue}{tend(k,j,i)=...}\\
836            \quad \quad ENDDO \\
837            \quad ENDDO \\
838            ENDDO\\
839         }
840      };}
841
842      \uncover<2->{\draw [<-,thick] (endboxcache.north) -- (listingscache.south);}
843      \uncover<2->{\draw [<-,thick] (endboxvec.north) -- (listingsvector.south);}
844
845   \end{tikzpicture}
846\end{frame}
847
848%Folie 12
849\begin{frame}
850   \frametitle{PALM Flow Chart (IX)}
851
852   \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny]
853   \tikzstyle{whitelarge} = [rectangle, text width=0.3\textwidth, font=\tiny]
854   \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
855   \tikzstyle{white2} = [rectangle, text width=0]
856   \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
857   \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny]
858   \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
859   \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny]
860   \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny]
861   \tikzstyle{line} = [draw, -]
862   \tikzstyle{linered} = [draw, color=red, -]
863   \tikzstyle{Bigwhite} = [rectangle, text width=0.63\textwidth, minimum size=35pt, font=\tiny]
864   \tikzstyle{Bigbox} = [rectangle, draw, fill=gray!20, text width=0.65\textwidth, minimum size=33pt, font=\tiny]
865   \tikzstyle{redsmall} = [rectangle, draw, align=center, fill=red!100, text width=0.08\textwidth, minimum size=12pt, font=\tiny]
866   \tikzstyle{boxinfo} = [rectangle, align=center, text width=0.3\textwidth, minimum size=12pt, font=\tiny]
867   \tikzstyle{whitebox} = [rectangle, text width=0.2\textwidth, minimum size=12pt, font=\tiny]
868   
869   %"align=center" hinzufÃŒgen, um in den boxen zu zentrieren.
870   
871   \begin{tikzpicture}[auto, node distance=0]
872      \uncover<1->{\node [white2] (contino1) {};}
873      \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};}
874
875      \uncover<1->{\node [yellow, right=0.2cm of PALM] (timeintegr) {time\_integration};}
876      \path<1-> [line] (PALM.south) |- (timeintegr.west);
877      \uncover<1->{\node [white, right=0.05cm of timeintegr] (timeintegrspace) {};}
878      \uncover<1->{\node [whitelarge, right=0.05cm of timeintegr] (timeintegrspacelarge) {};}
879      \uncover<1->{\node [white, below=0.8cm of timeintegr] (boxlinespace) {};}
880      \uncover<1->{\node [white, below=1.3cm of timeintegr] (boxlinespacedash) {};}
881      \path<1-> [line] (timeintegr.south) |- (boxlinespace.north);
882      \path<1-> [line,dashed] (timeintegr.south) |- (boxlinespacedash.north);
883
884
885      \uncover<1->{\node [yellow, below=2cm of timeintegr] (write3dbinary) {write\_3d\_binary};}
886      \path<1-> [line,dashed] (PALM.south) |- (write3dbinary.west);
887
888         \uncover<1->{\node [yellow, right=0.05cm of write3dbinary] (writevarlist) {write\_var\_list};}
889         \path<1-> [line] (write3dbinary.east) -- (writevarlist.west);
890
891      \uncover<1->{\node [yellow, below=0.05cm of write3dbinary] (writeparticles) {lpm\_write\_restart\_file};}
892      \path<1-> [line] (PALM.south) |- (writeparticles.west);
893
894      \uncover<1->{\node [yellow, below=0.05cm of writeparticles] (header) {header};}
895      \path<1-> [line] (PALM.south) |- (header.west);
896
897         \uncover<1->{\node [green, right=0.05cm of header] (userheader) {user\_header};}
898         \path<1-> [line] (header.east) -- (userheader.west);
899
900      \uncover<1->{\node [green, below=0.05cm of header] (userlastactions) {user\_last\_actions};}
901      \path<1-> [line] (PALM.south) |- (userlastactions.west);
902
903      \uncover<1->{\node [yellow, below=0.05cm of userlastactions] (cpustatistics) {cpu\_statistics};}
904      \path<1-> [line] (PALM.south) |- (cpustatistics.west);
905
906      \uncover<1->{\node [white2, below=5.6cm of PALM] (continu2) {};}
907      \path<1-> [line,dashed] (contino1.south) |- (continu2.north);
908
909      \uncover<1->{\node [white2, below=5.0cm of PALM] (continu1) {};}
910      \path<1-> [line] (PALM.south) |- (continu1.north);
911   \end{tikzpicture}
912\end{frame}
913
914%Folie 13
915\begin{frame}[fragile]
916   \frametitle{Important Variables and Their Declaration}
917   \begin{itemize}
918      \item<2->{3D-arrays of prognostic variables are named $\Psi$, and $\Psi_p$ for time level $t$, and $t+\Delta t$, respectively, with $\Psi = u$, $v$, $w$, $pt$, $q$, $e$, $sa$}
919      \vspace{2.5mm}
920      \item<3->{They are by default declared as $\Psi$($z$,$y$,$x$) or $\Psi$($k$,$j$,$i$), e.g.\\
921      \begin{minipage}{0.2\textwidth}
922         with\\\\
923      \end{minipage}
924      \begin{minipage}{0.7\textwidth}
925         \centering
926         \begin{lstlisting}
927u(nzb:nzt+1,nysg:nyng,nxlg:nxrg)
928
929
930nysg = nys - nbgp,  nyng = nyn + nbgp
931nxlg = nxl - nbgp,  nxrg = nxr + nbgp
932nzb, nzt (bottom, top)
933nys, nyn (south, north)
934nxl, nxr (left, right)
935         \end{lstlisting}
936      \end{minipage}\\
937      as the index limits of the (sub-)domain.\\ nbgp is the number of ghost points which depends on the advection scheme (nbgp = 3 for the default Wicker-Skamarock scheme).
938      }
939   \end{itemize}
940\end{frame}
941
942%Folie 14
943\begin{frame}[fragile]
944   \frametitle{Important Variables and Their Declaration}
945   \begin{itemize}
946      \item<1->{If only one process/core is used, then\\
947      \begin{minipage}{0.2\textwidth}
948         \quad \\\\
949      \end{minipage}
950      \begin{minipage}{0.7\textwidth}
951         \centering
952         \begin{lstlisting}
953nxl = 0; nxr = nx
954nys = 0; nyn = ny
955         \end{lstlisting}
956      \end{minipage}\\
957      }
958      \item<2->{For speed optimization, most of the 3D-variables are declared as pointers, e.g.\\
959      \begin{minipage}{0.2\textwidth}
960         \quad \\\\
961      \end{minipage}
962      \begin{minipage}{0.7\textwidth}
963         \centering
964         \begin{lstlisting}
965REAL(wp), DIMENSION(:,:,:), POINTER ::  u, u_p, v, v_p, ...
966         \end{lstlisting}
967      \end{minipage}\\
968      This does not affect the usage of these variables in the code in (almost) any way.}
969      \vspace{1.0mm}
970      \item<3->{A pointer free version can be activated with preprocessor-option \texttt{-D\_\_nopointer}.}
971   \end{itemize}
972\end{frame}
973
974%Folie 15
975\begin{frame}[fragile]
976   \frametitle{Some Other Frequently Used Variables}
977
978\begin{table}[htbp]
979  \centering
980%  \caption{Add caption}
981    \begin{tabular}{|l|l|p{0.22\linewidth}|l|}
982    \hline
983    variable & index bounds & meaning & comment\\
984    \hline
985    \hline
986    \texttt{\tiny zu }   & \texttt{\tiny nzb:nzt+1 }& \tiny heights of the scalar (u,v) grid levels & \texttt{\tiny zu(0)=-zu(1)}\\
987    \hline
988    \texttt{\tiny zw }   & \texttt{\tiny nzb:nzt+1 }& \tiny heights of the w grid level & \texttt{\tiny zw(0)=0 }\\
989    \hline
990    \texttt{\tiny dzu }  & \texttt{\tiny 1:nzt+1 }& \tiny vertical grid spacings between scalar grid levels & \texttt{\tiny dzu(k)=zu(k)-zu(k-1)}\\
991    \hline
992    \texttt{\tiny ddzu } & \texttt{\tiny 1:nzt+1 }& \tiny inverse of grid spacings & \texttt{\tiny ddzu(k)=1.0/dzu(k)}\\
993    \hline
994    \texttt{\tiny dx  }  &       & {\tiny grid spacing along x} &  \\
995    \hline
996    \texttt{\tiny ddx }  &       & {\tiny inverse of dx} & \texttt{\tiny ddx=1.0/dx }\\
997    \hline
998    \texttt{\tiny current\_timestep\_number} &       & {\tiny timestep counter} &  \\
999    \hline
1000    \texttt{\tiny simulated\_time }&       & {\tiny simulated time in seconds} &  \\
1001    \hline
1002    \end{tabular}%
1003%  \label{tab:addlabel}%
1004\end{table}%
1005\end{frame}
1006
1007
1008%Folie 16
1009\begin{frame}[fragile]
1010   \frametitle{Preprocessor Directives (I)}
1011   \begin{itemize}
1012      \item<1->{Preprocessor directives are special lines in the code which allows to compile alternative parts of the code depending on so-called \textbf{define-string} switches.\\ Code example:\\
1013      \begin{minipage}{0.01\textwidth}
1014         \quad \\\\
1015      \end{minipage}
1016      \begin{minipage}{0.8\textwidth}
1017         \centering
1018         \begin{lstlisting}
1019#if defined( __nopointer )
1020REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: e, e_p, ...
1021#else
1022REAL(wp), DIMENSION(:,:,:), POINTER :: e, e_p, ...
1023#endif
1024         \end{lstlisting}
1025      \end{minipage}\\
1026      \onslide<2->If now the compiler is called e.g.\\
1027      \begin{minipage}{0.01\textwidth}
1028         \quad \\\\
1029      \end{minipage}
1030      \begin{minipage}{0.8\textwidth}
1031         \centering
1032         \begin{lstlisting}[basicstyle=\ttfamily \scriptsize]
1033ifort -cpp -D __nopointer ... (other options)
1034         \end{lstlisting}
1035      \end{minipage}\\
1036      then the line containing ``\texttt{\tiny ..., ALLOCATABLE, TARGET :: ...}'' is compiled. \\If the compiler call is\\
1037      \begin{minipage}{0.01\textwidth}
1038         \quad \\\\
1039      \end{minipage}
1040      \begin{minipage}{0.8\textwidth}
1041         \centering
1042         \begin{lstlisting}[basicstyle=\ttfamily \scriptsize]
1043ifort -cpp ... (other options)
1044         \end{lstlisting}
1045      \end{minipage}\\
1046      the line containing ``\texttt{\tiny ..., POINTER :: ...}'' is compiled.
1047      }
1048   \end{itemize}
1049\end{frame}
1050
1051
1052%Folie 17
1053\begin{frame}[fragile]
1054   \frametitle{Preprocessor Directives (II)}
1055   \begin{itemize}
1056      \item<1->{The preprocessor directives require to include the compiler option ``\texttt{\scriptsize-cpp}'' in any way. Otherwise, the compilation will give error messages. \textbf{The option has to be given in the configuration file} 
1057                \texttt{\scriptsize .mrun.config} in the \texttt{\scriptsize \%cpp\_options} line. \textbf{Different compilers may require different options!}}\\
1058
1059      \item<2->{Define-string switches can be combined using logical AND / OR operators \&\& / $\lvert \lvert$.\\
1060      \begin{minipage}{0.2\textwidth}
1061         \quad \\\\
1062      \end{minipage}
1063      \begin{minipage}{0.7\textwidth}
1064         \centering
1065         \begin{lstlisting}[basicstyle=\ttfamily \scriptsize]
1066#if defined ( __abc  &&  __def )
1067         \end{lstlisting}
1068      \end{minipage}
1069      }
1070   \end{itemize}
1071\end{frame}
1072
1073
1074%Folie 18
1075\begin{frame}[fragile]
1076   \frametitle{Preprocessor Directives (III)}
1077   In the PALM code, define-string switches are used for following reasons:
1078   \begin{itemize}
1079      \item<2->{To switch between system dependent subroutines for:\\
1080      \begin{itemize}
1081         \item<2->{\texttt{\scriptsize \_\_ibm}} \quad IBM-Regatta systems\\
1082         \item<2->{\texttt{\scriptsize \_\_lc}}\;\: \quad Linux clusters\\
1083         \item<2->{\texttt{\scriptsize \_\_nec}} \quad NEC-SX systems\\
1084      \end{itemize}
1085      Switches are set automatically depending on the host identifier string given with mrun-option ``\texttt{\scriptsize-h}'',\\ eg. ``\texttt{\scriptsize-h lclocal}'' sets ``\texttt{\scriptsize-D \_\_lc}''}
1086      \item<3->{To switch between the serial and the parallel code:\\
1087      \begin{itemize}
1088         \item<3->{\texttt{\scriptsize \_\_parallel}}
1089      \end{itemize}
1090      This switch is set by mrun-option ``\texttt{\scriptsize-K parallel}''.}
1091   \end{itemize}
1092\end{frame}
1093
1094
1095%Folie 19
1096\begin{frame}[fragile]
1097   \frametitle{Preprocessor Directives (IV)}
1098   \small
1099   In the PALM code, define-string switches are additionally used for following reasons:
1100   \begin{itemize}
1101      \item<1->{To enable usage of special software packages which are not included in the compilation process by default\\
1102      \begin{itemize}
1103         \item<1->{\texttt{\scriptsize \_\_dvrp\_graphics}} \quad 3D visualization system (currently out of\\ \hspace{24.5mm} order)\\
1104         \item<1->{\texttt{\scriptsize \_\_spectra}} \hspace{10.7mm} calculation and output of power spectra\\
1105      \end{itemize}
1106      Switches are activated with mrun-option ``\texttt{\scriptsize-p}'', \mbox{eg. ``\texttt{\scriptsize-p} ``\texttt{\scriptsize spectra dvrp\_graphics}''''}}
1107      \item<2->{To enable special features
1108      \begin{itemize}
1109         \item<1->{\texttt{\scriptsize \_\_openacc}} \quad activates call of external routines required for\\ \hspace{15.7mm} OpenACC programming\\
1110         \item<1->{\texttt{\scriptsize \_\_netcdf, \_\_netcdf4, \_\_netcdf\_parallel}} \quad NetCDF I/O with\\ \hspace{15.7mm} different NetCDF versions\\
1111      \end{itemize}
1112      }
1113   \end{itemize}
1114    {\small \quad\\ \quad\\ \quad}\\ \quad  \\ \quad %nicht fragen, was das soll!! Mir ist leider nichts bsseres eingefallen um den Satz unter der Überschrift deckungsgleich auf beiden Folien zu haben.
1115\end{frame}
1116
1117
1118\lstset{language=[90]Fortran,
1119  basicstyle=\ttfamily \scriptsize,
1120  keywordstyle=\color{black},
1121  commentstyle=\color{black},
1122  morecomment=[l]{!\ }% Comment only with space after !
1123}
1124
1125%Folie 20
1126\begin{frame}[fragile]
1127   \frametitle{Preprocessor Directives (V)}
1128   \small
1129   \begin{itemize}
1130      \item<1->{Preprocessor directives are also used for string replacement in the code.\\ 
1131      \ \\
1132      Example:\\A compiler call with preprocessor option\\
1133      \begin{minipage}{0.2\textwidth}
1134         \quad \\\\
1135      \end{minipage}
1136      \begin{minipage}{0.7\textwidth}
1137         \centering
1138         \begin{lstlisting}
1139ifort -cpp -Dabcd=efgh
1140         \end{lstlisting}
1141      \end{minipage}
1142      will replace all strings ``\texttt{\scriptsize abcd}'' in the code with ``\texttt{\scriptsize efgh}'' \textbf{before} the code is compiled.\\
1143      \ \\
1144      This is used in PALM to change the MPI\_REAL datatypes (which are 4 byte long by default), to 8 bytes. The respective cpp-directives are given in the configuration file \texttt{\scriptsize .mrun.config.}:\\
1145      \begin{minipage}{0.01\textwidth}
1146         \quad \\\\
1147      \end{minipage}
1148      \begin{minipage}{0.7\textwidth}
1149         \centering
1150         \begin{lstlisting}
1151%cpp_options -cpp:-DMPI_REAL=MPI_DOUBLE_PRECISION:
1152             -DMPI_2REAL=MPI_2DOUBLE_PRECISION: ....
1153         \end{lstlisting}
1154      \end{minipage}
1155      }
1156   \end{itemize}
1157\end{frame}
1158
1159\end{document}
Note: See TracBrowser for help on using the repository browser.