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