1 | % $Id: program_structure.tex 1234 2013-09-25 06:17:49Z witha $ |
---|
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} |
---|
92 | SUBROUTINE 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} |
---|
102 | SUBROUTINE 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 | |
---|
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-> [line] (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 | |
---|
733 | \uncover<1->{\node [yellow, above=-0.75cm of bigbox] (calcmeanptprofile) {calc\_mean\_pt\_profile};} |
---|
734 | |
---|
735 | % \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationsnoopt) {prognostic\_equations\_noopt};} |
---|
736 | \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationscache) {prognostic\_equations\_cache};} |
---|
737 | \uncover<1->{\node [yellowLarge, right=0.5cm of calcmeanptprofile] (prognosticequationsvector) {prognostic\_equations\_vector};} |
---|
738 | |
---|
739 | \uncover<1->{\node [yellow, below=-0.05cm of calcmeanptprofile] (calcradiation) {calc\_radiation};} |
---|
740 | \uncover<1->{\node [yellow, below=-0.05cm of calcradiation] (impactoflatentheat) {impact\_of\_latent\_heat};} |
---|
741 | \uncover<1->{\node [yellow, below=-0.05cm of impactoflatentheat] (calcprecipitation) {calc\_precipitation};} |
---|
742 | \uncover<1->{\node [yellow, below=-0.05cm of calcprecipitation] (productioneinit) {production\_e\_init};} |
---|
743 | |
---|
744 | \uncover<1->{\node [whitesmall, left=-1.4cm of productioneinit] (productioneinitspace1) {};} |
---|
745 | \uncover<1->{\node [whitesmall, below=0cm of productioneinitspace1] (productioneinitspace2) {};} |
---|
746 | |
---|
747 | \uncover<1->{\node [bigbox, below=0.05cm of prognosticequationscache] (listingscache) { |
---|
748 | \texttt{\linespread {0.7}\selectfont\noindent |
---|
749 | DO i=nxl,nxr\\ |
---|
750 | \quad DO j=nys,nyn\\ |
---|
751 | \quad \quad CALL \textcolor{blue}{u-subr}\\ |
---|
752 | \quad \quad CALL \textcolor{blue}{v-subr}\\ |
---|
753 | \quad \quad CALL \textcolor{blue}{w-subr}\\ |
---|
754 | \quad \quad CALL \textcolor{blue}{pt-subr}\\ |
---|
755 | \quad \quad CALL \textcolor{blue}{q or s-subr}\\ |
---|
756 | \quad \quad CALL \textcolor{blue}{e-subr}\\ |
---|
757 | \quad ENDDO\\ |
---|
758 | ENDDO\\ |
---|
759 | } |
---|
760 | };} |
---|
761 | |
---|
762 | \uncover<1->{\node [bigbox, below=0.05cm of prognosticequationsvector] (listingsvector) { |
---|
763 | \texttt{\linespread {0.7}\selectfont\noindent |
---|
764 | CALL \textcolor{blue}{u-subr}\\ |
---|
765 | CALL \textcolor{blue}{v-subr}\\ |
---|
766 | .\\ |
---|
767 | .\\ |
---|
768 | .\\ |
---|
769 | % !within subroutines:\\ |
---|
770 | % DO i=nxl,nxr\\ |
---|
771 | % \quad DO j=nys,nyn\\ |
---|
772 | % \quad \quad DO k=nzb+1,nzt\\ |
---|
773 | % \quad \quad \quad \quad ...\\ |
---|
774 | % \quad \quad ENDDO\\ |
---|
775 | % \quad ENDDO\\ |
---|
776 | % ENDDO\\ |
---|
777 | } |
---|
778 | };} |
---|
779 | \uncover<1->{\node [bigbox2, below=-0.25cm of productioneinitspace2] (foreachvariable) { |
---|
780 | \textcolor{blue}{ |
---|
781 | \textbf{\underline{For each variable:}}\\ |
---|
782 | u-, v-, w-component,\\ |
---|
783 | pt, q or s, sa, e (SGS-TKE) |
---|
784 | } |
---|
785 | };} |
---|
786 | |
---|
787 | \uncover<1->{\node [whitesmall, right=-2.08cm of foreachvariable] (foreachvariablespace1) {};} |
---|
788 | \uncover<1->{\node [whitesmall, below=-0.18cm of foreachvariablespace1] (foreachvariablespace2) {};} |
---|
789 | |
---|
790 | \uncover<1->{\node [yellowlarge, below=0.05cm of foreachvariablespace2] (advecuvws) {advec\_\{uvws\}};} |
---|
791 | \path<1-> [line] (advecuvws.west) -| (foreachvariable.west); |
---|
792 | |
---|
793 | \uncover<1->{\node [yellowlarge, below=-0.05cm of advecuvws] (diffusionuvwse) {diffusion\_\{uvwse\}};} |
---|
794 | \path<1-> [line] (diffusionuvwse.west) -| (foreachvariable.west); |
---|
795 | |
---|
796 | \uncover<1->{\node [yellowlarge, below=-0.05cm of diffusionuvwse] (coriolis) {coriolis};} |
---|
797 | \path<1-> [line,dashed] (coriolis.west) -| (foreachvariable.west); |
---|
798 | |
---|
799 | \uncover<1->{\node [yellowlarge, below=-0.05cm of coriolis] (buoyancy) {buoyancy};} |
---|
800 | \path<1-> [line,dashed] (buoyancy.west) -| (foreachvariable.west); |
---|
801 | |
---|
802 | \uncover<1->{\node [yellowlarge, below=-0.05cm of buoyancy] (useractionstend) {\mbox{user\_actions (i,j,***-tendency)}};} |
---|
803 | \path<1-> [line] (useractionstend.west) -| (foreachvariable.west); |
---|
804 | |
---|
805 | \uncover<1->{\node [yellowlarge, below=-0.05cm of useractionstend] (productione) {production\_e};} |
---|
806 | \path<1-> [line,dashed] (productione.west) -| (foreachvariable.west); |
---|
807 | |
---|
808 | \uncover<1->{\node [framebox, below=-1.025cm of foreachvariable] (foreachvariableframe) {};} |
---|
809 | \uncover<1->{\draw [<-,line width=5pt, color=blue] (1,0.2) -- (1.5,1);} |
---|
810 | \uncover<1->{\draw [<-,line width=5pt, color=blue] (-1.54,0.2) -- (-2.04,1);} |
---|
811 | |
---|
812 | |
---|
813 | |
---|
814 | \uncover<2->{\node [Endbox, below=1.5cm of listingscache] (endboxcache) { |
---|
815 | \texttt{\linespread {0.7}\selectfont\noindent |
---|
816 | !within subroutines:\\ |
---|
817 | DO k=nzb+1,nzt\\ |
---|
818 | \quad \quad \textcolor{blue}{...}\\ |
---|
819 | ENDDO\\ |
---|
820 | } |
---|
821 | };} |
---|
822 | |
---|
823 | \uncover<2->{\node [Endbox, below=2.5cm of listingsvector] (endboxvec) { |
---|
824 | \texttt{\linespread {0.7}\selectfont\noindent |
---|
825 | !within subroutines:\\ |
---|
826 | DO i = nxl, nxr \\ |
---|
827 | \quad DO j = nys, nyn \\ |
---|
828 | \quad \quad DO k=nzb+1,nzt\\ |
---|
829 | \quad \quad \quad \textcolor{blue}{...}\\ |
---|
830 | \quad \quad ENDDO \\ |
---|
831 | \quad ENDDO \\ |
---|
832 | ENDDO\\ |
---|
833 | } |
---|
834 | };} |
---|
835 | |
---|
836 | \uncover<2->{\draw [<-,thick] (endboxcache.north) -- (listingscache.south);} |
---|
837 | \uncover<2->{\draw [<-,thick] (endboxvec.north) -- (listingsvector.south);} |
---|
838 | |
---|
839 | \end{tikzpicture} |
---|
840 | \end{frame} |
---|
841 | |
---|
842 | %Folie 13 |
---|
843 | \begin{frame} |
---|
844 | \frametitle{PALM Flow Chart (IX)} |
---|
845 | |
---|
846 | \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny] |
---|
847 | \tikzstyle{whitelarge} = [rectangle, text width=0.3\textwidth, font=\tiny] |
---|
848 | \tikzstyle{whitesmall} = [rectangle, text width=0.08\textwidth, minimum size=13pt, font=\tiny] |
---|
849 | \tikzstyle{white2} = [rectangle, text width=0] |
---|
850 | \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] |
---|
851 | \tikzstyle{yellowsmall} = [rectangle, draw, fill=yellow!20, text width=0.08\textwidth, minimum size=13pt, font=\tiny] |
---|
852 | \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] |
---|
853 | \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny] |
---|
854 | \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] |
---|
855 | \tikzstyle{line} = [draw, -] |
---|
856 | \tikzstyle{linered} = [draw, color=red, -] |
---|
857 | \tikzstyle{Bigwhite} = [rectangle, text width=0.63\textwidth, minimum size=35pt, font=\tiny] |
---|
858 | \tikzstyle{Bigbox} = [rectangle, draw, fill=gray!20, text width=0.65\textwidth, minimum size=33pt, font=\tiny] |
---|
859 | \tikzstyle{redsmall} = [rectangle, draw, align=center, fill=red!100, text width=0.08\textwidth, minimum size=12pt, font=\tiny] |
---|
860 | \tikzstyle{boxinfo} = [rectangle, align=center, text width=0.3\textwidth, minimum size=12pt, font=\tiny] |
---|
861 | \tikzstyle{whitebox} = [rectangle, text width=0.2\textwidth, minimum size=12pt, font=\tiny] |
---|
862 | |
---|
863 | %"align=center" hinzufÃŒgen, um in den boxen zu zentrieren. |
---|
864 | |
---|
865 | \begin{tikzpicture}[auto, node distance=0] |
---|
866 | \uncover<1->{\node [white2] (contino1) {};} |
---|
867 | \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};} |
---|
868 | |
---|
869 | \uncover<1->{\node [yellow, right=0.2cm of PALM] (timeintegr) {time\_integration};} |
---|
870 | \path<1-> [line] (PALM.south) |- (timeintegr.west); |
---|
871 | \uncover<1->{\node [white, right=0.05cm of timeintegr] (timeintegrspace) {};} |
---|
872 | \uncover<1->{\node [whitelarge, right=0.05cm of timeintegr] (timeintegrspacelarge) {};} |
---|
873 | \uncover<1->{\node [white, below=0.8cm of timeintegr] (boxlinespace) {};} |
---|
874 | \uncover<1->{\node [white, below=1.3cm of timeintegr] (boxlinespacedash) {};} |
---|
875 | \path<1-> [line] (timeintegr.south) |- (boxlinespace.north); |
---|
876 | \path<1-> [line,dashed] (timeintegr.south) |- (boxlinespacedash.north); |
---|
877 | |
---|
878 | |
---|
879 | \uncover<1->{\node [yellow, below=2cm of timeintegr] (write3dbinary) {write\_3d\_binary};} |
---|
880 | \path<1-> [line,dashed] (PALM.south) |- (write3dbinary.west); |
---|
881 | |
---|
882 | \uncover<1->{\node [yellow, right=0.05cm of write3dbinary] (writevarlist) {write\_var\_list};} |
---|
883 | \path<1-> [line] (write3dbinary.east) -- (writevarlist.west); |
---|
884 | |
---|
885 | \uncover<1->{\node [yellow, below=0.05cm of write3dbinary] (writeparticles) {lpm\_write\_restart\_file};} |
---|
886 | \path<1-> [line] (PALM.south) |- (writeparticles.west); |
---|
887 | |
---|
888 | \uncover<1->{\node [yellow, below=0.05cm of writeparticles] (header) {header};} |
---|
889 | \path<1-> [line] (PALM.south) |- (header.west); |
---|
890 | |
---|
891 | \uncover<1->{\node [green, right=0.05cm of header] (userheader) {user\_header};} |
---|
892 | \path<1-> [line] (header.east) -- (userheader.west); |
---|
893 | |
---|
894 | \uncover<1->{\node [green, below=0.05cm of header] (userlastactions) {user\_last\_actions};} |
---|
895 | \path<1-> [line] (PALM.south) |- (userlastactions.west); |
---|
896 | |
---|
897 | \uncover<1->{\node [yellow, below=0.05cm of userlastactions] (cpustatistics) {cpu\_statistics};} |
---|
898 | \path<1-> [line] (PALM.south) |- (cpustatistics.west); |
---|
899 | |
---|
900 | \uncover<1->{\node [white2, below=5.6cm of PALM] (continu2) {};} |
---|
901 | \path<1-> [line,dashed] (contino1.south) |- (continu2.north); |
---|
902 | |
---|
903 | \uncover<1->{\node [white2, below=5.0cm of PALM] (continu1) {};} |
---|
904 | \path<1-> [line] (PALM.south) |- (continu1.north); |
---|
905 | \end{tikzpicture} |
---|
906 | \end{frame} |
---|
907 | |
---|
908 | %Folie 14 |
---|
909 | \begin{frame}[fragile] |
---|
910 | \frametitle{Important Variables and Their Declaration} |
---|
911 | \begin{itemize} |
---|
912 | \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$} |
---|
913 | \item<3->{They are by default declared as $\Psi$($z$,$y$,$x$) or $\Psi$($k$,$j$,$i$), e.g.\\ |
---|
914 | \begin{minipage}{0.2\textwidth} |
---|
915 | with\\\\ |
---|
916 | \end{minipage} |
---|
917 | \begin{minipage}{0.7\textwidth} |
---|
918 | \centering |
---|
919 | \begin{lstlisting} |
---|
920 | u(nzb:nzt+1,nysg:nyng,nxlg:nxrg) |
---|
921 | |
---|
922 | |
---|
923 | nysg = nys - ngl, nyng = nyn + ngl |
---|
924 | nxlg = nxl - ngl, nxrg = nxr + ngl |
---|
925 | nzb, nzt (bottom, top) |
---|
926 | nys, nyn (south, north) |
---|
927 | nxl, nxr (left, right) |
---|
928 | \end{lstlisting} |
---|
929 | \end{minipage}\\ |
---|
930 | 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) |
---|
931 | } |
---|
932 | \end{itemize} |
---|
933 | \end{frame} |
---|
934 | |
---|
935 | %Folie 15 |
---|
936 | \begin{frame}[fragile] |
---|
937 | \frametitle{Important Variables and Their Declaration} |
---|
938 | \begin{itemize} |
---|
939 | \item<1->{If only one processor is used, then\\ |
---|
940 | \begin{minipage}{0.2\textwidth} |
---|
941 | \quad \\\\ |
---|
942 | \end{minipage} |
---|
943 | \begin{minipage}{0.7\textwidth} |
---|
944 | \centering |
---|
945 | \begin{lstlisting} |
---|
946 | nxl = 0; nxr = nx |
---|
947 | nys = 0; nyn = ny |
---|
948 | \end{lstlisting} |
---|
949 | \end{minipage}\\ |
---|
950 | } |
---|
951 | \item<2->{For speed optimization, most of the 3D-variables are declared as pointers, e.g.\\ |
---|
952 | \begin{minipage}{0.2\textwidth} |
---|
953 | \quad \\\\ |
---|
954 | \end{minipage} |
---|
955 | \begin{minipage}{0.7\textwidth} |
---|
956 | \centering |
---|
957 | \begin{lstlisting} |
---|
958 | REAL, DIMENSION(:,:,:), POINTER :: u, u_p, v, v_p, ... |
---|
959 | \end{lstlisting} |
---|
960 | \end{minipage}\\ |
---|
961 | This does not affect the usage of these variables in the code in (almost) any way. |
---|
962 | } |
---|
963 | \end{itemize} |
---|
964 | \end{frame} |
---|
965 | |
---|
966 | %Folie 16 |
---|
967 | \begin{frame}[fragile] |
---|
968 | \frametitle{Some Other Frequently Used Variables} |
---|
969 | |
---|
970 | \begin{table}[htbp] |
---|
971 | \centering |
---|
972 | % \caption{Add caption} |
---|
973 | \begin{tabular}{|l|l|p{0.22\linewidth}|l|} |
---|
974 | \hline |
---|
975 | variable & index bounds & meaning & comment\\ |
---|
976 | \hline |
---|
977 | \hline |
---|
978 | \texttt{\tiny zu } & \texttt{\tiny nzb:nzt+1 }& \tiny heights of the scalar (u,v) grid levels & \texttt{\tiny zu(0)=-zu(1)}\\ |
---|
979 | \hline |
---|
980 | \texttt{\tiny zw } & \texttt{\tiny nzb:nzt+1 }& \tiny heights of the w grid level & \texttt{\tiny zw(0)=0 }\\ |
---|
981 | \hline |
---|
982 | \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)}\\ |
---|
983 | \hline |
---|
984 | \texttt{\tiny ddzu } & \texttt{\tiny 1:nzt+1 }& \tiny inverse of grid spacings & \texttt{\tiny ddzu(k)=1.0/dzu(k)}\\ |
---|
985 | \hline |
---|
986 | \texttt{\tiny dx } & & {\tiny grid spacing along x} & \\ |
---|
987 | \hline |
---|
988 | \texttt{\tiny ddx } & & {\tiny inverse of dx} & \texttt{\tiny ddx=1.0/dx }\\ |
---|
989 | \hline |
---|
990 | \texttt{\tiny current\_timestep\_number} & & {\tiny timestep counter} & \\ |
---|
991 | \hline |
---|
992 | \texttt{\tiny simulated\_time }& & {\tiny simulated time in seconds} & \\ |
---|
993 | \hline |
---|
994 | \end{tabular}% |
---|
995 | % \label{tab:addlabel}% |
---|
996 | \end{table}% |
---|
997 | \end{frame} |
---|
998 | |
---|
999 | |
---|
1000 | %Folie 17 |
---|
1001 | \begin{frame}[fragile] |
---|
1002 | \frametitle{Preprocessor Directives (I)} |
---|
1003 | \begin{itemize} |
---|
1004 | \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:\\ |
---|
1005 | \begin{minipage}{0.2\textwidth} |
---|
1006 | \quad \\\\ |
---|
1007 | \end{minipage} |
---|
1008 | \begin{minipage}{0.7\textwidth} |
---|
1009 | \centering |
---|
1010 | \begin{lstlisting} |
---|
1011 | #if defined( __abc ) |
---|
1012 | CALL FLUSH( 9 ) |
---|
1013 | #else |
---|
1014 | CALL FLUSH_( 9 ) |
---|
1015 | #endif |
---|
1016 | \end{lstlisting} |
---|
1017 | \end{minipage}\\ |
---|
1018 | If now the compiler is called e.g.\\ |
---|
1019 | \begin{minipage}{0.2\textwidth} |
---|
1020 | \quad \\\\ |
---|
1021 | \end{minipage} |
---|
1022 | \begin{minipage}{0.7\textwidth} |
---|
1023 | \centering |
---|
1024 | \begin{lstlisting} |
---|
1025 | ifort -cpp -D __abc ... (other options) |
---|
1026 | \end{lstlisting} |
---|
1027 | \end{minipage}\\ |
---|
1028 | then the line containing ``\texttt{\tiny CALL FLUSH( 9 )}'' is compiled. \\If the compiler call is\\ |
---|
1029 | \begin{minipage}{0.2\textwidth} |
---|
1030 | \quad \\\\ |
---|
1031 | \end{minipage} |
---|
1032 | \begin{minipage}{0.7\textwidth} |
---|
1033 | \centering |
---|
1034 | \begin{lstlisting} |
---|
1035 | ifort -cpp ... (other options) |
---|
1036 | \end{lstlisting} |
---|
1037 | \end{minipage}\\ |
---|
1038 | the line containing ``\texttt{\tiny CALL FLUSH\_( 9 )}'' is compiled. |
---|
1039 | } |
---|
1040 | \end{itemize} |
---|
1041 | \end{frame} |
---|
1042 | |
---|
1043 | |
---|
1044 | %Folie 18 |
---|
1045 | \begin{frame}[fragile] |
---|
1046 | \frametitle{Preprocessor Directives (II)} |
---|
1047 | \begin{itemize} |
---|
1048 | \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} |
---|
1049 | \texttt{\scriptsize .mrun.config} in the \texttt{\scriptsize \%cpp\_options} line. \textbf{Different compilers may require different options!}}\\ |
---|
1050 | |
---|
1051 | \item<2->{Define-string switches can be combined using logical AND / OR operators \&\& / $\lvert \lvert$.\\ |
---|
1052 | \begin{minipage}{0.2\textwidth} |
---|
1053 | \quad \\\\ |
---|
1054 | \end{minipage} |
---|
1055 | \begin{minipage}{0.7\textwidth} |
---|
1056 | \centering |
---|
1057 | \begin{lstlisting} |
---|
1058 | #if defined ( __abc && __def ) |
---|
1059 | \end{lstlisting} |
---|
1060 | \end{minipage} |
---|
1061 | } |
---|
1062 | \end{itemize} |
---|
1063 | \end{frame} |
---|
1064 | |
---|
1065 | |
---|
1066 | %Folie 19 |
---|
1067 | \begin{frame}[fragile] |
---|
1068 | \frametitle{Preprocessor Directives (III)} |
---|
1069 | In the PALM code, define-string switches are used for following reasons: |
---|
1070 | \begin{itemize} |
---|
1071 | \item<2->{To switch between system dependent subroutines for:\\ |
---|
1072 | \begin{itemize} |
---|
1073 | \item<2->{\texttt{\scriptsize \_\_ibm}} \quad IBM-Regatta systems\\ |
---|
1074 | \item<2->{\texttt{\scriptsize \_\_lc}}\;\: \quad Linux clusters (using Intel compiler ifort)\\ |
---|
1075 | \item<2->{\texttt{\scriptsize \_\_nec}} \quad NEC-SX systems\\ |
---|
1076 | \end{itemize} |
---|
1077 | Switches are set automatically depending on mrun-option ``\texttt{\scriptsize-h}'', eg. ``\texttt{\scriptsize-h lcmine}'' sets ``\texttt{\scriptsize-D \_\_lc}''} |
---|
1078 | \item<3->{To switch between the serial and the parallel code:\\ |
---|
1079 | \begin{itemize} |
---|
1080 | \item<3->{\texttt{\scriptsize \_\_parallel}} |
---|
1081 | \end{itemize} |
---|
1082 | This switch is set by mrun-option ``\texttt{\scriptsize-K parallel}''.} |
---|
1083 | \end{itemize} |
---|
1084 | \end{frame} |
---|
1085 | |
---|
1086 | |
---|
1087 | %Folie 20 |
---|
1088 | \begin{frame}[fragile] |
---|
1089 | \frametitle{Preprocessor Directives (IV)} |
---|
1090 | In the PALM code, define-string switches are used for following reasons: |
---|
1091 | \begin{itemize} |
---|
1092 | \item<1->{To enable usage of special software packages which are not included in the compilation process by default\\ |
---|
1093 | \begin{itemize} |
---|
1094 | \item<1->{\texttt{\scriptsize \_\_dvrp\_graphics}} \quad 3D visualization system\\ |
---|
1095 | \item<1->{\texttt{\scriptsize \_\_spectra}} \quad \quad \quad \quad calculation and output of power spectra\\ |
---|
1096 | \end{itemize} |
---|
1097 | Switches are activated with mrun-option ``\texttt{\scriptsize-p}'', \mbox{eg. ``\texttt{\scriptsize-p} ``\texttt{\scriptsize spectra dvrp\_graphics}''''}} |
---|
1098 | \end{itemize} |
---|
1099 | {\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. |
---|
1100 | \end{frame} |
---|
1101 | |
---|
1102 | |
---|
1103 | %Folie 21 |
---|
1104 | \begin{frame}[fragile] |
---|
1105 | \frametitle{Preprocessor Directives (V)} |
---|
1106 | \begin{itemize} |
---|
1107 | \item<1->{Preprocessor directives are also used for string replacement in the code.\\ Example:\\A compiler call with preprocessor option\\ |
---|
1108 | \begin{minipage}{0.2\textwidth} |
---|
1109 | \quad \\\\ |
---|
1110 | \end{minipage} |
---|
1111 | \begin{minipage}{0.7\textwidth} |
---|
1112 | \centering |
---|
1113 | \begin{lstlisting} |
---|
1114 | ifort -cpp -Dabcd=efgh |
---|
1115 | \end{lstlisting} |
---|
1116 | \end{minipage} |
---|
1117 | will replace all strings ``\texttt{\scriptsize abcd}'' in the code with ``\texttt{\scriptsize efgh}'' \textbf{before} the code is compiled.\\ |
---|
1118 | 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.}:\\ |
---|
1119 | \begin{minipage}{0.2\textwidth} |
---|
1120 | \quad \\\\ |
---|
1121 | \end{minipage} |
---|
1122 | \begin{minipage}{0.7\textwidth} |
---|
1123 | \centering |
---|
1124 | \begin{lstlisting} |
---|
1125 | %cpp_options -cpp:-DMPI_REAL=MPI_DOUBLE_PRECISION: |
---|
1126 | -DMPI_2REAL=MPI_2DOUBLE_PRECISION: .... |
---|
1127 | \end{lstlisting} |
---|
1128 | \end{minipage} |
---|
1129 | } |
---|
1130 | \end{itemize} |
---|
1131 | \end{frame} |
---|
1132 | |
---|
1133 | \end{document} |
---|