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

Last change on this file since 1226 was 1226, checked in by fuhrmann, 11 years ago

several updates in the tutorial

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