Changeset 1226 for palm/trunk/TUTORIAL
- Timestamp:
- Sep 18, 2013 1:19:19 PM (11 years ago)
- Location:
- palm/trunk/TUTORIAL/SOURCE
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/TUTORIAL/SOURCE/exercise_neutral.tex
r1198 r1226 113 113 \begin{itemize} 114 114 \tiny 115 \item<4-> You probably will find it difficult to get the mean flow to a stationary state (for the 1D-model as well as for the 3D-model. Can you identify the mechanism responsible for this? Try parameters \texttt{\textcolor{blue}{damp\_level\_1d}} (for the 1D-model) and \texttt{\textcolor{blue}{rayleigh\_damping\_factor}} (for the 3D-model; this is a \texttt{ d3par}-parameter!) to overcome this problem.115 \item<4-> You probably will find it difficult to get the mean flow to a stationary state (for the 1D-model as well as for the 3D-model. Can you identify the mechanism responsible for this? Try parameters \texttt{\textcolor{blue}{damp\_level\_1d}} (for the 1D-model) and \texttt{\textcolor{blue}{rayleigh\_damping\_factor}} (for the 3D-model; this is a \texttt{inipar}-parameter!) to overcome this problem. 116 116 \vspace{0.5em} 117 117 \item<5-> You can switch on a Galilei-transformation in order to save CPU-time (see parameter \texttt{\textcolor{blue}{galilei\_transformation}}). … … 129 129 \scriptsize 130 130 \item<2-> Output of spectra requires to switch on the spectra-package using \textbf{mrun}-option \texttt{-p}:\\ 131 \texttt{mrun ... -p spectra }131 \texttt{mrun ... -p spectra -r 'sp\#'} 132 132 \vspace{0.5em} 133 133 \item<3-> Spectra output is controlled by parameters \texttt{\textcolor{blue}{data\_output\_sp}}, \texttt{\textcolor{blue}{dt\_dosp}}, etc. These package-parameters have to be given in a separate NAMELIST-block which has to follow the \texttt{d3par}-block:\\ -
palm/trunk/TUTORIAL/SOURCE/installation.tex
r1205 r1226 853 853 } 854 854 \uncover<5->{ 855 \draw[ ->, thick] (input) |- (instal);855 \draw[<-, thick] (input) |- (instal); 856 856 } 857 857 \end{tikzpicture} -
palm/trunk/TUTORIAL/SOURCE/non_cyclic_boundary_conditions.tex
r945 r1226 66 66 \item<4->{Non-cyclic boundary conditions give problems:} 67 67 \begin{itemize} 68 \par\smallskip 68 69 \item<5->{If Dirichlet conditions (fixed vertical profiles) are used at the inflow, the inflow is laminar and some (significant) domain space is needed in order to develop turbulence.} 70 \par\smallskip 69 71 \item<6->{At the outflow, a boundary condition is required which allows the eddies to freely leave the domain.} 70 72 \end{itemize} … … 81 83 The main motivation for non-cyclic boundary conditions are studies of isolated phenomena. 82 84 \begin{tabbing} 83 \uncover<2->{\textbf{Example:} \= Turbulence generated by a single obstacle. \\} 85 \uncover<2->{\textbf{Example:} \= Turbulence generated by a single obstacle. \\} 86 \\ 84 87 \uncover<6->{ \> Cyclic boundary conditions along x would allow the generated turbulence\\ 85 88 \> to enter the domain again, and so finally to modify the turbulence \\ … … 87 90 \\ 88 91 \uncover<9>{ \> This wouldn't be a simulation of a single building, but of an\\ 89 \> infinite row of buildings! \\}92 \> infinite row of buildings! } 90 93 \end{tabbing} 91 94 \begin{center} 92 \includegraphics<3 >[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_1.png}93 \includegraphics<4 >[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_2.png}94 \includegraphics<5-6 >[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_3.png}95 \includegraphics<7 >[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_4.png}96 \uncover<8- >{\begin{center} \includegraphics[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_5.png} \end{center}}95 \includegraphics<3|handout:0>[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_1.png} 96 \includegraphics<4|handout:0>[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_2.png} 97 \includegraphics<5-6|handout:0>[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_3.png} 98 \includegraphics<7|handout:0>[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_4.png} 99 \uncover<8-|handout:1>{\begin{center} \includegraphics[width=0.7\textwidth]{non_cyclic_figures/motivation_non_cyclic_5.png} \end{center}} 97 100 \end{center} 98 101 \normalsize … … 105 108 \onslide<2->{Using Dirichlet-conditions (e.g u(z) = const.), there is no turbulence at the inflow. $\rightarrow $the flow is laminar $\rightarrow$ LES approach fails!} 106 109 \par\bigskip 107 \includegraphics<3 >[width=0.8\textwidth]{non_cyclic_figures/implications_non_cyclic_1.png}108 \includegraphics<4 >[width=0.8\textwidth]{non_cyclic_figures/implications_non_cyclic_2.png}109 \uncover<5- >{\includegraphics[width=0.8\textwidth]{non_cyclic_figures/implications_non_cyclic_3.png}}110 \includegraphics<3|handout:0>[width=0.8\textwidth]{non_cyclic_figures/implications_non_cyclic_1.png} 111 \includegraphics<4|handout:0>[width=0.8\textwidth]{non_cyclic_figures/implications_non_cyclic_2.png} 112 \uncover<5-|handout:1>{\includegraphics[width=0.8\textwidth]{non_cyclic_figures/implications_non_cyclic_3.png}} 110 113 \par\bigskip 111 114 \onslide<6->{Flow internal turbulence may develop, but this may require a very long model domain.} 112 115 \par\bigskip 113 \includegraphics<7 >[width=\textwidth]{non_cyclic_figures/implications_non_cyclic_4.png}114 \includegraphics<8 >[width=\textwidth]{non_cyclic_figures/implications_non_cyclic_5.png}115 \uncover<9- >{\includegraphics[width=\textwidth]{non_cyclic_figures/implications_non_cyclic_6.png}}116 \includegraphics<7|handout:0>[width=\textwidth]{non_cyclic_figures/implications_non_cyclic_4.png} 117 \includegraphics<8|handout:0>[width=\textwidth]{non_cyclic_figures/implications_non_cyclic_5.png} 118 \uncover<9-|handout:1>{\includegraphics[width=\textwidth]{non_cyclic_figures/implications_non_cyclic_6.png}} 116 119 \onslide<10->{There is a need to supply turbulence information at the inflow.} 117 120 \end{frame} … … 128 131 \item<3->{by recycling-method (Lund et al., 1998)} 129 132 \end{itemize} 130 \includegraphics<4 >[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_1_neu.png}131 \includegraphics<5 >[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_2_neu.png}132 \includegraphics<6 >[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_3_neu.png}133 \includegraphics<7 >[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_4_neu.png}134 \includegraphics<8 >[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_5_neu.png}135 \uncover<9- >{\includegraphics[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_6.png}}133 \includegraphics<4|handout:0>[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_1_neu.png} 134 \includegraphics<5|handout:0>[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_2_neu.png} 135 \includegraphics<6|handout:0>[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_3_neu.png} 136 \includegraphics<7|handout:0>[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_4_neu.png} 137 \includegraphics<8|handout:0>[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_5_neu.png} 138 \uncover<9-|handout:1>{\includegraphics[width=\textwidth]{non_cyclic_figures/create_turbulent_inflow_1/create_turbulent_inflow_6.png}} 136 139 \par\bigskip 137 140 \uncover<10>{How do we get the initial turbulence in the recycle area? \\ … … 236 239 \begin{itemize} 237 240 \item<2->{The \textbf{multigrid-method} has to be used for solving the Poisson-equation.} 238 \item<3->{A \textbf{damping zone} has sometimes to be activated in the vicinity of the outflow in order to avoid reflection of outgoinggravity waves.}241 \item<3->{A \textbf{damping zone} has sometimes to be activated in the vicinity of the in- and outflow in order to avoid reflection of gravity waves.} 239 242 \item<4->{\textbf{Volume flow conservation} should be activated, because otherwise flow acceleration or deceleration may occur along the non-cyclic direction.} 240 243 \item<5->{If turbulence recycling is not used, it may be neccessary to \textbf{continuously impose perturbations} on the horizontal velocity field in the vicinity of the … … 308 311 \item<2->{Restart data has to be output and output of instantaneous, horizontally averaged profiles has to be switched on and performed at the end of the run. 309 312 This enables writing of profiles to the restart file, which can then be used by the main run.} 313 \item<3->{Instead of using averaged profiles from the prerun, inflow profiles for the main run can also be prescribed using parameters u\_profile and v\_profile.} 310 314 \end{itemize} 311 315 \tikzstyle{box} = [rectangle, draw, text width=\textwidth, font=\small] … … 376 380 \begin{itemize} 377 381 \item<1->{Non-cyclic boundary conditions and turbulence recycling method require extreme care with setting of the respective parameters.} 378 \item<2->{So far, these methods have been applied only to a few special cases (cold air outbreaks ). Other setups may require modifications.}379 \item<3->{Biggest problems are caused by gravity waves in capping inversions. Simulations with pure neutral stratification are expected tocause less problems.}382 \item<2->{So far, these methods have been applied only to a few special cases (cold air outbreaks, urban canopy layer for neutral stratification). Other setups may require modifications.} 383 \item<3->{Biggest problems are caused by gravity waves in capping inversions. Simulations with pure neutral stratification cause less problems.} 380 384 \end{itemize} 381 385 \end{frame} -
palm/trunk/TUTORIAL/SOURCE/numerics_bc.tex
r915 r1226 61 61 \item<3-> \textbf{Explicit timestep methods:}\\ 62 62 - Euler\\ 63 - Leapfrog\\64 63 - \underline{Runge-Kutta}, second or \underline{third order} 65 64 \item<4-> \textbf{Advection method}\\ 66 65 - Upstream\\ 67 66 - Piacsek-Williams (second order central finite differences)\\ 68 - Upstream-spline\\69 67 - Bott-Chlond-scheme (monotone, positiv definit, for scalars only)\\ 70 68 - \underline{5th-order scheme of Wicker and Skamarock}, (as used in WRF model) … … 122 120 \begin{itemize} 123 121 \item<1->\textbf{Euler}\\ 124 \vspace{ 1mm}122 \vspace{3mm} 125 123 $\dfrac{\partial \psi(t)}{\partial t} = F (\psi(t)) \rightarrow 126 124 \dfrac{\psi(t + \Delta t) - \psi(t)}{\Delta t} … … 136 134 137 135 \vspace{3mm} 138 \item<3-> \textbf{Leapfrog}\\ 139 $\psi(t + \Delta t) = \psi(t - \Delta t)+2 \Delta t \cdot F(\psi(t))$ \hspace{16mm} $ 140 \mathcal{O}(\Delta t^2)$ \hspace{3mm} $C \le 0.1$\\ 141 Time-splitting requires a weak time filter (Asselin filter) 142 143 \vspace{3mm} 144 \item<4-> \textbf{Runge-Kutta, third-order}\\ 136 \item<3-> \textbf{Runge-Kutta, third-order}\\ 137 \vspace{2mm} 145 138 $k_1=F(\psi(t))$\\ 146 139 \vspace{1mm} … … 172 165 \bf{Scheme} & \bf{c$_1$} & \bf{c$_2$} & \bf{c$_3$}\\ 173 166 Euler & 1 & 1 & 0\\ 174 Leapfrog & 0 & 2 & 0\\175 167 RK (1st step) & 1 & 1/3 & 0\\ 176 168 RK (2nd step) & 1 & 15/16 & -25/48\\ … … 211 203 \frametitle{Advection Methods (II)} 212 204 \begin{itemize} 213 \item<1-> \small Upstream-spline\\ \scriptsize 214 \onslide<1-> - Requires Euler timestep\\ 215 \onslide<2-> - Nonlocal scheme: produces heavy load on communication network\\ 216 \onslide<3-> - Numerically unstable under stable stratification 217 \item<4-> \small Bott-Chlond\\ \scriptsize 218 \onslide<4-> - Chlond (1994)\\ 219 \onslide<5-> - Monotone, positive definit. Can only be used for scalars\\ 220 \onslide<6-> - Conserves sharp gradients\\ 221 \onslide<7-> - Numerically expensive\\ 222 \onslide<8-> - Not optimized for use on cache-based machines. 223 \item<9-> \small Default: Wicker and Skamarock scheme (5th order)\\ \scriptsize 224 \onslide<9-> - Much better accuracy than Piacsek Williams\\ 225 \onslide<10-> - Much simpler algorithm than Bott-Chlond\\ 226 \onslide<11-> - Requires additional ghost layers\\ 227 \onslide<12-> - Adds additional numerical dissipation 205 206 \item<1-> \small Bott-Chlond\\ \scriptsize 207 \onslide<1-> - Chlond (1994)\\ 208 \onslide<2-> - Monotone, positive definit. Can only be used for scalars\\ 209 \onslide<3-> - Conserves sharp gradients\\ 210 \onslide<4-> - Numerically expensive\\ 211 \onslide<5-> - Not optimized for use on cache-based machines. 212 \par\bigskip 213 \item<6-> \small Default: Wicker and Skamarock scheme (5th order)\\ \scriptsize 214 \onslide<6-> - Much better accuracy than Piacsek Williams\\ 215 \onslide<7-> - Much simpler algorithm than Bott-Chlond\\ 216 \onslide<8-> - Requires additional ghost layers\\ 217 \onslide<9-> - Adds additional numerical dissipation 228 218 229 219 \end{itemize} … … 286 276 287 277 288 \textbf{Finite difference approxi amtion of 6$^{\text{th}}$ order}278 \textbf{Finite difference approximation of 6$^{\text{th}}$ order} 289 279 \begin{tikzpicture}[scale=2] 290 280 \tikzstyle{ann} = [draw=none,fill=none,right] … … 305 295 \matrix[nodes={draw, thick, fill=blue!40}, row sep=0.3cm,column sep=0.5cm]{ 306 296 \node[rectangle, rounded corners]{ 307 $ \frac{-1}{60} \left| u_{i-\frac{1}{2}} \right| \left( 10 (\Psi_i -297 $-\frac{1}{60} \left| u_{i-\frac{1}{2}} \right| \left( 10 (\Psi_i - 308 298 \Psi_{i-1}) - 5 (\Psi_{i+1} - \Psi_{i-2}) + (\Psi_{i+2} - \Psi_{i-3}) \right)$ 309 299 };\\ … … 341 331 \begin{frame} 342 332 \frametitle{Advection Methods â Wicker/Skamarock (IV)} 343 \footnotesize 344 345 \begin{columns}[T] 346 \begin{column}{0.1\textwidth} 347 \begin{tikzpicture}[scale=2] 348 \tikzstyle{ann} = [draw=none,fill=none,right] 349 \matrix[nodes={draw, thick, fill=blue!40}, row sep=0.3cm,column sep=0.5cm]{ 350 \node[draw=none,fill=none]{ 351 $F^{\text{5th}}_{i-\frac{1}{2}} = F^{\text{6th}}_{i-\frac{1}{2}}$ 352 };\\ 353 }; 354 \end{tikzpicture} 355 \end{column} 356 \begin{column}{0.8\textwidth} 357 \begin{tikzpicture}[scale=2] 333 \footnotesize 334 335 \begin{tikzpicture}[scale=2] 358 336 \tikzstyle{ann} = [draw=none,fill=none,right] 359 337 \matrix[nodes={draw, thick, fill=blue!40}, row sep=0.3cm,column sep=0.5cm]{ 360 338 \node[rectangle, rounded corners]{ 361 $- \frac{1}{60} \left| u_{i-\frac{1}{2}} \right| \left( 10 (\Psi_i - \Psi_{i-1}) - 362 5 (\Psi_{i+1} - \Psi_{i-2}) + (\Psi_{i+2} - \Psi_{i-3}) \right)$ 339 $F^{\text{5th}}_{i-\frac{1}{2}} = F^{\text{6th}}_{i-\frac{1}{2}} 340 - \frac{1}{60} \left| u_{i-\frac{1}{2}} \right| \left( 10 (\Psi_i - \Psi_{i-1}) - 341 5 (\Psi_{i+1} - \Psi_{i-2}) + (\Psi_{i+2} - \Psi_{i-3}) \right)$ 363 342 };\\ 364 343 }; 365 344 \end{tikzpicture} 366 \end{column}367 \end{columns}368 345 369 346 \begin{columns}[T] … … 415 392 1. Momentum equations are solved without the pressure term giving a 416 393 provisional velocity field which is not free of divergence.\\ 394 \vspace{2mm} 417 395 $\overline{u}^{t+\Delta t}_{i_{\mathrm{prov}}} = \overline{u}^t_i + 418 396 \Delta t \left( - \frac{\partial}{\partial x_k} \overline{u}^t_k … … 421 399 + g \frac{\overline{\theta^*}^t}{\theta_0} \delta_{i3} 422 400 - \frac{\partial}{\partial x_k} \overline{u'_k u'_i}^t \right)$\\ 423 \vspace{ 3mm}401 \vspace{2mm} 424 402 \onslide<3-> 2. Assign all remaining divergences to the (perturbation) 425 403 pressure $p^*$ so that the new corrected velocity field is the sum of the 426 404 provisional, divergent field and the perturbation pressure term.\\ 405 \vspace{2mm} 427 406 $\overline{u}^{t+\Delta t}_{i} = 428 \overline{u}^{t+\Delta t}_{i_{\mathrm{prov}}} -429 \ frac{\Delta t}{\rho_0} \frac{\partial \overline{p^*}^t}{\partial x_i}$\\430 \vspace{ 3mm}407 \overline{u}^{t+\Delta t}_{i_{\mathrm{prov}}} + 408 \Delta t \left(-\frac{1}{\rho_0} \frac{\partial \overline{p^*}^t}{\partial x_i} \right)$\\ 409 \vspace{2mm} 431 410 \onslide<4-> 3. The divergence operator is applied to this equation. 432 411 Demanding a corrected velocity field free of divergence, this leads to a 433 412 Poisson equation for the perturbation pressure.\\ 413 \vspace{2mm} 434 414 $\frac{\partial^2 \overline{p^*}^t}{\partial x_i^2} = \frac{\rho_0} 435 415 {\Delta t} \frac{\partial \overline{u}_{i_{\mathrm{prov}}}^{t + \Delta t}} 436 416 {\partial x_i}$\\ 437 \vspace{ 3mm}417 \vspace{2mm} 438 418 \onslide<5-> 4. After solving the Poisson equation, the final velocity field 439 419 is \\ … … 462 442 \item<7-> Due to non-locality of the FFT, transpositions are required 463 443 on parallel computers 464 \item<8-> Usage requires periodic boundary conditions and uniform grids444 \item<8-> Requires periodic boundary conditions and uniform grids 465 445 along $x$ and $y$ 466 446 \end{itemize} -
palm/trunk/TUTORIAL/SOURCE/parallelization.tex
r973 r1226 15 15 \usepackage{tikz} 16 16 \usetikzlibrary{shapes,arrows,positioning} 17 \usetikzlibrary{decorations.markings} %neues paket18 \usetikzlibrary{decorations.pathreplacing} %neues paket17 %\usetikzlibrary{decorations.markings} %neues paket 18 %\usetikzlibrary{decorations.pathreplacing} %neues paket 19 19 \def\Tiny{\fontsize{4pt}{4pt}\selectfont} 20 20 \usepackage{amsmath} … … 76 76 \onslide<5->each PE solves the equations for a different subdomain of the total domain 77 77 \begin{center} 78 \includegraphics[width=0. 5\textwidth]{parallelization_figures/subdomain.png}78 \includegraphics[width=0.3\textwidth]{parallelization_figures/subdomain_folie2.png} 79 79 \end{center} 80 80 \onslide<7->each PE only knows the variable values from its subdomain, communication / data exchange between PEs is necessary\\ … … 109 109 \node (center) at (0,1) {}; 110 110 \onslide<2-> \node (Network) at (-3.5,1) [draw, ellipse,fill=green!20] {Network}; 111 \node (dis_mem) at (-3.5,-1) [text width=0.28\textwidth] {\footnotesize \textbf{distributed} memory\\(Cray- T3E)};111 \node (dis_mem) at (-3.5,-1) [text width=0.28\textwidth] {\footnotesize \textbf{distributed} memory\\(Cray-XC30)}; 112 112 \onslide<3-> \node (add_mem) at (3.5,1) [rectangle, draw] {adressable memory}; 113 113 \node (sha_mem) at (3.5,-1) [text width=0.35\textwidth] {\footnotesize \textbf{shared} memory\\(SGI-Altix, multicore PCs)}; … … 116 116 \onslide<6-> \node (clustered_systems) at (0,-3) [draw, text width=0.15\textwidth] {clustered systems}; 117 117 \node (cs_info) at (0,-4.2) [text width=0.4\textwidth] {\footnotesize (IBM-Regatta, Linux-Cluster, 118 NEC-SX, SGI-ICE, Cray-XE6)};118 NEC-SX, SGI-ICE, Cray-XC)}; 119 119 120 120 % Adressable memory node (big) … … 248 248 \vspace{2mm} 249 249 \begin{itemize} 250 \item<10-> Alternatively, a 1D-decomposition along $x$ or $y$ may be used in case of slow networks, but this generally doesn't scale for processor numbers $>$ 256.250 \item<10-> Alternatively, a 1D-decomposition along $x$ or $y$ may be used. 251 251 \vspace{2mm} 252 252 \item<11-> Message passing is realized using MPI. 253 253 \vspace{2mm} 254 254 \item<12-> OpenMP parallelization as well as mixed usage of OpenMP and 255 MPI is also possible. (OpenMP tests and optimization is under way) 255 MPI is also possible. 256 256 \end{itemize} 257 257 \end{frame} … … 285 285 \onslide<5-> \includegraphics[width=0.8\textwidth]{parallelization_figures/fft.png} \end{center} 286 286 \vspace{-4mm} 287 \textbf{Example: transpositions for solving the Poisson\\ \hspace{4 em}equation}287 \textbf{Example: transpositions for solving the Poisson\\ \hspace{4.1em}equation} 288 288 \end{column} 289 289 \end{columns} … … 302 302 \item<3-> If a normal unix-kernel operating system (not a micro-kernel) is running on each CPU, then there migth be a speed-up of the code, if 1-2 PEs less than the total number of PEs on the node are used. 303 303 \item<4-> On machines with a comparably slow network, a 1D-decomposition (along $x$) should be used, because then only two transpositions have to be carried out by the pressure solver. A 1D-decomposition is automatically used for NEC-machines (e.g. \texttt{-h necriam}). The virtual processor grid to be used can be set manually by d3par-parameters \texttt{npex} and \texttt{npey}. 304 \item< 6-> Using the Open-MP parallelization does not yield any advantage over using a pure domain decomposition with MPI (contrary to expectations, it mostly slows down the computational speed), but this may change on cluster systems for very large number of processors ($>$10000?).\\304 \item<5-> Using the Open-MP parallelization does not yield any advantage over using a pure domain decomposition with MPI (contrary to expectations, it mostly slows down the computational speed), but this may change on cluster systems for very large number of processors ($>$10000?).\\ 305 305 \end{itemize} 306 306 \begin{center} 307 307 \vspace{-7mm} 308 \onslide< 5-> \includegraphics[width=0.13\textwidth]{parallelization_figures/folie_6.png}308 \onslide<4-> \includegraphics[width=0.13\textwidth]{parallelization_figures/folie_6.png} 309 309 \end{center} 310 310 \end{column} … … 325 325 \quad \texttt{\%modules ...:mpt:...} 326 326 \vspace{2mm} 327 \item< 2-> The path to the MPI-library may have to be given in the compiler call, by setting an appropriate option in the configuration file .mrun.config:328 329 \quad \texttt{\%lopts - axW:-cpp:-r8:-nbs:-Vaxlib:\textcolor{blue}{-L:<replace by mpi library path>:-lmpi}}327 \item<3-> The path to the MPI-library may have to be given in the compiler call, by setting an appropriate option in the configuration file .mrun.config: 328 329 \quad \texttt{\%lopts -r8:-nbs:\textcolor{blue}{-L:<replace by mpi library path>:-lmpi}} 330 330 \vspace{2mm} 331 \item< 3-> All MPI calls must be within\\331 \item<4-> All MPI calls must be within\\ 332 332 \quad \texttt{CALL MPI\_INIT( ierror )}\\ 333 333 \quad $\vdots$\\ … … 417 417 \quad \texttt{CALL MPI\underline{\ }TYPE\underline{\ }COMMIT( type\underline{\ }yz(0), ierr ) ! see file init\underline{\ }pegrid.f90}\\ 418 418 \ \\ 419 \quad \texttt{CALL MPI\underline{\ }SENDRECV( ar(nzb,nys-ngl,nxl), type\underline{\ }yz(grid\underline{\ }level), MPI\underline{\ }REAL, pleft, 0, ...}\\419 \quad \texttt{CALL MPI\underline{\ }SENDRECV( ar(nzb,nys-ngl,nxl), 1, type\underline{\ }yz(grid\underline{\ }level), pleft, 0, ...}\\ 420 420 \end{itemize} 421 421 \end{frame} … … 468 468 \onslide<4-> \textbf{General comment:} 469 469 \begin{itemize} 470 \item Parallel I/O on a large number of files ($>$1000) currently may cause severe file system problems (e.g. on Lustre file systems).\\ \textbf{Workaround:} reduce the maximum number of parallel I/O streams\\ \hspace{5.75em}(see \texttt{mrun}-option s)470 \item Parallel I/O on a large number of files ($>$1000) currently may cause severe file system problems (e.g. on Lustre file systems).\\ \textbf{Workaround:} reduce the maximum number of parallel I/O streams\\ \hspace{5.75em}(see \texttt{mrun}-option \texttt{-w}) 471 471 \end{itemize} 472 472 \end{column} … … 476 476 477 477 478 % 478 %Folie 13 479 479 \begin{frame} 480 480 \frametitle{PALM Parallel I/O for 2D/3D Data} … … 492 492 \end{frame} 493 493 494 % 494 %Folie 14 495 495 \begin{frame} 496 496 \frametitle{Performance Examples (I)} … … 520 520 \end{frame} 521 521 522 % 522 %Folie 15 523 523 \begin{frame} 524 524 \frametitle{Performance Examples (II)} … … 542 542 \end{frame} 543 543 544 %Folie 16 545 \begin{frame} 546 \frametitle{Performance Examples (III)} 547 \begin{itemize} 548 \item Simulation with $2160^3$ grid points ($\sim$ 2 TByte memory) 549 \end{itemize} 550 \begin{columns}[T] 551 \begin{column}{0.5\textwidth} 552 \includegraphics[scale=0.3]{parallelization_figures/perf_4.png} \\ 553 \scriptsize 554 \quad Cray-XC30, HLRN-III, Hannover\\ 555 \quad (2D-domain decomposition) 556 \end{column} 557 \begin{column}{0.5\textwidth} 558 \vspace{35mm} 559 \onslide<2-> currently largest simulation feasible on that system:\\ 560 \ \\ 561 $5600^3$ grid points 562 \end{column} 563 \end{columns} 564 \end{frame} 565 544 566 \end{document} -
palm/trunk/TUTORIAL/SOURCE/program_structure.tex
r945 r1226 84 84 \frametitle{PALM Code: General Features} 85 85 \begin{itemize} 86 \item<2->{PALM is written in FORTRAN90. Current version number is 3. 8.}86 \item<2->{PALM is written in FORTRAN90. Current version number is 3.9.} 87 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 88 \item<4->{Data handling between subroutines is mostly done using FORTRAN90-modules instead of using parameter lists. … … 107 107 \end{lstlisting} 108 108 \end{minipage} 109 \mbox{ Allmodules can be found in file .../trunk/SOURCE/modules.f90}}109 \mbox{Most modules can be found in file .../trunk/SOURCE/modules.f90}} 110 110 \end{itemize} 111 111 \end{frame} … … 129 129 \tikzstyle{white2} = [rectangle, text width=0] 130 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] 131 132 \tikzstyle{line} = [draw, -] 132 133 … … 134 135 \uncover<1->{\node [yellow] (PALM) {PALM};} 135 136 \uncover<1->{\node [white2, right=0.2cm of PALM] (PALMspace) {};} 136 137 \uncover<2->{\node [yellow, below=0.2cm of PALMspace] (localtre) {local\_tremain\_ini};} 138 \path<2-> [line] (PALM.south) |- (localtre.west); 139 140 \uncover<3->{\node [yellow, below=0.05cm of localtre] (initdvrp) {init\_dvrp\_logging};} 141 \path<3-> [line] (PALM.south) |- (initdvrp.west); 142 143 \uncover<4->{\node [yellow, below=0.05cm of initdvrp] (parin) {parin};} 144 \path<4-> [line] (PALM.south) |- (parin.west); 145 \uncover<4->{\node [white, right=0.2cm of parin] (parinspace) {};} 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) {};} 146 150 147 151 \uncover<5->{\node [yellow, below=0cm of parinspace] (readvar) {read\_var\_list};} 148 152 \path<5-> [line,dashed] (parin.south) |- (readvar.west); 149 153 150 \uncover<6->{\node [yellow, below=0.05cm of readvar] (packageparin) {package\_parin};} 151 \path<6-> [line,dashed] (parin.south) |- (packageparin.west); 152 153 \uncover<7->{\node [yellow, below=0.05cm of packageparin] (userparin) {user\_parin};} 154 \path<7-> [line] (parin.south) |- (userparin.west); 155 156 \uncover<8->{\node [yellow, below=1.4cm of parin] (initpeg) {init\_pegrid};} 157 \path<8-> [line] (PALM.south) |- (initpeg.west); 158 \uncover<8->{\node [white, right=0.2cm of initpeg] (initpegspace) {};} 159 160 \uncover<9->{\node [yellow, below=0cm of initpegspace] (poisfftinit) {poisfft\_init};} 161 \path<9-> [line] (initpeg.south) |- (poisfftinit.west); 162 163 \uncover<10->{\node [yellow, below=0.3cm of initpeg] (initgrid) {init\_grid};} 164 \path<10-> [line] (PALM.south) |- (initgrid.west); 165 166 \uncover<11->{\node [yellow, below=0.05cm of initgrid] (checkpara) {check\_parameters};} 167 \path<11-> [line] (PALM.south) |- (checkpara.west); 168 169 \uncover<12->{\node [yellow, below=0.05cm of checkpara] (header) {header};} 170 \path<12-> [line] (PALM.south) |- (header.west); 171 \uncover<12->{\node [white, right=0.2cm of header] (headerspace) {};} 172 173 \uncover<13->{\node [yellow, below=0cm of headerspace] (userheader) {user\_header};} 174 \path<13-> [line,dashed] (header.south) |- (userheader.west); 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); 175 170 176 171 \uncover<1->{\node [white, below=5.8cm of PALM] (continu2) {};} … … 194 189 \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] 195 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] 196 193 \tikzstyle{line} = [draw, -] 197 194 … … 200 197 \uncover<1->{\node [white2, below=0.26cm of contino1] (PALM) {};} 201 198 202 \uncover<2->{\node [yellow, right=0.2cm of PALM] (init3d) {init\_3d\_model};} 203 \path<2-> [line] (PALM.south) |- (init3d.west); 204 \uncover<2->{\node [white, right=0.05cm of init3d] (init3dspace) {};} 205 \uncover<2->{\node [whitelarge, right=0.05cm of init3d] (init3dspacelarge) {};} 206 207 \uncover<3->{\node [yellowLarge, below=-0.05cm of init3dspacelarge] (init1d) {init\_1d\_model (calls various subroutines)};} 208 \path<3-> [line,dashed] (init3d.south) |- (init1d.west); 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); 209 226 210 227 \uncover<4->{\node [yellow, below=0.5cm of init3dspace] (initslope) {init\_slope};} 211 228 \path<4-> [line,dashed] (init3d.south) |- (initslope.west); 212 229 213 \uncover<5->{\node [yellow, below=0.05cm of initslope] (disturbh) {disturb\_heatflux};} 214 \path<5-> [line,dashed] (init3d.south) |- (disturbh.west); 215 216 \uncover<6->{\node [yellow, below=0.05cm of disturbh] (initrank) {init\_rankine};} 217 \path<6-> [line,dashed] (init3d.south) |- (initrank.west); 218 219 \uncover<7->{\node [yellow, right=0.05cm of initrank] (initpt) {init\_pt\_anomaly};} 220 \path<7-> [line] (initrank.east) -- (initpt.west); 221 222 \uncover<8->{\node [yellow, below=0.05cm of initrank] (disturbf) {disturb\_field};} 223 \path<8-> [line,dashed] (init3d.south) |- (disturbf.west); 224 225 \uncover<9->{\node [yellow, right=0.05cm of disturbf] (pres) {pres};} 226 \path<9-> [line] (disturbf.east) -- (pres.west); 227 \uncover<9->{\node [white, below=-0.05cm of pres] (presspace) {};} 228 229 \uncover<10->{\node [yellowsmall, right=0.05cm of presspace] (poisfft) {poisfft};} 230 \path<10-> [line] (pres.east) -| (poisfft.north); 231 232 \uncover<11->{\node [yellowsmall, right=0.05cm of poisfft] (sor) {sor};} 233 \path<11-> [line] (pres.east) -| (sor.north); 234 235 \uncover<12->{\node [yellowsmall, right=0.05cm of sor] (poismg) {poismg};} 236 \path<12-> [line] (pres.east) -| (poismg.north); 237 238 \uncover<13->{\node [yellow, below=0.4cm of disturbf] (read3d) {read\_3d\_binary};} 239 \path<13-> [line,dashed] (init3d.south) |- (read3d.west); 240 241 \uncover<14->{\node [yellow, right=0.05cm of read3d] (initdvrp) {init\_dvrp};} 242 \path<14-> [line] (read3d.east) -- (initdvrp.west); 243 244 \uncover<15->{\node [yellowlarge, right=0.05cm of initdvrp] (initcloud) {init\_cloud\_physics};} 245 \path<15-> [line] (initdvrp.east) -- (initcloud.west); 246 247 \uncover<16->{\node [yellow, below=0.05cm of read3d] (initpart) {init\_particles};} 248 \path<16-> [line] (init3d.south) |- (initpart.west); 249 \uncover<16->{\node [white, right=0.05cm of initpart] (initpartspace) {};} 250 251 \uncover<17->{\node [yellow, below=-0.05cm of initpartspace] (userinitpart) {user\_init\_particles};} 252 \path<17-> [line] (initpart.south) |- (userinitpart.west); 253 254 \uncover<18->{\node [yellow, below=0.05cm of userinitpart] (sortpart) {sort\_particles};} 255 \path<18-> [line] (initpart.south) |- (sortpart.west); 256 257 \uncover<19->{\node [yellow, below=0.05cm of sortpart] (dataoutput) {data\_output\_dvrp};} 258 \path<19-> [line,dashed] (initpart.south) |- (dataoutput.west); 259 260 \uncover<20->{\node [yellow, right=0.05cm of dataoutput] (userdvrp) {user\_dvrp\_coltab};} 261 \path<20-> [line,dashed] (dataoutput.east) -- (userdvrp.west); 262 263 \uncover<21->{\node [yellow, below=1.45cm of initpart] (initadvec) {init\_advec};} 264 \path<21-> [line] (init3d.south) |- (initadvec.west); 265 266 \uncover<22->{\node [yellow, right=0.05cm of initadvec] (userinit) {user\_init};} 267 \path<22-> [line] (initadvec.east) -- (userinit.west); 268 269 \uncover<23->{\node [yellow, below=5.8cm of init3d] (dataout2d) {data\_output\_2d};} 270 \path<23-> [line,dashed] (PALM.south) |- (dataout2d.west); 271 272 \uncover<24->{\node [yellow, right=0.05cm of dataout2d] (dataout3d) {data\_output\_3d};} 273 \path<24-> [line] (dataout2d.east) -- (dataout3d.west); 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); 274 257 275 258 \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};} … … 278 261 \uncover<1->{\node [white2, below=6.0cm of PALM] (continu1) {};} 279 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 280 270 \end{tikzpicture} 281 271 \end{frame} 282 272 283 284 273 %Folie 07 285 274 \begin{frame} 286 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)} 287 460 288 461 \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny] … … 294 467 \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=12pt, font=\tiny] 295 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] 296 472 \tikzstyle{line} = [draw, -] 297 473 \tikzstyle{linered} = [draw, color=red, -] … … 318 494 \path<1-> [line] (timeintegr.south) |- (timestep.west); 319 495 320 \uncover<1->{\node [yellow, below=0.05cm of timestep] (runcontrol) {run\_control};} 321 \path<1-> [line] (timeintegr.south) |- (runcontrol.west); 322 323 \uncover<1->{\node [yellow, right=0.05cm of runcontrol] (flowstatistics) {flow\_statistics};} 324 \path<1-> [line] (runcontrol.east) -- (flowstatistics.west); 325 326 \uncover<1->{\node [yellowLarge, below=0.95cm of timeintegrspacelarge] (useractions) {user\_actions (before\_timestep)};} 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)};} 327 500 \path<1-> [line] (timeintegr.south) |- (useractions.west); 328 501 … … 330 503 \path<1-> [line] (timeintegr.south) |- (timestepscheme.west); 331 504 332 \uncover<1->{\node [Bigbox, below=1. 75cm of timeintegrspacebox] (bigbox) {};}505 \uncover<1->{\node [Bigbox, below=1.3cm of timeintegrspacebox] (bigbox) {};} 333 506 % \path<1-> [line] (timeintegr.south) |- (bigbox.west); 334 \uncover<1->{\node [white, below= 2cm of timeintegrline] (boxlinespace) {};}335 \path<1-> [line] (timeintegr line.south) |- (boxlinespace.north);336 337 \uncover<1->{\node [yellowLarge, below=0.4cm of timestepscheme] (prognosticequ no) {prognostic\_equations\_noopt};}338 \uncover<1->{\node [yellowLarge, right=0.05cm of prognosticequ no] (prognosticequca) {prognostic\_equations\_cache};}339 \uncover<1->{\node [yellowLarge, below=0.05cm of prognosticequca] (prognosticequve) {prognostic\_equations\_vector};}340 \uncover<1->{\node [boxinfo, below=-0.025cm of prognosticequ no] (Boxinfo) {For details, see \\ PALM Flow Chart (V).};}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).};} 341 514 \path<1-> [linered] (boxlinespace.north) -| (prognosticequca.north); 342 \path<1-> [line] (boxlinespace.north) -| (prognosticequ no.north);515 \path<1-> [line] (boxlinespace.north) -| (prognosticequve.north); 343 516 \uncover<1->{\node [redsmall, above=0.3cm of prognosticequca] (redadv) {standard\\advection};} 344 517 345 \uncover<1->{\node [yellow, below= 2.7cm of runcontrol] (advecpart) {advec\_particles};}346 \path<1-> [line,dashed] ( advecpart.west) -| (timeintegr.south);347 348 \uncover<1->{\node [yellowLarge, right=0.05cm of advecpart] (userpartatt) {user\_particle\_attributes+ more};}349 \path<1-> [line] ( advecpart.east) -- (userpartatt.west);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); 350 523 351 524 \uncover<1->{\node [yellowLarge, below=2.15cm of timestepscheme] (interactiondrop) {interaction\_droplets\_ptq};} 352 525 \path<1-> [line,dashed] (interactiondrop.west) -| (timeintegr.south); 353 526 354 \uncover<1->{\node [yellow, below=0. 535cm of advecpart] (asselinfilter) {asselin\_filter};}355 \path<1-> [line,dashed] ( asselinfilter.west) -| (timeintegr.south);356 357 \uncover<1->{\node [yellow, below=0.05cm of asselinfilter] (swaptimelevel) {swap\_timelevel};}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};} 358 531 \path<1-> [line] (swaptimelevel.west) -| (timeintegr.south); 359 532 360 \uncover<1->{\node [yellow, right=0.05cm of swaptimelevel] (boundaryconds) {boundary\_conds};}361 \path<1-> [line] (swaptimelevel.east) -- (boundaryconds.west);362 363 \uncover<1->{\node [yellow, below=0.05cm of swaptimelevel] (disturbfield) {disturb\_field};}364 \path<1-> [line,dashed] (dist urbfield.west) -| (timeintegr.south);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); 365 538 366 539 \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};} … … 372 545 \end{frame} 373 546 374 375 %Folie 08 376 \begin{frame} 377 \frametitle{PALM Flow Chart (IV)} 547 %Folie 10 548 \begin{frame} 549 \frametitle{PALM Flow Chart (VI)} 378 550 379 551 \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny] … … 385 557 \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] 386 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] 387 561 \tikzstyle{line} = [draw, -] 388 562 \tikzstyle{linered} = [draw, color=red, -] … … 417 591 \path<1-> [line] (pres.east) -| (poismg.north); 418 592 419 \uncover<1->{\node [yellow , below=0.355cm of pres] (boundaryconds) {boundary\_conds};}420 \path<1-> [line,dashed] (timeintegr.south) |- ( boundaryconds.west);421 422 \uncover<1->{\node [yellow, below=0. 05cm of boundaryconds] (computevpt) {compute\_vpt};}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};} 423 597 \path<1-> [line,dashed] (timeintegr.south) |- (computevpt.west); 424 425 \uncover<1->{\node [yellowLarge, right=0.05cm of computevpt] (calcliquidwatercontent) {calc\_liquid\_water\_content};}426 \path<1-> [line] (computevpt.east) -- (calcliquidwatercontent.west);427 598 428 599 \uncover<1->{\node [yellow, below=0.05cm of computevpt] (prandtlfluxes) {prandtl\_fluxes};} … … 430 601 431 602 \uncover<1->{\node [yellow, below=0.05cm of prandtlfluxes] (diffusivities) {diffusivities};} 432 \path<1-> [line ] (timeintegr.south) |- (diffusivities.west);433 434 \uncover<1->{\node [ yellowLarge, below=2.855cm of timeintegrspacelarge] (useractionsafter) {user\_actions (after\_integration)};}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)};} 435 606 \path<1-> [line] (timeintegr.south) |- (useractionsafter.west); 436 607 437 608 \uncover<1->{\node [yellow, below=0.575cm of diffusivities] (checkforrestart) {check\_for\_restart};} 438 \path<1-> [line ] (timeintegr.south) |- (checkforrestart.west);609 \path<1-> [line,dashed] (timeintegr.south) |- (checkforrestart.west); 439 610 440 611 \uncover<1->{\node [yellow, right=0.05cm of checkforrestart] (localtremain) {local\_tremain};} … … 444 615 \path<1-> [line,dashed] (timeintegr.south) |- (flowstatistics.west); 445 616 446 \uncover<1->{\node [yellow, right=0.05cm of flowstatistics] (sumup3ddata) {sum\_up\_3d\_data};} 447 \path<1-> [line] (flowstatistics.east) -- (sumup3ddata.west); 448 449 \uncover<1->{\node [yellow, right=0.05cm of sumup3ddata] (calcspectra) {calc\_spectra};} 450 \path<1-> [line] (sumup3ddata.east) -- (calcspectra.west); 451 452 \uncover<1->{\node [yellow, below=0.05cm of flowstatistics] (runcontrol) {run\_control};} 453 \path<1-> [line,dashed] (timeintegr.south) |- (runcontrol.west); 454 455 \uncover<1->{\node [yellow, right=0.05cm of runcontrol] (dataoutput) {data\_output\_***};} 456 \path<1-> [line] (runcontrol.east) -- (dataoutput.west); 457 458 \uncover<1->{\node [yellow, below=0.05cm of runcontrol] (disturbheatflux) {disturb\_heatflux};} 459 \path<1-> [line,dashed] (timeintegr.south) |- (disturbheatflux.west); 460 461 \uncover<1->{\node [yellowLarge, below=2.125cm of useractionsafter] (useractionsaftert) {user\_actions (after\_timestep)};} 462 \path<1-> [line] (timeintegr.south) |- (useractionsaftert.west); 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); 463 631 464 632 \uncover<1->{\node [white2, below=6.6cm of PALM] (continu2) {};} … … 470 638 \end{frame} 471 639 472 473 %Folie 09 474 \begin{frame} 475 \frametitle{PALM Flow Chart (V)} 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)} 476 704 477 705 \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny] … … 506 734 \uncover<1->{\node [yellow, below=0.1cm of redadv] (calcmeanptprofile) {calc\_mean\_pt\_profile};} 507 735 508 \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationsnoopt) {prognostic\_equations\_noopt};}509 \uncover<1->{\node [yellowLarge, right=0.5cm of calcmeanptprofile] (prognosticequationscache) {prognostic\_equations\_cache};}510 \uncover<1->{\node [yellowLarge, below=2.35cm of prognosticequationscache] (prognosticequationsvector) {prognostic\_equations\_vector};}736 % \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationsnoopt) {prognostic\_equations\_noopt};} 737 \uncover<1->{\node [yellowLarge, left=0.5cm of calcmeanptprofile] (prognosticequationscache) {prognostic\_equations\_cache};} 738 \uncover<1->{\node [yellowLarge, right=0.5cm of calcmeanptprofile] (prognosticequationsvector) {prognostic\_equations\_vector};} 511 739 512 740 \uncover<1->{\node [yellow, below=-0.05cm of calcmeanptprofile] (calcradiation) {calc\_radiation};} … … 540 768 .\\ 541 769 .\\ 542 !within subroutines:\\543 DO i=nxl,nxr\\544 \quad DO j=nys,nyn\\545 \quad \quad DO k=nzb+1,nzt\\546 \quad \quad \quad \quad ...\\547 \quad \quad ENDDO\\548 \quad ENDDO\\549 ENDDO\\770 % !within subroutines:\\ 771 % DO i=nxl,nxr\\ 772 % \quad DO j=nys,nyn\\ 773 % \quad \quad DO k=nzb+1,nzt\\ 774 % \quad \quad \quad \quad ...\\ 775 % \quad \quad ENDDO\\ 776 % \quad ENDDO\\ 777 % ENDDO\\ 550 778 } 551 779 };} 552 553 \uncover<1->{\node [bigbox, below=0.05cm of prognosticequationsnoopt] (listingsnoopt1) {554 \texttt{\linespread {0.7}\selectfont\noindent555 DO i=nxl,nxr\\556 \quad DO j=nys,nyn\\557 \quad \quad CALL \textcolor{blue}{u-subr}\\558 \quad ENDDO\\559 ENDDO\\560 }561 };}562 563 \uncover<1->{\node [bigbox, below=0.05cm of listingsnoopt1] (listingsnoopt2) {564 \texttt{\linespread {0.7}\selectfont\noindent565 DO i=nxl,nxr\\566 \quad DO j=nys,nyn\\567 \quad \quad CALL \textcolor{blue}{v-subr}\\568 \quad ENDDO\\569 ENDDO\\570 }571 };}572 573 \uncover<1->{\node [bigbox, below=1.95cm of listingsnoopt2] (listingsnoopt3) {574 \texttt{\linespread {0.7}\selectfont\noindent575 DO i=nxl,nxr\\576 \quad DO j=nys,nyn\\577 \quad \quad CALL \textcolor{blue}{e-subr}\\578 \quad ENDDO\\579 ENDDO\\580 }581 };}582 583 \path<1-> [line,dotted] (listingsnoopt2.south) |- (listingsnoopt3.north);584 585 \uncover<1->{\node [whitesmall, right=-1.35cm of listingsnoopt2] (listingsnoopt251) {};}586 \uncover<1->{\node [whitesmall, below=0.8cm of listingsnoopt251] (listingsnoopt252) {\texttt{\textcolor{blue}{w\\pt\\q or s}}};}587 588 780 \uncover<1->{\node [bigbox2, below=-0.25cm of productioneinitspace2] (foreachvariable) { 589 781 \textcolor{blue}{ … … 621 813 622 814 623 \uncover<2->{\node [Endbox, below= 6.05cm of redadv] (endbox) {815 \uncover<2->{\node [Endbox, below=1.5cm of listingscache] (endboxcache) { 624 816 \texttt{\linespread {0.7}\selectfont\noindent 625 817 !within subroutines:\\ … … 630 822 };} 631 823 632 \uncover<2->{\draw [<-,thick] (endbox.east) -- (listingscache.west);} 633 \uncover<2->{\draw [<-,thick] (endbox.west) -- (listingsnoopt1.east);} 634 \uncover<2->{\draw [<-,thick] (endbox.west) -- (listingsnoopt2.east);} 635 \uncover<2->{\draw [<-,thick] (endbox.west) -- (listingsnoopt3.east);} 824 \uncover<2->{\node [Endbox, below=2.5cm of listingsvector] (endboxvec) { 825 \texttt{\linespread {0.7}\selectfont\noindent 826 !within subroutines:\\ 827 DO i = nxl, nxr \\ 828 \quad DO j = nys, nyn \\ 829 \quad \quad DO k=nzb+1,nzt\\ 830 \quad \quad \quad \textcolor{blue}{...}\\ 831 \quad \quad ENDDO \\ 832 \quad ENDDO \\ 833 ENDDO\\ 834 } 835 };} 836 837 \uncover<2->{\draw [<-,thick] (endboxcache.north) -- (listingscache.south);} 838 \uncover<2->{\draw [<-,thick] (endboxvec.north) -- (listingsvector.south);} 636 839 637 840 \end{tikzpicture} 638 841 \end{frame} 639 842 640 641 %Folie 10 642 \begin{frame} 643 \frametitle{PALM Flow Chart (VI)} 843 %Folie 13 844 \begin{frame} 845 \frametitle{PALM Flow Chart (IX)} 644 846 645 847 \tikzstyle{white} = [rectangle, text width=0.2\textwidth, font=\tiny] … … 651 853 \tikzstyle{yellowlarge} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] 652 854 \tikzstyle{yellowLarge} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, minimum size=13pt, font=\tiny] 855 \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.2\textwidth, minimum size=13pt, font=\tiny] 653 856 \tikzstyle{line} = [draw, -] 654 857 \tikzstyle{linered} = [draw, color=red, -] … … 681 884 \path<1-> [line] (write3dbinary.east) -- (writevarlist.west); 682 885 683 \uncover<1->{\node [yellow, below=0.05cm of write3dbinary] (writeparticles) { write\_particles};}886 \uncover<1->{\node [yellow, below=0.05cm of write3dbinary] (writeparticles) {lpm\_write\_restart\_file};} 684 887 \path<1-> [line] (PALM.south) |- (writeparticles.west); 685 888 … … 687 890 \path<1-> [line] (PALM.south) |- (header.west); 688 891 689 \uncover<1->{\node [ yellow, right=0.05cm of header] (userheader) {user\_header};}892 \uncover<1->{\node [green, right=0.05cm of header] (userheader) {user\_header};} 690 893 \path<1-> [line] (header.east) -- (userheader.west); 691 894 692 \uncover<1->{\node [ yellow, below=0.05cm of header] (userlastactions) {user\_last\_actions};}895 \uncover<1->{\node [green, below=0.05cm of header] (userlastactions) {user\_last\_actions};} 693 896 \path<1-> [line] (PALM.south) |- (userlastactions.west); 694 897 … … 704 907 \end{frame} 705 908 706 %Folie 1 1909 %Folie 14 707 910 \begin{frame}[fragile] 708 911 \frametitle{Important Variables and Their Declaration} … … 731 934 \end{frame} 732 935 733 %Folie 1 2936 %Folie 15 734 937 \begin{frame}[fragile] 735 938 \frametitle{Important Variables and Their Declaration} … … 754 957 \centering 755 958 \begin{lstlisting} 756 REAL, DIMENSION(:,:,:), POINTER :: u, u_ m, u_p, ...959 REAL, DIMENSION(:,:,:), POINTER :: u, u_p, v, v_p, ... 757 960 \end{lstlisting} 758 961 \end{minipage}\\ … … 762 965 \end{frame} 763 966 764 %Folie 1 3967 %Folie 16 765 968 \begin{frame}[fragile] 766 969 \frametitle{Some Other Frequently Used Variables} … … 796 999 797 1000 798 %Folie 1 41001 %Folie 17 799 1002 \begin{frame}[fragile] 800 1003 \frametitle{Preprocessor Directives (I)} … … 840 1043 841 1044 842 %Folie 1 41045 %Folie 18 843 1046 \begin{frame}[fragile] 844 \frametitle{Preprocessor Directives (I )}1047 \frametitle{Preprocessor Directives (II)} 845 1048 \begin{itemize} 846 \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} \texttt{\scriptsize .mrun.config.} \textbf{Different compilers may require different options!}}\\ 1049 \item<1->{The preprocessor directives require to include the compiler option ``\texttt{\scriptsize-cpp}'' in any way. Otherwise, the compilation will give error messages. \textbf{The option has to be given in the configuration file} 1050 \texttt{\scriptsize .mrun.config} in the \texttt{\scriptsize \%cpp\_options} line. \textbf{Different compilers may require different options!}}\\ 847 1051 848 1052 \item<2->{Define-string switches can be combined using logical AND / OR operators \&\& / $\lvert \lvert$.\\ … … 861 1065 862 1066 863 %Folie 1 51067 %Folie 19 864 1068 \begin{frame}[fragile] 865 \frametitle{Preprocessor Directives (II )}1069 \frametitle{Preprocessor Directives (III)} 866 1070 In the PALM code, define-string switches are used for following reasons: 867 1071 \begin{itemize} … … 882 1086 883 1087 884 %Folie 151088 %Folie 20 885 1089 \begin{frame}[fragile] 886 \frametitle{Preprocessor Directives (I I)}1090 \frametitle{Preprocessor Directives (IV)} 887 1091 In the PALM code, define-string switches are used for following reasons: 888 1092 \begin{itemize} … … 898 1102 899 1103 900 %Folie 141104 %Folie 21 901 1105 \begin{frame}[fragile] 902 \frametitle{Preprocessor Directives ( III)}1106 \frametitle{Preprocessor Directives (V)} 903 1107 \begin{itemize} 904 1108 \item<1->{Preprocessor directives are also used for string replacement in the code.\\ Example:\\A compiler call with preprocessor option\\ … … 920 1124 \centering 921 1125 \begin{lstlisting} 922 %cpp_options - DMPI_REAL=MPI_DOUBLE_PRECISION:1126 %cpp_options -cpp:-DMPI_REAL=MPI_DOUBLE_PRECISION: 923 1127 -DMPI_2REAL=MPI_2DOUBLE_PRECISION: .... 924 1128 \end{lstlisting} -
palm/trunk/TUTORIAL/SOURCE/runs_with_mrun.tex
r1165 r1226 65 65 \texttt{ksh}-syntax) which can be used to compile and run programs, including 66 66 the handling of input/output files. 67 \vspace{ 4mm}67 \vspace{3mm} 68 68 \item<2-> The \texttt{mrun}-command has a number of options to control the 69 69 program execution\\ 70 \vspace{2mm} 70 71 \quad \footnotesize \texttt{mrun -d example\underline{ }cbl -h lcsgih -K parallel -X8 -T2 ...}\\ 72 \vspace{2mm} 71 73 \normalsize All options including a short description can be displayed by entering\\ 74 \vspace{2mm} 72 75 \quad \footnotesize \texttt{mrun ?} 73 \vspace{ 4mm}76 \vspace{3mm} 74 77 \item<3-> \normalsize The shellscript execution is also controlled by a configuration file with default name \texttt{.mrun.config} 75 78 \end{itemize} … … 184 187 \draw<7-> [-] (yellow3.east) -- (yellow4.west); 185 188 186 \node [dummy, right=0. 1cm of yellow4] (dummy1) {};187 \node [dummy, right=2.055cm of green] (dummy2) {};189 \node [dummy, right=0.06cm of yellow4] (dummy1) {}; 190 \node [dummy, below=0.38cm of dummy1] (dummy2) {}; 188 191 189 192 \draw<9-> [-] (yellow4.east) -- (dummy1.center); … … 240 243 \begin{frame} 241 244 \tikzstyle{green} = [rectangle, draw, fill=green!20, font=\scriptsize, minimum height=0.6cm] 242 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0. 18\textwidth, font=\scriptsize, minimum height=0.6cm]245 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.2\textwidth, font=\scriptsize, minimum height=0.6cm] 243 246 \tikzstyle{dummy} = [rectangle, text width=0.01\textwidth, font=\scriptsize, minimum height=0.6cm] 244 247 … … 248 251 \setcounter{enumi}{5} 249 252 \item<1-> Copy the output files from the working directory to a (permanent) directory of the user:\\ 253 \vspace{1mm} 250 254 \tiny \quad \texttt{cp /<tmpdir>/<username>.<randomnumber>/<temporary\underline{ }output\underline{ }file1> <user\underline{ }output\underline{ }file1>}\\ 251 255 \quad \texttt{cp /<tmpdir>/<username>.<randomnumber>/<temporary\underline{ }output\underline{ }file2> <user\underline{ }output\underline{ }file2>}\\ 252 256 \footnotesize 253 257 \begin{center} 254 255 \uncover<2->{\node [yellow] (yellow1) {MONITORING/ };}258 \begin{tikzpicture}[auto, node distance=0] 259 \uncover<2->{\node [yellow] (yellow1) {MONITORING/ };} 256 260 257 261 \uncover<2->{\node [dummy, right=0.2cm of yellow1] (dummy2) {};} … … 264 268 \uncover<2->{\node [yellow, left=0.2cm of yellow4] (yellow5) {current\underline{ }version/};} 265 269 266 \uncover<2-3>{\node [green, left= 5.0cm of dummy1] (green) {/$<$tmpdir$>$/$<$username$>$.$<$randomnumber$>$};}270 \uncover<2-3>{\node [green, left=4.0cm of dummy1] (green) {/$<$tmpdir$>$/$<$username$>$.$<$randomnumber$>$};} 267 271 268 272 \draw<2-3> [-] (green.east) -- (dummy1.center); … … 277 281 \draw<2-> [-] (yellow4.west) -- (yellow5.east); 278 282 279 280 283 \end{tikzpicture} 284 \end{center} 281 285 282 286 \item<3-> Delete the temporary working directory\\ … … 348 352 \onslide<1-> The \textbf{base name} can additionally be a part of the directory name 349 353 by using \textcolor{blue}{\texttt{\$fname}} in the directory column of the file connection statement:\\ 354 \vspace{1mm} 350 355 \quad \texttt{PARIN in d3\# \~{}/palm/current\underline{ }version/JOBS/\textcolor{blue}{\$fname}/INPUT \underline{ }p3d}\\ 351 \ \\356 \vspace{1mm} 352 357 \onslide<2-> Using the call\\ 358 \vspace{1mm} 353 359 \quad \texttt{mrun -d \textcolor{blue}{abcde} ...}\\ 360 \vspace{1mm} 354 361 the input file will be expected under\\ 362 \vspace{1mm} 355 363 \quad \texttt{\~{}/palm/current\underline{ }version/JOBS/\textcolor{blue}{abcde}/INPUT/\textcolor{blue}{abcde}\underline{ }p3d }\\ 356 \ \\364 \vspace{1mm} 357 365 \onslide<3-> In this way, all files handled by the \texttt{mrun}-call are stored in 358 366 the same subdirectory (\textcolor{blue}{abcde/}) and will have the same string (\texttt{\textcolor{blue}{abcde}}) as … … 364 372 this at the beginning of the configuration file and be used in the file 365 373 connection statements:\\ 374 \vspace{1mm} 366 375 \quad \texttt{\%base\underline{ }data \~{}/palm/current\underline{ }version/JOBS}\\ 367 376 \quad \texttt{PARIN in d3\# \textcolor{blue}{\$base\underline{ }data}/\textcolor{blue}{\$fname}/INPUT \underline{ }p3d}\\ … … 379 388 have to be activated by giving their activation string in the 380 389 \texttt{mrun}-option \texttt{-r}:\\ 390 \vspace{1mm} 381 391 \quad \texttt{PARIN in d3\# \~{}/palm/current\underline{ }version/JOBS/\$fname/INPUT \underline{ }p3d}\\ 382 392 \ \\ 383 393 \onslide<2-> The permanent file 394 \vspace{1mm} 384 395 \texttt{\~{}/palm/current\underline{ }version/JOBS/example\underline{ }cbl/INPUT/example\underline{ }cbl\underline{ }p3d} 396 \vspace{1mm} 385 397 will only be copied to the local file PARIN by using the call:\\ 398 \vspace{1mm} 386 399 \quad \texttt{mrun -d example\underline{ }cbl -r \dq d3\#\dq\, ...}\\ 387 400 \ \\ 388 401 \onslide<3-> \textbf{Example for an output file:}\\ 389 402 The file connection statement\\ 390 \quad \texttt{DATA\underline{ }1D\underline{ }PR\underline{ }NETCDF out:loc pr\# 391 \~{}/palm/current\underline{ }version/JOBS/\$fname/OUTPUT \underline{ }pr nc}\\ 403 \vspace{1mm} 404 \quad \texttt{DATA\underline{ }1D\underline{ }PR\_NETCDF out:loc pr\# \textbackslash} \\ 405 ~~~~~~\texttt{\~{}/palm/current\underline{ }version/JOBS/\$fname/OUTPUT \underline{ }pr nc}s\\ 406 \vspace{1mm} 392 407 \onslide<4-> will copy (after program execution) the local file 393 408 \texttt{DATA\underline{ }1D\underline{ }PR\underline{ }NETCDF} to the permanent file 409 \vspace{1mm} 394 410 \texttt{\~{}/palm/current\underline{ }version/JOBS/example\underline{ }cbl/OUTPUT/example\underline{ }cbl\underline{ }pr.nc} if 395 411 \texttt{mrun} is called with the options\\ 412 \vspace{1mm} 396 413 \quad \texttt{mrun -d example\underline{ }cbl -r \dq d3\# pr\#\dq\, ...} 397 414 … … 458 475 HEADER out:loc:tr d3# $base_data/$fname/MONITORING _header 459 476 HEADER out:loc:tra d3f $base_data/$fname/MONITORING _header 460 CPU_MEASURES out:loc:tr d3# $base_data/$fname/MONITORING _cpu461 CPU_MEASURES out:loc:tra d3f $base_data/$fname/MONITORING _cpu462 #463 DATA_1D_PR_NETCDF out:loc:tr pr#:prf $base_data/$fname/OUTPUT _pr nc464 DATA_1D_SP_NETCDF out:loc:tr sp#:spf $base_data/$fname/OUTPUT _sp nc465 DATA_1D_TS_NETCDF out:loc:tr ts#:tsf $base_data/$fname/OUTPUT _ts nc466 DATA_1D_PTS_NETCDF out:loc:tr pts#:ptsf $base_data/$fname/OUTPUT _pts nc467 DATA_2D_XY_NETCDF out:loc:tr xy#:xyf $base_data/$fname/OUTPUT _xy nc468 DATA_2D_XY_AV_NETCDF out:loc:tr xy#:xyf $base_data/$fname/OUTPUT _xy_av nc469 DATA_2D_XZ_NETCDF out:loc:tr xz#:xzf $base_data/$fname/OUTPUT _xz nc470 DATA_2D_XZ_AV_NETCDF out:loc:tr xz#:xzf $base_data/$fname/OUTPUT _xz_av nc471 DATA_2D_YZ_NETCDF out:loc:tr yz#:yzf $base_data/$fname/OUTPUT _yz nc472 DATA_2D_YZ_AV_NETCDF out:loc:tr yz#:yzf $base_data/$fname/OUTPUT _yz_av nc473 DATA_3D_NETCDF out:loc:tr 3d#:3df $base_data/$fname/OUTPUT _3d nc474 DATA_3D_AV_NETCDF out:loc:tr 3d#:3df $base_data/$fname/OUTPUT _3d_av nc475 DATA_MASK_01_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m01 nc476 DATA_MASK_01_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m01_av nc477 DATA_MASK_02_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m02 nc478 DATA_MASK_02_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m02_av nc479 DATA_MASK_03_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m03 nc480 DATA_MASK_03_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m03_av nc481 DATA_MASK_04_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m04 nc482 DATA_MASK_04_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m04_av nc483 DATA_MASK_05_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m05 nc484 DATA_MASK_05_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m05_av nc485 DATA_MASK_06_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m06 nc486 DATA_MASK_06_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m06_av nc487 DATA_MASK_07_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m07 nc488 DATA_MASK_07_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m07_av nc489 DATA_MASK_08_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m08 nc490 DATA_MASK_08_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m08_av nc491 DATA_MASK_09_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m09 nc492 DATA_MASK_09_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m09_av nc493 DATA_MASK_10_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m10 nc494 DATA_MASK_10_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m10_av nc495 DATA_MASK_11_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m11 nc496 DATA_MASK_11_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m11_av nc497 DATA_MASK_12_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m12 nc498 DATA_MASK_12_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m12_av nc499 DATA_MASK_13_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m13 nc500 DATA_MASK_13_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m13_av nc501 DATA_MASK_14_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m14 nc502 DATA_MASK_14_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m14_av nc503 DATA_MASK_15_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m15 nc504 DATA_MASK_15_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m15_av nc505 DATA_MASK_16_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m16 nc506 DATA_MASK_16_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m16_av nc507 DATA_MASK_17_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m17 nc508 DATA_MASK_17_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m17_av nc509 DATA_MASK_18_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m18 nc510 DATA_MASK_18_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m18_av nc511 DATA_MASK_19_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m19 nc512 DATA_MASK_19_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m19_av nc513 DATA_MASK_20_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m20 nc514 DATA_MASK_20_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m20_av nc515 DATA_PRT_NETCDF out:loc:trpe prt#:prtf $base_data/$fname/OUTPUT _prt nc516 DATA_DVR out:loc:trpe dvr $base_data/$fname/OUTPUT _dvr517 #518 DVRP_LOG out:loc:tr dv# $base_data/$fname/MONITORING _dvrp_log519 DVRP_LOG out:loc:tra dvf $base_data/$fname/MONITORING _dvrp_log520 PARTICLE_INFO out:loc:tr pt# $base_data/$fname/MONITORING _prt_info521 PARTICLE_INFO out:loc:tra ptf $base_data/$fname/MONITORING _prt_info522 PARTICLE_DATA out:loc:flpe prt#:prtf $base_data/$fname/OUTPUT _prt_dat523 524 477 \end{lstlisting} 525 478 \end{columns} 479 % CPU_MEASURES out:loc:tr d3# $base_data/$fname/MONITORING _cpu 480 % CPU_MEASURES out:loc:tra d3f $base_data/$fname/MONITORING _cpu 481 % # 482 % DATA_1D_PR_NETCDF out:loc:tr pr#:prf $base_data/$fname/OUTPUT _pr nc 483 % DATA_1D_SP_NETCDF out:loc:tr sp#:spf $base_data/$fname/OUTPUT _sp nc 484 % DATA_1D_TS_NETCDF out:loc:tr ts#:tsf $base_data/$fname/OUTPUT _ts nc 485 % DATA_1D_PTS_NETCDF out:loc:tr pts#:ptsf $base_data/$fname/OUTPUT _pts nc 486 % DATA_2D_XY_NETCDF out:loc:tr xy#:xyf $base_data/$fname/OUTPUT _xy nc 487 % DATA_2D_XY_AV_NETCDF out:loc:tr xy#:xyf $base_data/$fname/OUTPUT _xy_av nc 488 % DATA_2D_XZ_NETCDF out:loc:tr xz#:xzf $base_data/$fname/OUTPUT _xz nc 489 % DATA_2D_XZ_AV_NETCDF out:loc:tr xz#:xzf $base_data/$fname/OUTPUT _xz_av nc 490 % DATA_2D_YZ_NETCDF out:loc:tr yz#:yzf $base_data/$fname/OUTPUT _yz nc 491 % DATA_2D_YZ_AV_NETCDF out:loc:tr yz#:yzf $base_data/$fname/OUTPUT _yz_av nc 492 % DATA_3D_NETCDF out:loc:tr 3d#:3df $base_data/$fname/OUTPUT _3d nc 493 % DATA_3D_AV_NETCDF out:loc:tr 3d#:3df $base_data/$fname/OUTPUT _3d_av nc 494 % DATA_MASK_01_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m01 nc 495 % DATA_MASK_01_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m01_av nc 496 % DATA_MASK_02_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m02 nc 497 % DATA_MASK_02_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m02_av nc 498 % DATA_MASK_03_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m03 nc 499 % DATA_MASK_03_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m03_av nc 500 % DATA_MASK_04_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m04 nc 501 % DATA_MASK_04_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m04_av nc 502 % DATA_MASK_05_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m05 nc 503 % DATA_MASK_05_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m05_av nc 504 % DATA_MASK_06_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m06 nc 505 % DATA_MASK_06_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m06_av nc 506 % DATA_MASK_07_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m07 nc 507 % DATA_MASK_07_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m07_av nc 508 % DATA_MASK_08_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m08 nc 509 % DATA_MASK_08_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m08_av nc 510 % DATA_MASK_09_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m09 nc 511 % DATA_MASK_09_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m09_av nc 512 % DATA_MASK_10_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m10 nc 513 % DATA_MASK_10_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m10_av nc 514 % DATA_MASK_11_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m11 nc 515 % DATA_MASK_11_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m11_av nc 516 % DATA_MASK_12_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m12 nc 517 % DATA_MASK_12_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m12_av nc 518 % DATA_MASK_13_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m13 nc 519 % DATA_MASK_13_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m13_av nc 520 % DATA_MASK_14_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m14 nc 521 % DATA_MASK_14_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m14_av nc 522 % DATA_MASK_15_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m15 nc 523 % DATA_MASK_15_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m15_av nc 524 % DATA_MASK_16_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m16 nc 525 % DATA_MASK_16_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m16_av nc 526 % DATA_MASK_17_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m17 nc 527 % DATA_MASK_17_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m17_av nc 528 % DATA_MASK_18_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m18 nc 529 % DATA_MASK_18_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m18_av nc 530 % DATA_MASK_19_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m19 nc 531 % DATA_MASK_19_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m19_av nc 532 % DATA_MASK_20_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m20 nc 533 % DATA_MASK_20_AV_NETCDF out:loc:tr ma#:maf $base_data/$fname/OUTPUT _m20_av nc 534 % DATA_PRT_NETCDF out:loc:trpe prt#:prtf $base_data/$fname/OUTPUT _prt nc 535 % DATA_DVR out:loc:trpe dvr $base_data/$fname/OUTPUT _dvr 536 % # 537 % DVRP_LOG out:loc:tr dv# $base_data/$fname/MONITORING _dvrp_log 538 % DVRP_LOG out:loc:tra dvf $base_data/$fname/MONITORING _dvrp_log 539 % PARTICLE_INFO out:loc:tr pt# $base_data/$fname/MONITORING _prt_info 540 % PARTICLE_INFO out:loc:tra ptf $base_data/$fname/MONITORING _prt_info 541 % PARTICLE_DATA out:loc:flpe prt#:prtf $base_data/$fname/OUTPUT _prt_dat 542 526 543 \end{frame} 527 544 528 545 % Folie 12 529 546 \begin{frame} 530 \frametitle{Additional Features of \texttt{mrun}} 547 \frametitle{Additional Features of \texttt{mrun} (I)} 548 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=1.15\textwidth, font=\Tiny] 531 549 \begin{itemize} 532 550 \footnotesize … … 535 553 \item<3-> Values have to be set in the \texttt{mrun} configuration file \texttt{.mrun.config}: 536 554 \end{itemize} 537 \onslide<4->\hspace{-1cm}\includegraphics[scale=0.3]{mrun_figures/add_feat1.png} 555 \onslide<4->{\hspace{-0.95cm}\begin{tikzpicture}[auto] 556 \node[yellow]{\texttt{\%sgi\_feature \hspace{0.53cm} ice2 \hspace{2.71cm} lcsgih parallel}\\ 557 \texttt{\%modules \hspace{0.87cm} intel.compiler/11.1.072:mpt:phdf5/1.8.5-mpt-intel-11.1:pnetcdf/4.1.1-mpt-intel-11.1 \quad\quad lcsgih parallel}\\ 558 \texttt{\%login\_init\_cmd \hspace{0.25cm} .:/usr/share/modules/init/bash \quad\quad lcsgih parallel}\\ 559 \texttt{\#\%remote\_username \hspace{0.07cm} <replace by your HLRN username> \quad\quad lcsgih parallel}\\ 560 \texttt{\%compiler\_name \hspace{0.35cm} ifort \hspace{2.61cm} lcsgih parallel}\\ 561 \texttt{\%compiler\_name\_ser~ ifort \hspace{2.61cm} lcsgih parallel}\\ 562 \texttt{\%cpp\_options \hspace{0.53cm} -DMPI\_REAL=MPI\_DOUBLE\_PRECISION:-DMPI\_2REAL=MPI\_2DOUBLE\_PRECISION:-D\_\_netcdf:-D\_\_netcdf4:-D\_\_mpi2 \quad lcsgih parallel}\\ 563 \texttt{\%netcdf\_inc \hspace{0.62cm} -I:/sw/dataformats/pnetcdf/netcdf-4.1.1-mpt-intel-11.1/include:-I:/sw/dataformats/phdf5/hdf5-1.8.5-mpt-intel-11.1/in}\\ %clude lcsgih parallel}\\ 564 \texttt{\%netcdf\_lib \hspace{0.62cm} -L/sw/dataformats/pnetcdf/netcdf-4.1.1-mpt-intel-11.1/lib:-lnetcdf:-lnetcdff:-L/sw/dataformats/phdf5/hdf5-1.8.5-mpt-}\\ %intel-11.1/lib:-lhdf5:-lhdf5\_hl:-lz lcsgih parallel}\\ 565 \texttt{\%mopts \hspace{1.06cm} -j:4 \hspace{2.71cm} lcsgih parallel}\\ 566 \texttt{\%fopts \hspace{1.06cm} -fpe0:-O3:-cpp:-r8:-fp-model:precise:-align:all:-ftz:-fno-alias:-no-scalar-rep:-no-prec-div:-no-prec-sqrt:-ip:-nbs:}\\ %-convert:little\_endian:-diag-disable:8290,8291 lcsgih parallel}\\ 567 \texttt{\%lopts \hspace{1.06cm} -fpe0:-O3:-cpp:-r8:-fp-model:precise:-align:all:-ftz:-fno-alias:-no-scalar-rep:-no-prec-div:-no-prec-sqrt:-ip:-nbs:-}\\ %Vaxlib:-lmpi:-limf:-lm lcsgih parallel}\\ 568 \texttt{\%memory \hspace{0.97cm} 1500 \hspace{2.71cm} lcsgih parallel}\\ 569 \texttt{\#\%tmp\_data\_catalog~ /gfs2/work/<replace by your HLRN username>/palm\_restart\_data \quad\quad lcsgih parallel}\\ 570 \texttt{\#\%tmp\_user\_catalog~ /gfs2/tmp/<replace by your HLRN username> \hspace{2.03cm} lcsgih parallel}}; 571 \end{tikzpicture}} 572 % \onslide<4->\hspace{-1cm}\includegraphics[scale=0.3]{mrun_figures/add_feat1.png} 573 % \begin{itemize} 574 % \footnotesize 575 % \item<5-> User-defined unix commands are carried out before or after execution of the model (input/output commands) or in case of errors during the compile- or run-step (error commands). 576 % These commands can also be defined in the \texttt{mrun} configuration file: 577 % \onslide<6-> \includegraphics[scale=0.3]{mrun_figures/add_feat2.png} 578 % \item<7-> Automatic generation of restart jobs. 579 % \end{itemize} 580 \end{frame} 581 582 \begin{frame} 583 \frametitle{Additional Features of \texttt{mrun} (II)} 584 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.75\textwidth, font=\Tiny] 585 538 586 \begin{itemize} 539 587 \footnotesize 540 \item< 5-> User-defined unix commands are carried out before or after execution of the model (input/output commands) or in case of errors during the compile- or run-step (error commands).588 \item<1-> User-defined unix commands are carried out before or after execution of the model (input/output commands) or in case of errors during the compile- or run-step (error commands). 541 589 These commands can also be defined in the \texttt{mrun} configuration file: 542 \onslide<6-> \includegraphics[scale=0.3]{mrun_figures/add_feat2.png} 543 \item<7-> Automatic generation of restart jobs. 590 \begin{center} 591 \onslide<2->{\begin{tikzpicture} 592 \node[yellow]{~\texttt{IC:echo ``PALM will soon start to execute in \textbackslash\$PWD'' > /home/h/niksiraa/mrun\_messages}\\ 593 ~\texttt{EC:ls -al}\\ 594 \vspace{0.5mm} 595 ~\texttt{OC:tar -cf DEBUG.tar DEBUG\_*}}; 596 \end{tikzpicture}} 597 \end{center} 598 599 % \onslide<2-> \includegraphics[scale=0.3]{mrun_figures/add_feat2.png} 600 \item<3-> Automatic generation of restart jobs. 544 601 \end{itemize} 602 545 603 \end{frame} 546 604 … … 595 653 \frametitle{PALM \textit{Batch} Example Run (on HLRN, remote) Using \texttt{mrun}: Tracing the Run by the User} 596 654 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!20, text width=0.3\textwidth, font=\Tiny] 655 \tikzstyle{yellow2} = [rectangle, draw, fill=yellow!20, text width=0.4\textwidth, font=\Tiny] 597 656 \tikzstyle{green} = [rectangle, draw, fill=green!20, text width=0.4\textwidth, font=\Tiny] 598 657 \tikzstyle{dummy} = [text width=0.2\textwidth, font=\Tiny] … … 624 683 \node [green, below=0.2cm of second] (third) { 625 684 \textbf{if job is running, you may follow its progress by watching the job protocol:} \\ 626 \texttt{cd \~ /job\underline{ }queue \\ tail lcmuk\underline{ }example\underline{ }cbl}685 \texttt{cd \~{}/job\underline{ }queue \\ tail lcmuk\underline{ }example\underline{ }cbl} 627 686 }; 628 687 } … … 636 695 \node [green, below=0.2cm of fourth] (fifth) { 637 696 \textbf{when the job is finished, watch, if the job protocol is transferred to the local host without errors:}\\ 638 \texttt{cd \~ /job\underline{ }queue \\ cat last\underline{ }job\underline{ }transfer\underline{ }protocol}697 \texttt{cd \~{}/job\underline{ }queue \\ cat last\underline{ }job\underline{ }transfer\underline{ }protocol} 639 698 }; 640 699 } 641 700 \uncover<7->{ 642 \node [dummy, left=0. 5cm of fifth] (dummy) {701 \node [dummy, left=0.001mm of fifth] (dummy) { 643 702 transfer results by \texttt{scp} \\ 644 703 \ \\ … … 647 706 } 648 707 \uncover<8->{ 649 \node [yellow , left=3.5cm of fifth] (sixth) {708 \node [yellow2, left=2.5cm of fifth] (sixth) { 650 709 \textbf{check, if the job protocol and all output files have successfully been transferred to the local machine:}\\ 651 \texttt{cd \~ /job\underline{ }queue \\ ls -al \\ cd ~/palm/current\underline{ }version/JOBS/example \\ ls -al *}710 \texttt{cd \~{}/job\_queue \\ ls -al \\ cd \~{}/palm/current\_version/JOBS/example \\ ls -al *} 652 711 }; 653 712 } -
palm/trunk/TUTORIAL/SOURCE/sgs_models.tex
r991 r1226 94 94 \begin{frame} 95 95 \frametitle{SGS Models (III)} 96 \onslide<1-> All the above observation suggest the use of an eddy viscosity type SGS model:96 \onslide<1-> All the above observations suggest the use of an eddy viscosity type SGS model: 97 97 \begin{footnotesize} 98 98 \begin{itemize} … … 104 104 \end{itemize} 105 105 \end{footnotesize} 106 \vspace{-0.3cm} 106 107 \onslide<3->Now we need a model for the eddy viscosity: 107 108 \begin{footnotesize} 108 109 \begin{itemize} 109 110 \item<4-> Dimensionality of $\nu_T$ is $l^2/t$ 110 \item<5-> Obvious choice: $\nu_T = Cql$ \hspace{5mm} (q, l: characteri ctic velocity / length scale)111 \item<5-> Obvious choice: $\nu_T = Cql$ \hspace{5mm} (q, l: characteristic velocity / length scale) 111 112 \item<6-> Turbulence length scale is easy to define: largest size of the unresolved scales is $\Delta$ \hspace{10mm} $l = \Delta$ 112 113 \item<7-> Velocity scale not obvious (smallest resolved scales, their size is of the order of the variation of velocity over one grid element) 113 114 \begin{flalign*} 114 115 &q = l \frac{\partial \overline{u}}{\partial x} = l \overline{S}& \text{for 3D: } \overline{S} = \sqrt{2 \overline{S}_{ki}\,\overline{S}_{ki}} \hspace{15mm} \\ 115 & & \text{characteri ctic filtered rate of strain}\hspace{15mm}116 & & \text{characteristic filtered rate of strain}\hspace{15mm} 116 117 \end{flalign*} 117 118 \end{itemize} … … 163 164 \end{frame} 164 165 165 166 % Folie 7167 \begin{frame}168 \frametitle{The Smagorinsky Model: Performance}169 \begin{itemize}170 \item<2-> Predicts many flows reasonably well171 \item<3-> Problems:172 \begin{itemize}173 \item<3-> Optimum parameter value varies with flow type:174 \begin{itemize}175 \item Isotropic turbulence: $C_S \approx 0.2$\\176 \item Shear (channel) flows: $C_S \approx 0.065$177 \end{itemize}178 \item<4-> Length scale uncertain with anisotropic filter:179 \begin{equation*}180 (\Delta_x \Delta_y \Delta_z)^{1/3} \hspace{5mm} (\Delta_x + \Delta_y + \Delta_z)/3181 \end{equation*}182 \item<5-> Needs modification to account for:183 \begin{itemize}184 \item stratification: $C_S = F(Ri,...)$, $Ri$: Richardson number\\185 \item near-wall region: $C_S = F(z+)$, $z+$: distance from wall186 \end{itemize}187 \end{itemize}188 \end{itemize}189 \end{frame}190 191 192 166 \section{Deardoff Modification} 193 167 \subsection{Deardoff Modification} 194 168 195 % Folie 8169 % Folie 7 196 170 \begin{frame} 197 171 \frametitle{Deardorff (1980) Modification (Used in PALM) (I)} … … 199 173 \onslide<1->{ 200 174 $ \nu_T = Cql = C_M \Lambda \sqrt{\bar{e}} $ \quad \textbf{with} \quad $ \bar{e} = \frac{\overline{u_i' u_i'}}{2} $ \quad \textbf{SGS-turbulent kinetic energy}} 201 \normalsize 202 \begin{itemize} 203 \item<2->{The SGS-TKE allows a much better estimation of the velocity scale for the SGS fluctuations and also contains information about the past history of the local fluid.} 175 \small 176 \begin{itemize} 177 \item<2->{The SGS-TKE allows a much better estimation of the velocity scale for the SGS fluctuations and also contains information about the past history of the 178 local fluid.} 204 179 \end{itemize} 180 \small 205 181 \onslide<3->{ 206 182 $ C_M = const. = 0.1 $ … … 210 186 min\left( 0.7 \cdot z, \Delta, 0.76 \sqrt{\bar{e}} \left[ \frac{g}{\Theta_0} \frac{\partial \bar{\Theta}}{\partial z} \right]^{-1/2} \right), & \textbf{stable stratification} 211 187 \end{cases} $ 212 \ normalsize188 \small 213 189 \par\bigskip 214 190 $ \Delta = \left( \Delta x \Delta y \Delta z \right)^{1/3} $ } 215 191 \end{frame} 216 192 217 % Folie 9193 % Folie 8 218 194 \begin{frame} 219 195 \frametitle{Deardorff (1980) Modification (Used in PALM) (II)} … … 236 212 \end{frame} 237 213 238 % Folie 10214 % Folie 9 239 215 \begin{frame} 240 216 \frametitle{Deardorff (1980) Modification (Used in PALM) (III)} … … 261 237 \subsection{Summary / Important Points for Beginners} 262 238 263 % Folie 1 1239 % Folie 10 264 240 \begin{frame} 265 241 \frametitle{Summary / Important Points for Beginners (I)} 266 242 \begin{columns}[c] 267 243 \column[T]{0.4\textwidth} 268 \includegraphics<2-7 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_2.png}269 \includegraphics<8 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_8.png}270 \includegraphics<9 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_9.png}271 \includegraphics<10 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_10.png}244 \includegraphics<2-7|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_2.png} 245 \includegraphics<8|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_8.png} 246 \includegraphics<9|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_9.png} 247 \includegraphics<10|handout:1>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_10.png} 272 248 \onslide<8-10>{\begin{flushright} \begin{tiny} after Schatzmann and Leitl (2001) \end{tiny} \end{flushright}} 273 249 \column[T]{0.2\textwidth} 274 250 \vspace{0.9cm} 275 \includegraphics<8-10 >[width=0.7\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_arrow.png}251 \includegraphics<8-10|handout:1>[width=0.7\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_arrow.png} 276 252 \par 277 \onslide<8- >{\begin{small} fluctuations (\textbf{u},c) \end{small}}253 \onslide<8-|handout:1>{\begin{small} fluctuations (\textbf{u},c) \end{small}} 278 254 \par\bigskip 279 255 \thicklines 280 \onslide<9- >{\mbox{\line(6,0){5} \, \line(1,0){5} \, \line(1,0){5} \quad \begin{small} {critical concentration level} \end{small}}}256 \onslide<9-|handout:1>{\mbox{\line(6,0){5} \, \line(1,0){5} \, \line(1,0){5} \quad \begin{small} {critical concentration level} \end{small}}} 281 257 \vspace{1cm} 282 258 283 \includegraphics<8-10 >[width=0.7\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_arrow.png}259 \includegraphics<8-10|handout:1>[width=0.7\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_arrow.png} 284 260 \par 285 261 \onslide<8->{\begin{small} smooth result \end{small}} 286 262 \column[T]{0.4\textwidth} 287 \includegraphics<1-2 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_1_neu.png}288 \includegraphics<3 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_3_neu.png}289 \includegraphics<4 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_4.png}290 \includegraphics<5-10 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_5.png}263 \includegraphics<1-2|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_1_neu.png} 264 \includegraphics<3|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_3_neu.png} 265 \includegraphics<4|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_4.png} 266 \includegraphics<5-10|handout:1>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_5.png} 291 267 \vspace{1.3cm} 292 \includegraphics<6 >[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_6_neu.png}293 \uncover<7- >{\includegraphics[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_7_neu.png}}268 \includegraphics<6|handout:0>[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_6_neu.png} 269 \uncover<7-|handout:1>{\includegraphics[width=\textwidth]{sgs_models_figures/Important_Points/Important_Points_1_7_neu.png}} 294 270 \end{columns} 295 271 \end{frame} 296 272 297 % Folie 1 2273 % Folie 11 298 274 \begin{frame} 299 275 \frametitle{Summary / Important Points for Beginners (II)} … … 315 291 \subsection{Example Output} 316 292 293 % Folie 12 294 \begin{frame} 295 \frametitle{Example Output (I)} 296 \begin{itemize} 297 \item{LES of a convective boundary layer} 298 \end{itemize} 299 \includegraphics<1|handout:0>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_1.png} 300 \includegraphics<2|handout:0>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_2.png} 301 \includegraphics<3|handout:0>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_3.png} 302 \includegraphics<4|handout:0>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_4.png} 303 \includegraphics<5|handout:0>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_5.png} 304 \includegraphics<6|handout:0>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_6.png} 305 \includegraphics<7|handout:1>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_7.png} 306 \end{frame} 307 317 308 % Folie 13 318 \begin{frame}319 \frametitle{Example Output (I)}320 \begin{itemize}321 \item{LES of a convective boundary layer}322 \end{itemize}323 \includegraphics<1>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_1.png}324 \includegraphics<2>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_2.png}325 \includegraphics<3>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_3.png}326 \includegraphics<4>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_4.png}327 \includegraphics<5>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_5.png}328 \includegraphics<6>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_6.png}329 \includegraphics<7>[width=\textwidth]{sgs_models_figures/Example_Output_1/Example_Output_1_7.png}330 \end{frame}331 332 % Folie 14333 309 \begin{frame} 334 310 \frametitle{Example Output (II)} … … 342 318 \end{frame} 343 319 344 % Folie 1 5320 % Folie 14 345 321 \begin{frame} 346 322 \frametitle{Some Symbols} -
palm/trunk/TUTORIAL/SOURCE/topography.tex
r973 r1226 216 216 % \includegraphics[width=0.6\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_small3.png} 217 217 \column{0.6\textwidth} 218 \includegraphics<1 >[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_1.png}219 \includegraphics<2 >[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_2.png}220 \includegraphics<3 >[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_3.png}221 \includegraphics<4 >[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_4.png}222 \includegraphics<5 >[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_5.png}218 \includegraphics<1|handout:0>[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_1.png} 219 \includegraphics<2|handout:0>[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_2.png} 220 \includegraphics<3|handout:0>[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_3.png} 221 \includegraphics<4|handout:0>[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_4.png} 222 \includegraphics<5|handout:1>[width=\textwidth]{topography_figures/technical_implementation_grid/technical_implementation_grid_5.png} 223 223 \end{columns} 224 224 \end{frame} … … 234 234 \item{The layout of example\_topo must conform to the computational domain size and to the grid size dx and dy.} 235 235 \item{The rastered height data of example\_topo are given in m above ground and do not need to match 236 the vertical grid, since they are interpolated.}236 the vertical grid, since they will be interpolated, if required.} 237 237 \par\bigskip 238 238 \item{Software known to be able to perfom the rastering process of GIS data in vector and/or raster format to PALM raster format:} … … 259 259 \end{itemize} 260 260 \end{itemize} 261 \item{\dq 2 $\Delta$x\dq instabilities }261 \item{\dq 2 $\Delta$x\dq instabilities (only if Piacsek-Williams advection scheme is used)} 262 262 \begin{itemize} 263 263 \item{Upstream of obstacle walls} 264 264 \item{Due to second-order finite difference advection scheme} 265 265 \item{Model remains stable throughout the simulation} 266 \item{The default Wicker-Skamarock scheme does not show any instabilities} 266 267 \end{itemize} 267 268 \end{itemize} … … 332 333 \item{{\tt '\textcolor{blue}{cell\_center}'} \hspace{1.9cm} default for \textcolor{blue}{rastered} topography: \textcolor{blue}{$\bigcirc$ $\leftrightarrow$}} 333 334 \end{itemize} 334 \includegraphics<1 >[width=0.5\textwidth]{topography_figures/control_parameters_1.png}335 \includegraphics<2 >[width=0.5\textwidth]{topography_figures/control_parameters_2.png}336 \includegraphics<3 >[width=0.5\textwidth]{topography_figures/control_parameters_3.png}337 \includegraphics<4 >[width=0.5\textwidth]{topography_figures/control_parameters_4.png}335 \includegraphics<1|handout:0>[width=0.5\textwidth]{topography_figures/control_parameters_1.png} 336 \includegraphics<2|handout:0>[width=0.5\textwidth]{topography_figures/control_parameters_2.png} 337 \includegraphics<3|handout:0>[width=0.5\textwidth]{topography_figures/control_parameters_3.png} 338 \includegraphics<4|handout:1>[width=0.5\textwidth]{topography_figures/control_parameters_4.png} 338 339 \end{frame} 339 340 … … 595 596 We are unable to check all these combinations by ourselves and rely on your help! 596 597 \par\bigskip 597 For example, the combination of topography and non-cyclic lateral boundary conditions has not yet been tested598 because both features have originally been introduced separately for different research projects.599 \par\bigskip598 % For example, the combination of topography and non-cyclic lateral boundary conditions has not yet been tested 599 % because both features have originally been introduced separately for different research projects. 600 % \par\bigskip 600 601 Therefore, we ask you for your responsibility and contribution: 601 602 \begin{itemize} -
palm/trunk/TUTORIAL/SOURCE/user_defined_code.tex
r1080 r1226 15 15 \usepackage{tikz} 16 16 \usetikzlibrary{shapes,arrows,positioning} 17 \usetikzlibrary{decorations.markings} %neues paket18 \usetikzlibrary{decorations.pathreplacing} %neues paket17 %\usetikzlibrary{decorations.markings} %neues paket 18 %\usetikzlibrary{decorations.pathreplacing} %neues paket 19 19 \def\Tiny{\fontsize{4pt}{4pt}\selectfont} 20 20 \usepackage{amsmath} … … 70 70 \textbf{Problem:} 71 71 \begin{itemize} 72 \item<3-> If a new PALM version is released (current release is 3. 8) and the user wants to use it, he would have to add his modifications to the new release again.72 \item<3-> If a new PALM version is released (current release is 3.9) and the user wants to use it, he would have to add his modifications to the new release again. 73 73 \end{itemize} 74 74 \vspace{3mm} … … 85 85 \begin{frame} 86 86 \frametitle{General Structure of the User-Interface} 87 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\Tiny] 87 88 \scriptsize 88 89 \begin{itemize} … … 92 93 \end{itemize} 93 94 \onslide<3-> 94 \centering 95 \includegraphics[scale=0.3]{user_defined_code_figures/user_last_actions.png}\\ 95 \begin{center} 96 \begin{tikzpicture}[auto] 97 \node[yellow]{~\texttt{SUBROUTINE user\_last\_actions} \\ 98 \par\medskip 99 \texttt{!------------------------------------------------------------------------------!}\\ 100 \texttt{!}\\ 101 \texttt{! Description:}\\ 102 \texttt{! ------------}\\ 103 \texttt{! Execution of user-defined actions at the end of a job.}\\ 104 \texttt{!------------------------------------------------------------------------------!}\\ 105 \par\medskip 106 ~~~~\texttt{USE control\_parameters}\\ 107 ~~~~\texttt{USE user}\\ 108 \par\medskip 109 ~~~~\texttt{IMPLICIT NONE}\\ 110 \par\medskip 111 \texttt{!}\\ 112 \texttt{!-- Here the user-defined actions at the end of a job follow.}\\ 113 \texttt{!-- Sample for user-defined output:}\\ 114 \vspace{0.5mm} 115 ~~~~\texttt{IF ( write\_binary(1:4) == 'true' ) THEN}\\ 116 \vspace{0.5mm} 117 \texttt{!~~~~~~~IF ( ALLOCATED( u2\_av ) ) THEN}\\ 118 \vspace{0.5mm} 119 \texttt{!~~~~~~~~~~WRITE ( 14 ) 'u2\_av~~~~~~~~~~~~~~~'; WRITE ( 14 ) u2\_av}\\ 120 \vspace{0.5mm} 121 \texttt{!~~~~~~~ENDIF}\\ 122 \par\medskip 123 ~~~~~~~\texttt{WRITE ( 14 ) '*** end user ***~~~~'}\\ 124 \par\medskip 125 ~~~~\texttt{ENDIF}\\ 126 \par\medskip 127 ~\texttt{END SUBROUTINE user\_last\_actions}}; 128 \end{tikzpicture} 129 \end{center} 130 % \includegraphics[scale=0.3]{user_defined_code_figures/user_last_actions.png}\\ 96 131 \end{frame} 97 132 … … 99 134 \begin{frame} 100 135 \frametitle{Embedding of User-Interface Routines} 136 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\Tiny] 101 137 \scriptsize 102 138 \begin{itemize} … … 106 142 \end{itemize} 107 143 \onslide<2-> 108 \centering 109 \includegraphics[scale=0.33]{user_defined_code_figures/embedding.png}\\ 144 \begin{center} 145 \begin{tikzpicture}[auto] 146 \node[yellow]{~\texttt{...}\\ 147 \vspace{0.5mm} 148 \texttt{!}\\ 149 \texttt{!-- If required, final user-defined actions, and}\\ 150 \texttt{!-- last actions on the open files and close files. Unit 14 was opened}\\ 151 \texttt{!-- in write\_3d\_binary but it is closed here, to allow writing on this}\\ 152 \texttt{!-- unit in routine user\_last\_actions.}\\ 153 \vspace{0.5mm} 154 ~~~~\texttt{CALL cpu\_log( log\_point(4), 'last actions', 'start' )}\\ 155 ~~~~\texttt{DO i = 0, io\_blocks-1}\\ 156 ~~~~~~~\texttt{IF ( i == io\_group ) THEN}\\ 157 ~~~~~~~~~~\texttt{\textcolor{blue}{CALL user\_last\_actions}}\\ 158 \vspace{0.5mm} 159 ~~~~~~~~~~\texttt{IF ( write\_binary(1:4) == 'true' ) CALL close\_file( 14 )}\\ 160 ~~~~~~~\texttt{ENDIF}\\ 161 \vspace{0.5mm} 162 \texttt{\#if defined( \_\_parallel )}\\ 163 ~~~~~~~\texttt{CALL MPI\_BARRIER( comm2d, ierr )}\\ 164 \vspace{0.5mm} 165 \texttt{\#endif}\\ 166 \vspace{0.5mm} 167 ~~~~\texttt{ENDDO}\\ 168 \vspace{0.5mm} 169 ~~~~\texttt{CALL close\_file( 0 )}\\ 170 \vspace{0.5mm} 171 ~~~~\texttt{CALL close\_dvrp}\\ 172 ~~~~\texttt{CALL cpu\_log( log\_point(4), 'last actions', 'stop' )}\\ 173 \vspace{1mm} 174 ~\texttt{...}\\ 175 \vspace{1mm} 176 \texttt{!}\\ 177 \texttt{!-- Take final CPU-time for CPU-time analysis}\\ 178 ~~~~\texttt{CALL cpu\_log( log\_point(1), 'total', 'stop' )}\\ 179 ~~~~\texttt{CALL cpu\_statistics}\\ 180 \texttt{\#if defined( \_\_parallel )}\\ 181 ~~~~\texttt{CALL MPI\_FINALIZE( ierr )}\\ 182 \vspace{0.5mm} 183 \texttt{\#endif}\\ 184 \par\medskip 185 ~\texttt{END PROGRAM palm}}; 186 \end{tikzpicture} 187 \end{center} 188 189 % \includegraphics[scale=0.33]{user_defined_code_figures/embedding.png}\\ 110 190 \end{frame} 111 191 … … 119 199 % Define colours 120 200 \tikzstyle{green} = [draw, fill=green!30, text width=7.1em, text centered, minimum height=1.6em] 201 \tikzstyle{green1} = [draw, fill=green!30, text width=12em, text centered, minimum height=1.6em] 202 \tikzstyle{green2} = [draw, fill=green!30, text width=10em, text centered, minimum height=1.6em] 121 203 \tikzstyle{yellow} = [draw, fill=yellow!30, text width=7.1em, text centered, minimum height=1.6em] 122 204 \tikzstyle{orange} = [draw, fill=orange!60, text width=7.1em, text centered] 123 205 124 206 % Define coordinates and draw nodes 125 \node[ green, text width=5em] (PALM) at (0,0.1) {PALM};207 \node[yellow, text width=5em] (PALM) at (0,0.1) {PALM}; 126 208 127 209 \coordinate (A) at (0,-0.7); 128 129 \node[green, right=0.6cm of A] (parin) {parin}; 130 131 \coordinate[below=0.3cm of parin] (B); 132 \coordinate[below=0.9cm of parin] (C); 133 \coordinate[below=1.5cm of parin] (D); 134 135 \node[green, right=0.6cm of B] (read) {read\_var\_list}; 136 \node[green, right=0.6cm of C] (package) {package\_parin}; 137 \node[yellow, right=0.6cm of D] (userparin) {user\_parin}; 138 139 \coordinate[below=3cm of PALM] (E); 140 \coordinate[below=3.6cm of PALM] (F); 141 \coordinate[below=4.2cm of PALM] (G); 142 \coordinate[below=4.8cm of PALM] (H); 143 \coordinate[below=5.6cm of PALM] (I); 144 \coordinate[below=7.4cm of PALM] (J); 145 146 \node[green, right=0.6cm of E] (initpegrid) {init\_pegrid}; 147 \node[green, right=0.6cm of F] (initgrid) {init\_grid}; 148 \node[yellow, right=0.9cm of initgrid] (userinitgrid) {user\_init\_grid}; 149 150 \node[green, right=0.6cm of G] (checkparameters) {check\_parameters}; 151 \node[yellow, right=0.9cm of checkparameters, text width=9.5em] (usercheckdataoutput) {user\_check\_data\_output}; 152 \node[green, right=0.6cm of H] (header) {header}; 153 \node[green, right=0.6cm of I] (init3dmodel) {init\_3d\_model}; 154 \node[yellow, right=0.9cm of header] (userheader) {user\_header}; 155 156 \node[orange, right=0.6cm of J] (timeint) {time\_integration}; 157 158 \coordinate[below=0.3cm of init3dmodel] (K); 159 \coordinate[below=0.9cm of init3dmodel] (L); 160 161 \node[green, right=0.6cm of K] (initparticles) {init\_particles}; 162 \node[yellow, right=0.9cm of initparticles] (userinitparticles) {user\_init\_particles}; 163 \node[yellow, right=0.6cm of L] (userinit) {user\_init}; 164 165 % Draw lines 166 \draw[-, thick] (PALM) -- (0,-7.8); 167 \draw[dotted, thick] (0,-8.2) -- (0,-7.8); 168 \draw[-, thick] (A) -- (parin); 169 \draw[-, thick] (parin) -- (D); 170 \draw[dashed, thick] (B) -- (read); 171 \draw[dashed, thick] (C) -- (package); 172 \draw[-, thick] (D) -- (userparin); 173 \draw[-, thick] (E) -- (initpegrid); 174 \draw[-, thick] (F) -- (initgrid); 175 \draw[-, thick] (G) -- (checkparameters); 176 \draw[-, thick] (H) -- (header); 177 \draw[-, thick] (I) -- (init3dmodel); 178 \draw[-, thick] (J) -- (timeint); 179 \draw[dotted, thick] (init3dmodel) -- (K); 180 \draw[-, thick] (K) -- (L); 181 \draw[dashed, thick] (K) -- (initparticles); 182 \draw[-, thick] (L) -- (userinit); 183 \draw[-, thick] (initgrid) -- (userinitgrid); 184 \draw[-, thick] (checkparameters) -- (usercheckdataoutput); 185 \draw[-, thick] (header) -- (userheader); 186 \draw[-, thick] (initparticles) -- (userinitparticles); 210 \node[yellow, right=0.6cm of A] (parin) {parin}; 211 212 \node[green, right=1mm of parin] (userparin) {user\_parin}; 213 \draw[-] (parin) -- (userparin); 214 215 \coordinate[below=0.6cm of A] (B); 216 \node[yellow, right=0.6cm of B] (initgrid) {init\_grid}; 217 218 \node[green, right=1mm of initgrid] (userinigrid) {user\_init\_grid}; 219 \draw[-] (initgrid) -- (userinigrid); 220 221 \coordinate[below=0.6cm of B] (C); 222 \node[yellow, right=0.6cm of C] (checkparam) {check\_parameters}; 223 224 \coordinate[below=0.3cm of checkparam] (D); 225 \node[green1, right=0.6cm of D] (usercheckdataout) {user\_check\_data\_output/\_pr}; 226 227 \coordinate[below=0.55cm of D] (E); 228 \node[green1, right=0.6cm of E] (usercheckparam) {user\_check\_parameters}; 229 230 \coordinate[below=1.7cm of C] (F); 231 \node[yellow, right=0.6cm of F] (init3dmodel) {init\_3d\_model}; 232 233 \coordinate[below=0.3cm of init3dmodel] (G); 234 \node[green2, right=0.6cm of G] (userinit3d) {user\_init\_3d\_model}; 235 236 \coordinate[below=0.55cm of G] (H); 237 \node[yellow, right=0.6cm of H] (read3dbin) {read\_3d\_binary}; 238 239 \coordinate[below=0.3cm of read3dbin] (I); 240 \node[green1, right=0.6cm of I] (userreadrestart) {user\_read\_restart\_data}; 241 242 \coordinate[below=1.15cm of H] (J); 243 \node[green1, right=0.6cm of J] (userinitplan) {user\_init\_plant\_canopy}; 244 245 \coordinate[below=0.6cm of J] (K); 246 \node[yellow, right=0.6cm of K] (lpminit) {lpm\_init}; 247 248 \node[green, right=1mm of lpminit] (userlpminit) {user\_lpm\_init}; 249 \draw[-] (lpminit) -- (userlpminit); 250 251 \coordinate[below=0.6cm of K] (L); 252 \node[green, right=0.6cm of L] (userinit) {user\_init}; 253 254 \coordinate[below=4.05cm of F] (M); 255 \node[yellow, right=0.6cm of M] (header) {header}; 256 257 \node[green, right=1mm of header] (userheader) {user\_header}; 258 \draw[-] (header) -- (userheader); 259 % 260 % Draw lines 261 \draw[-, thick] (PALM) -- (0,-7.8); 262 \draw[dotted, thick] (0,-8.2) -- (0,-7.8); 263 \draw[-] (A) -- (parin); 264 \draw[-] (B) -- (initgrid); 265 \draw[-] (C) -- (checkparam); 266 \draw[-] (checkparam.south) |- (usercheckdataout.west); 267 \draw[-] (checkparam.south) |- (usercheckparam.west); 268 \draw[-] (F) -- (init3dmodel); 269 \draw[-,dashed] (init3dmodel.south) |- (userinit3d.west); 270 \draw[-,dashed] (init3dmodel.south) |- (read3dbin.west); 271 \draw[-] (read3dbin.south) |- (userreadrestart.west); 272 \draw[-,dashed] (init3dmodel.south) |- (userinitplan); 273 \draw[-,dashed] (init3dmodel.south) |- (lpminit); 274 \draw[-] (init3dmodel.south) |- (userinit); 275 \draw[-] (M) -- (header); 187 276 188 277 \end{tikzpicture} … … 197 286 % Define colours 198 287 \tikzstyle{green} = [draw, fill=green!30, text width=7.1em, text centered, minimum height=1.6em] 288 \tikzstyle{green1} = [draw, fill=green!30, text width=10em, text centered, minimum height=1.6em] 199 289 \tikzstyle{yellow} = [draw, fill=yellow!30, text width=7.1em, text centered, minimum height=1.6em] 200 290 \tikzstyle{orange} = [draw, fill=orange!60, text width=7.1em, text centered] … … 214 304 \coordinate[right=3.8cm of D] (E); 215 305 216 \node[ yellow, right=0.6cm of B, text width=14em] (useractions1) {\textcolor{blue}{user\_actions\_(\textit{'before\_timestep'})}};306 \node[green, right=0.6cm of B, text width=14em] (useractions1) {\textcolor{blue}{user\_actions\_(\textit{'before\_timestep'})}}; 217 307 218 308 \node[orange1, below=0.2cm of D] (progeq) {prognostic\_equations}; … … 220 310 \node[draw, fill=red, text width=4em] at (8.6,-0.8) {\textcolor{white}{standard advection}}; 221 311 222 \node[ yellow, right=0.3cm of progframe, text width=14em] (useractions2) {\textcolor{blue}{user\_actions\_(\textit{'*\_tendency'})}};312 \node[green, right=0.3cm of progframe, text width=14em] (useractions2) {\textcolor{blue}{user\_actions\_(\textit{'*\_tendency'})}}; 223 313 224 314 … … 229 319 230 320 231 \node[ green, right=0.6cm of F] (advecparticles) {advec\_particles};232 \node[ yellow, right=0.9cm of advecparticles, text width=10em] (userparticlesattributes) {user\_particles\_attributes};233 \node[ green, right=0.6cm of G] (exchangehoriz) {exchange\_horiz};234 \node[green, right=0.0cm of exchangehoriz] (asselin) {asselin\_filter};235 \node[ green, right=0.6cm of H] (swaptimelevel) {swap\_timelevel};236 \node[ green, right=0.6cm of I] (pres) {pres};321 \node[yellow, right=0.6cm of F] (lpm) {lpm}; 322 \node[green, right=0.9cm of lpm, text width=10em] (userlpmadvec) {user\_lpm\_advec}; 323 \node[yellow, right=0.6cm of G] (exchangehoriz) {exchange\_horiz}; 324 % \node[yellow, right=0.0cm of exchangehoriz] (asselin) {asselin\_filter}; 325 \node[yellow, right=0.6cm of H] (swaptimelevel) {swap\_timelevel}; 326 \node[yellow, right=0.6cm of I] (pres) {pres}; 237 327 238 328 \coordinate[below=0.3cm of pres] (J); … … 244 334 \coordinate[below=8.8cm of timeint] (P); 245 335 246 \node[green, right=0.6cm of K] (prandtlfluxes) {prandtl\_fluxes}; 247 \node[yellow, right=0.6cm of L, text width=14em] (useractions3) {\textcolor{blue}{user\_actions\_(\textit{'after\_integration'})}}; 248 \node[green, right=0.6cm of M] (diffusivities) {diffusivities}; 249 \node[green, right=0.0cm of diffusivities] {check\_for\_restart}; 250 \node[green, right=0.6cm of N] (flowstat) {flow\_statistics}; 251 \node[green, right=0.0cm of flowstat] (runcontrol) {run\_control}; 252 \node[yellow, below=0.2cm of flowstat] (userstat) {user\_statistics}; 253 \node[yellow, right=0.6cm of O, text width=14em] (useractions4) {\textcolor{blue}{user\_actions\_(\textit{'after\_timestep'})}}; 254 \node[green, right=0.6cm of P] (timestep) {timestep}; 255 256 \node[green, right=0.2cm of runcontrol] (dataoutput) {data\_output\_***}; 257 \node[yellow, right=0.2cm of dataoutput] (userdvrpcoltab) {user\_dvrp\_coltab}; 336 % \node[yellow, right=0.6cm of K] (prandtlfluxes) {prandtl\_fluxes}; 337 \node[green, right=0.6cm of K, text width=14em] (useractions3) {\textcolor{blue}{user\_actions\_(\textit{'after\_integration'})}}; 338 % \node[yellow, right=0.6cm of L] (diffusivities) {diffusivities}; 339 % \node[yellow, right=0.6cm of L] (checkrestart) {check\_for\_restart}; 340 \node[yellow, right=0.6cm of L] (flowstat) {flow\_statistics}; 341 \node[green, right=0.6cm of flowstat] (userstat2) {user\_statistics}; 342 343 \node[yellow, right=0.6cm of M] (sum3ddata) {sum\_up\_3d\_data}; 344 \node[green1, right=0.6cm of sum3ddata] (user3ddataav) {user\_3d\_data\_averaging}; 345 346 \node[green, right=0.6cm of O, text width=14em] (useractions4) {\textcolor{blue}{user\_actions\_(\textit{'after\_timestep'})}}; 347 % \node[yellow, right=0.6cm of P] (timestep) {timestep}; 348 349 \node[yellow, right=0.2cm of user3ddataav] (dataoutput) {data\_output\_***}; 350 \node[green, right=0.2cm of dataoutput] (userdvrpcoltab) {user\_dvrp\_coltab}; 258 351 \coordinate[below=0.2cm of dataoutput] (Q); 259 352 \coordinate[right=0.4cm of Q] (R); 260 353 \coordinate[right=3.0cm of R] (S); 261 354 262 \node[ yellow, below=0.2cm of R, text width=9em] (output2d) {user\_data\_output\_2d};263 \node[ yellow, below=0.2cm of S, text width=9em] (output3d) {user\_data\_output\_3d};355 \node[green, below=0.2cm of R, text width=9em] (output2d) {user\_data\_output\_2d}; 356 \node[green, below=0.2cm of S, text width=9em] (output3d) {user\_data\_output\_3d}; 264 357 265 358 … … 276 369 \draw[->, thick, color=red] (E) -- (progeqfast); 277 370 \draw[-, thick] (progframe) -- (useractions2); 278 \draw[-, thick] (F) -- ( advecparticles);279 \draw[-, thick] (user particlesattributes) -- (advecparticles);371 \draw[-, thick] (F) -- (lpm); 372 \draw[-, thick] (userlpmadvec) -- (lpm); 280 373 \draw[-, thick] (G) -- (exchangehoriz); 281 374 \draw[-, thick] (H) -- (swaptimelevel); 282 375 \draw[-, thick] (I) -- (pres); 283 376 \draw[dotted, thick] (pres) -- (J); 284 \draw[-, thick] (K) -- (prandtlfluxes); 285 \draw[-, thick] (L) -- (useractions3); 286 \draw[-, thick] (M) -- (diffusivities); 287 \draw[-, thick] (N) -- (flowstat); 288 \draw[-, thick] (userstat) -- (flowstat); 377 % \draw[-, thick] (K) -- (prandtlfluxes); 378 \draw[-, thick] (K) -- (useractions3); 379 \draw[-, thick] (L) -- (flowstat); 380 \draw[-, thick] (M) -- (sum3ddata); 381 \draw[-, thick] (sum3ddata) -- (user3ddataav); 382 383 \draw[-, thick] (userstat2) -- (flowstat); 289 384 \draw[-, thick] (O) -- (useractions4); 290 \draw[-, thick] (P) -- (timestep);385 % \draw[-, thick] (O) -- (timestep); 291 386 \draw[-, thick] (dataoutput) -- (Q); 292 387 \draw[-, thick] (S) -- (Q); … … 320 415 \coordinate[below=2.5cm of PALM] (D); 321 416 322 \node[ green, right=0.6cm of D] (write3dbinary) {write\_3d\_binary};323 \node[ green, right=0.9cm of write3dbinary] (writevarlist) {write\_var\_list};417 \node[yellow, right=0.6cm of D] (write3dbinary) {write\_3d\_binary}; 418 \node[yellow, right=0.9cm of write3dbinary] (writevarlist) {write\_var\_list}; 324 419 325 420 \coordinate[below=3.5cm of PALM] (E); 326 421 \coordinate[below=4.1cm of PALM] (F); 327 422 \coordinate[below=4.7cm of PALM] (G); 328 \node[ green, right=0.6cm of E] (header) {header};329 \node[ yellow, right=0.6cm of F] (userlastactions) {user\_last\_actions};330 \node[ green, right=0.6cm of G] (cpustat) {cpu\_statistics};423 \node[yellow, right=0.6cm of E] (header) {header}; 424 \node[green, right=0.6cm of F] (userlastactions) {user\_last\_actions}; 425 \node[yellow, right=0.6cm of G] (cpustat) {cpu\_statistics}; 331 426 % Draw lines 332 427 \draw[-, thick] (PALM) -- (G); … … 351 446 \textbf{Name} & \textbf{Arguments} & \textbf{Called from} & \textbf{Task}\\ 352 447 \hline 353 \texttt{user\_3d\_data\_averaging} & \texttt{mode}, \texttt{variable} & \texttt{ sum\_up\_3d\_data} & temporal averaging for user-defined quantities\\448 \texttt{user\_3d\_data\_averaging} & \texttt{mode}, \texttt{variable} & \texttt{average\_3d\_data} + \texttt{sum\_up\_3d\_data} & temporal averaging for user-defined quantities\\ 354 449 \hline 355 450 \texttt{user\_actions} \texttt{user\_actions} & \texttt{location} \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, \texttt{i}, \texttt{j}, \texttt{location} & \texttt{time\_integration} + … … 358 453 \texttt{user\_dummy (user\_additional \_routines.f90)} & - - - & - - - & for additional subroutines defined by the user\\ 359 454 \hline 360 \texttt{user\_advec\_particles} & - - - & \texttt{advec\_particles} & modification of particles after advection\\ 361 \hline 362 \texttt{user\_check\_data\_output} & \texttt{variable}, \texttt{unit} & \texttt{check\_parameters} & check the user-defined output quantities\\ 455 \texttt{user\_check\_data\_output} & \texttt{variable}, \texttt{unit} & \texttt{check\_parameters} + \texttt{init\_masks}& check the user-defined output quantities\\ 363 456 \hline 364 457 \texttt{user\_check\_data\_output\_pr} & \texttt{variable}, \texttt{var\_count}, \texttt{unit} & \texttt{check\_parameters} & check the user-defined profile output quantities\\ … … 366 459 \texttt{user\_check\_parameters} & - - - & \texttt{check\_parameters} & check user-defined variables\\ 367 460 \hline 368 \texttt{user\_data\_output\_2d} & \texttt{av}, \texttt{variable}, \texttt{found}, \texttt{grid}, \texttt{local\_pf} & \texttt{data\_output\_2d} & output/calculation of additional user-defined quantities\\461 \texttt{user\_data\_output\_2d} & \texttt{av}, \texttt{variable}, \texttt{found}, \texttt{grid}, \texttt{local\_pf}, \texttt{two\_d} & \texttt{data\_output\_2d} & output/calculation of additional user-defined quantities\\ 369 462 \hline 370 463 \texttt{user\_data\_output\_3d} & \texttt{av}, \texttt{variable}, \texttt{found}, \texttt{local\_pf}, \texttt{nz\_do} & \texttt{data\_output\_3d} & output/calculation of additional user-defined quantities\\ … … 377 470 \hline 378 471 \texttt{user\_dvrp\_coltab} & \texttt{mode}, \texttt{variable} & \texttt{data\_output\_dvrp} & defining color tables for particles\\ 379 \hline 472 \hline 473 \texttt{user\_header} & \texttt{io} & \texttt{header} & output user variables to header\\ 474 \hline 475 \texttt{user\_init} & - - - & \texttt{init\_3d\_model} & e.g. reading from restart file\\ 476 \hline 380 477 \end{tabular} 381 478 … … 391 488 \textbf{Name} & \textbf{Arguments} & \textbf{Called from} & \textbf{Task}\\ 392 489 \hline 393 \texttt{user\_header} & \texttt{io} & \texttt{header} & output user variables to header\\394 \hline395 \texttt{user\_init} & - - - & \texttt{init\_3d\_model} & e.g. reading from restart file\\396 \hline397 490 \texttt{user\_init\_3d\_model} & - - - & \texttt{init\_3d\_model} & special initializations\\ 398 491 \hline 399 \texttt{user\_init\_grid} & \texttt{gls} , \texttt{nzb\_local}& \texttt{init\_grid} & defining a special topography\\492 \texttt{user\_init\_grid} & \texttt{gls} & \texttt{init\_grid} & defining a special topography\\ 400 493 \hline 401 \texttt{user\_init\_particles} & - - - & \texttt{init\_particles} & defining initial particle sources\\402 \hline403 494 \texttt{user\_init\_plant\_canopy} & - - - & \texttt{init\_3d\_model} & setting of leaf area density and canopy drag coefficient\\ 404 495 \hline 405 496 \texttt{user\_last\_actions} & - - - & \texttt{palm} & e.g. output for restart runs\\ 406 \hline 497 \hline 498 \texttt{user\_lpm\_advec} & - - - & \texttt{lpm} & modification of particles after advection \\ 499 \hline 500 \texttt{user\_lmp\_init} & - - - & \texttt{lpm\_init} & defining initial particle sources \\ 501 \hline 502 \texttt{user\_lpm\_set\_attributes} & - - - & \texttt{lpm} & defining particles attributes \\ 503 \hline 407 504 \texttt{MODULE user (user\_module.f90)} & - - - & - - - & contains user defined variables\\ 408 505 \hline 409 506 \texttt{user\_parin} & & \texttt{parin} & reading user variables\\ 410 \hline 411 \texttt{user\_particle\_attributes} & - - - & \texttt{advec\_particles} & defining particles attributes\\ 412 \hline 507 \hline 413 508 \texttt{user\_read\_restart\_data} & \texttt{i}, \texttt{nxlfa}, \texttt{nxl\_on\_file}, \texttt{nxrfa}, \texttt{nxr\_on\_file}, \texttt{nynfa}, \texttt{nyn\_on\_file}, \texttt{nysfa}, \texttt{nys\_on\_file}, \texttt{offset\_xa}, \texttt{offset\_ya}, \texttt{overlap\_count}, \texttt{tmp\_2d}, \texttt{tmp\_3d} & \texttt{read\_3d\_binary} & reading user-defined 2d/3d-arrays from the restart file\\ 414 509 \hline 415 \texttt{user\_spectra} & \texttt{mode}, \texttt{m}, \texttt{pr} & \texttt{ data\_output\_spectra} & output/calculation of additional user-defined quantities\\510 \texttt{user\_spectra} & \texttt{mode}, \texttt{m}, \texttt{pr} & \texttt{calc\_spectra} + \texttt{data\_output\_spectra} & output/calculation of additional user-defined quantities\\ 416 511 \hline 417 512 \texttt{user\_statistics} & \texttt{mode}, \texttt{sr}, \texttt{tn} & \texttt{flow\_statistics} & calculating additional horizontal averages + time series quantities\\ … … 429 524 \begin{frame} 430 525 \frametitle{Data Access / Exchange} 526 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.6\textwidth, font=\tiny] 431 527 \footnotesize 432 528 \begin{itemize} … … 436 532 \item<3-> by including the respective PALM modules in the user-interface subroutines.\\ 437 533 \begin{center} 438 \includegraphics[scale=0.3]{user_defined_code_figures/data_access_exchange.png} 534 % \includegraphics[scale=0.3]{user_defined_code_figures/data_access_exchange.png} 535 \begin{tikzpicture}[auto] 536 \node[yellow]{\texttt{SUBROUTINE user\_actions( location )} \\ 537 \par\medskip 538 ~~~~~\texttt{\textcolor{blue}{USE arrays\_3d}} \\ 539 ~~~~~\texttt{\textcolor{blue}{USE control\_parameters}} \\ 540 ~~~~~\texttt{\textcolor{blue}{USE cpulog}} \\ 541 ~~~~~\texttt{\textcolor{blue}{USE indices}} \\ 542 ~~~~~\texttt{\textcolor{blue}{USE interfaces}} \\ 543 ~~~~~\texttt{\textcolor{blue}{USE pegrid}} \\ 544 ~~~~~\texttt{\textcolor{red}{USE user}} \\ 545 \par\medskip 546 ~~~~~\texttt{IMPLICIT NONE} \\ 547 \par\medskip 548 ~~~~~\texttt{CHARACTER (LEN=$^\ast$) :: location} \\ 549 \par\medskip 550 ~~~~~\texttt{INTEGER :: i, j, k}}; 551 \end{tikzpicture} 439 552 \end{center} 440 553 \end{itemize} … … 451 564 \begin{frame} 452 565 \frametitle{Usage of \texttt{user\underline{ }actions} (I)} 566 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\tiny] 453 567 \scriptsize 454 568 \begin{itemize} 455 569 \item<1-> \texttt{user\underline{ }actions} is designed to add additional terms to the prognostic equations or to carry out special actions at the beginning or the end of each timestep. 456 \vspace{ 2mm}570 \vspace{1.8mm} 457 571 \item<2-> Therefore, several calls of \texttt{user\underline{ }actions} can be found in the default PALM routines \texttt{time\underline{ }integration} and \texttt{prognostic\underline{ }equations}. The place from which it is called is communicated to the routine by a string-argument, e.g.\\ 458 572 \ \\ … … 461 575 \onslide<3-> It means that this call is from a place within \texttt{prognostic\underline{ }equations}, where the tendencies for the u-component are calculated and integrated: 462 576 \end{itemize} 463 \vspace{- 2mm}577 \vspace{-3mm} 464 578 \begin{center} 465 \includegraphics[scale=0.33]{user_defined_code_figures/user_actions_1.png} 579 \begin{tikzpicture}[auto] 580 \node[yellow] {\texttt{DO i = nxl, nxr} \\ 581 ~~~\texttt{DO j = nys, nyn} \\ 582 \texttt{...} \\ 583 ~~~~~~\texttt{CALL diffusion\_u( i, j )}\\ 584 ~~~~~~\texttt{CALL coriolis( i, j, 1 )} \\ 585 \texttt{...}\\ 586 ~~~~~~\texttt{\textcolor{blue}{CALL user\_actions( i, j, 'u-tendency' )}}\\ 587 \texttt{!} \\ 588 \texttt{!-- Prognostic equation for u-velocity component} \\ 589 ~~~~~~\texttt{DO k = nzb\_u\_inner(j,i)+1, nzt} \\ 590 ~~~~~~~~~\texttt{u\_p(k,j,i) = u(k,j,i) + dt\_3d * ( tsc(2) * tend(k,j,i) + \&} \\ 591 \hspace{4.08cm} \texttt{tsc(3) * tu\_m(k,j,i) ) \&} \\ 592 \hspace{2.93cm} \texttt{- tsc(5) * rdf(k) * ( u(k,j,i) - ug(k) )}\\ 593 ~~~~~~\texttt{ENDDO} \\ 594 \texttt{...}}; 595 \end{tikzpicture} 466 596 \end{center} 597 % \begin{center} 598 % \includegraphics[scale=0.33]{user_defined_code_figures/user_actions_1.png} 599 % \end{center} 467 600 \end{frame} 468 601 … … 470 603 \begin{frame} 471 604 \frametitle{Usage of \texttt{user\underline{ }actions} (II)} 605 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\tiny] 472 606 \scriptsize 473 607 \begin{itemize} … … 475 609 \end{itemize} 476 610 \begin{center} 477 \includegraphics[scale=0.35]{user_defined_code_figures/user_actions_2.png} 611 \begin{tikzpicture}[auto] 612 \node[yellow]{~\texttt{SUBROUTINE user\_actions( location )}\\ 613 \texttt{...}\\ 614 \texttt{!}\\ 615 \texttt{!-- Here the user-defined actions follow}\\ 616 \texttt{!-- No calls for single grid points are allowed at locations before and}\\ 617 \texttt{!-- after the timestep, since these calls are not within an i,j-loop}\\ 618 ~~~~~~~\texttt{SELECT CASE ( location )}\\ 619 \texttt{...}\\ 620 ~~~~~~~~~~\texttt{CASE ( 'after\_timestep' )}\\ 621 \texttt{!}\\ 622 \texttt{!-- Enter actions to be done after every timestep here}\\ 623 \par\medskip 624 ~~~~~~~~~~\texttt{CASE ( 'u-tendency' )}\\ 625 \texttt{!}\\ 626 \texttt{!-- Enter actions to be done in the u-tendency term here}\\ 627 ~~~~~~~~~~~~~\texttt{\textcolor{blue}{DO i = nxl, nxr}}\\ 628 ~~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{DO j = nys, nyn}}\\ 629 ~~~~~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{DO k = nxb+1, nzt}}\\ 630 ~~~~~~~~~~~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{tend(k,j,i) = tend(k,j,i) - const * u(k,j,i) ...}}\\ 631 ~~~~~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{ENDDO}}\\ 632 ~~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{ENDDO}}\\ 633 ~~~~~~~~~~~~~\texttt{\textcolor{blue}{ENDDO}}\\ 634 \par\bigskip 635 ~~~~~~~~~~\texttt{CASE ( 'v-tendency' )}\\ 636 \texttt{...}}; 637 \end{tikzpicture} 638 % \includegraphics[scale=0.35]{user_defined_code_figures/user_actions_2.png} 478 639 \end{center} 479 640 \end{frame} … … 482 643 \begin{frame}[t] 483 644 \frametitle{Usage of \texttt{user\underline{ }actions} (III)} 645 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.5\textwidth, font=\Tiny] 484 646 \scriptsize 485 647 \begin{columns}[T] … … 507 669 \uncover<4->{% 508 670 \begin{tikzpicture}[remember picture, overlay] 509 \node [shift={(8.3 cm,3.0cm)}] at (current page.south west) 510 {% 511 \begin{tikzpicture}[remember picture, overlay] 512 \node[text width=14em] at (0,0) {\includegraphics[scale=0.3]{user_defined_code_figures/user_actions_3.png}}; 513 \end{tikzpicture} 514 }; 671 \node [yellow,shift={(9.2 cm,3.0cm)}] at (current page.south west){~\texttt{SUBROUTINE user\_actions\_ij( i, j, location )}\\ 672 \par\medskip 673 ~~~\texttt{USE control\_parameters}\\ 674 ~~~\texttt{USE pegrid}\\ 675 ~~~\texttt{USE user}\\ 676 \par\medskip 677 ~~~\texttt{IMPLICIT NONE}\ 678 \par\medskip 679 ~~~\texttt{CHARACTER (LEN=*) :: location}\\ 680 \par\medskip 681 ~~~\texttt{INTEGER :: i, idum, j}\\ 682 \par\medskip 683 \texttt{!}\\ 684 \texttt{!-- Here the user-defined actions follow}\\ 685 \vspace{0.5mm} 686 ~~~\texttt{SELECT CASE ( location )}\\ 687 \par\medskip 688 ~~~~~~\texttt{CASE ( 'u-tendency' )}\\ 689 \texttt{!}\\ 690 \texttt{!--Enter actions to be done in the u-tendency term here}\\ 691 ~~~~~~~~~\texttt{\textcolor{blue}{DO k = nzb+1, nzt-1}}\\ 692 ~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{tend(k,j,i) = tend(k,j,i) + ...}}\\ 693 ~~~~~~~~~\texttt{\textcolor{blue}{ENDDO}}\\ 694 \par\medskip 695 ~~~~~~\texttt{CASE ( 'v-tendency' )}}; 696 % {% 697 % \begin{tikzpicture}[remember picture, overlay] 698 % % \node[text width=14em] at (0,0) {\includegraphics[scale=0.3]{user_defined_code_figures/user_actions_3.png}}; 699 % \end{tikzpicture} 700 % }; 515 701 \end{tikzpicture}} 516 702 … … 520 706 \begin{frame} 521 707 \frametitle{Steering the User-Interface} 708 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\Tiny] 522 709 \scriptsize 523 710 \begin{columns}[T] … … 530 717 \item<1-> Add the variable name to module \texttt{user} in order to define it and to make it available in all user-interface subroutines. Set a default value for this variable. 531 718 \begin{center} 532 \includegraphics[scale=0.3]{user_defined_code_figures/steering_1.png} 719 % \includegraphics[scale=0.3]{user_defined_code_figures/steering_1.png} 720 \begin{tikzpicture} 721 \node[yellow]{~\texttt{MODULE user}\\ 722 \vspace{0.4mm} 723 \texttt{...}\\ 724 \vspace{0.4mm} 725 ~\texttt{REAL \hspace{0.4cm}:: ~~\textcolor{blue}{foo = 0.0}}\\ 726 \vspace{0.4mm} 727 \texttt{...}\\ 728 \vspace{0.4mm} 729 ~\texttt{END MODULE user}}; 730 \end{tikzpicture} 533 731 \end{center} 534 732 \vspace{1mm} 535 733 \item<2-> Add the variable to the NAMELIST \texttt{/userpar/}. This NAMELIST already contains four predefined variables. 536 734 \begin{center} 537 \includegraphics[scale=0.3]{user_defined_code_figures/steering_2.png} 735 % \includegraphics[scale=0.3]{user_defined_code_figures/steering_2.png} 736 \begin{tikzpicture} 737 \node[yellow]{~\texttt{SUBROUTINE user\_parin}\\ 738 \vspace{0.4mm} 739 \texttt{...}\\ 740 \vspace{0.4mm} 741 ~~~~~\texttt{NAMELIST ~~/userpar/ ~~ data\_output\_pr\_user, data\_output\_user,}\\ 742 \vspace{0.4mm} 743 \hspace{3cm}\texttt{\textcolor{blue}{foo}, region}\\ 744 \vspace{0.4mm} 745 \texttt{...}\\ 746 \vspace{0.4mm} 747 ~\texttt{END SUBROUTINE user\_parin}}; 748 \end{tikzpicture} 538 749 \end{center} 539 750 \vspace{1mm} 540 751 \item<3-> Add the NAMELIST \texttt{\&userpar} to the parameter file (e.g. \texttt{example\underline{ }cbl\underline{ }p3d}) and assign a value to this variable. 541 752 \begin{center} 542 \includegraphics[scale=0.3]{user_defined_code_figures/steering_3.png} 753 % \includegraphics[scale=0.3]{user_defined_code_figures/steering_3.png} 754 \begin{tikzpicture} 755 \node[yellow]{~\texttt{\&inipar ~~~ nx = ... ~~/}\\ 756 \vspace{0.4mm} 757 ~\texttt{\&d3par ~~~ end\_time = 3600.0, ... ~~/}\\ 758 \par\smallskip 759 ~\texttt{\textcolor{blue}{\&userpar ~~foo = 12345.6 ~~/}}}; 760 \end{tikzpicture} 543 761 \end{center} 544 762 \vspace{1mm} … … 575 793 \begin{frame} 576 794 \frametitle{User-Defined Data for Restart Runs (I)} 795 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\tiny] 577 796 \scriptsize 578 797 \begin{itemize} … … 583 802 \end{itemize} 584 803 \begin{center} 585 \includegraphics[scale=0.3]{user_defined_code_figures/restart_1.png} 804 % \includegraphics[scale=0.3]{user_defined_code_figures/restart_1.png} 805 \begin{tikzpicture}[auto] 806 \node[yellow]{~\texttt{SUBROUTINE user\_last\_actions}\\ 807 \texttt{...}\\ 808 ~~~~~\texttt{\textcolor{blue}{WRITE ( 14 ) 'foo \hspace{2cm}'; WRITE ( 14 ) foo}}\\ 809 ~~~~~\texttt{\textcolor{blue}{WRITE ( 14 ) 'bar \hspace{2cm}'; WRITE ( 14 ) bar}} 810 \par\smallskip 811 ~~~~~\texttt{WRITE ( 14 ) '*** end user *** \hspace{0.66cm}'} 812 \par\smallskip 813 ~\texttt{END SUBROUTINE user\_last\_actions}}; 814 \end{tikzpicture} 586 815 \end{center} 587 816 \end{frame} … … 590 819 \begin{frame} 591 820 \frametitle{User-Defined Data for Restart Runs (II)} 821 \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.95\textwidth, font=\tiny] 592 822 \scriptsize 593 823 \begin{itemize} 594 824 \item Additionally, these variables have to be read from the restart file (file-id \grqq \texttt{13}\grqq\,, local filename \texttt{BININ}) by adding code to the routine \texttt{user\underline{ }read\underline{ }restart\underline{ }data}: 595 825 \end{itemize} 826 \vspace{-2.7mm} 596 827 \begin{center} 597 \includegraphics[scale=0.3]{user_defined_code_figures/restart_2.png} 828 % \includegraphics[scale=0.3]{user_defined_code_figures/restart_2.png} 829 \begin{tikzpicture} 830 \node[yellow]{\texttt{~SUBROUTINE user\_read\_restart\_data( i, nxlfa, nxl\_on\_file, nxrfa, nxr\_on\_file, \&} \\ 831 \hspace{3.84cm}\texttt{nynfa, nyn\_on\_file, nysfa, nys\_on\_file, \&} \\ 832 \hspace{3.84cm}\texttt{offset\_xa, offset\_ya, overlap\_count, \&} \\ 833 \hspace{3.84cm}\texttt{tmp\_2d, tmp\_3d )}\\ 834 \texttt{...} \\ 835 ~~~~~\texttt{IF ( initializing\_actions == 'read\_restart\_data' ) THEN}\\ 836 ~~~~~~~~~\texttt{READ ( 13 ) field\_char} \\ 837 ~~~~~~~~~\texttt{DO WHILE ( TRIM( field\_char ) '*** end user ***' )}\\ 838 \par\smallskip 839 ~~~~~~~~~~~~~\texttt{nxlf = nxlfa(i,k)} 840 \texttt{...} \\ 841 ~~~~~~~~~~~~~\texttt{SELECT CASE ( TRIM( field\_char ) )}\\ 842 \par\smallskip 843 ~~~~~~~~~~~~~~~~~\texttt{CASE ( '\textcolor{blue}{foo}' )} \\ 844 ~~~~~~~~~~~~~~~~~~~~~\texttt{IF ( .NOT. ALLOCATED( \textcolor{blue}{foo} ) ) THEN}\\ 845 ~~~~~~~~~~~~~~~~~~~~~~~~~\texttt{ALLOCATE( \textcolor{blue}{foo}(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )}\\ 846 ~~~~~~~~~~~~~~~~~~~~~\texttt{ENDIF}\\ 847 ~~~~~~~~~~~~~~~~~~~~~\texttt{IF ( k == 1 ) READ ( 13 ) tmp\_3d}\\ 848 ~~~~~~~~~~~~~~~~~~~~~\texttt{\textcolor{blue}{foo}(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = \&} \\ 849 \hspace{4.5cm}\texttt{tmp\_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)}\\ 850 \texttt{...}\\ 851 ~~~~~~~~~~~~~\texttt{END SELECT}\\ 852 \par\smallskip 853 ~~~~~~~~~\texttt{ENDDO} 854 \par\smallskip 855 ~~~~~~~~~\texttt{READ ( 13 ) field\_char}\\ 856 \par\smallskip 857 ~~~~~~~~~\texttt{ENDDO}\\ 858 ~~~~~\texttt{ENDIF}\\ 859 \par\smallskip 860 ~\texttt{END SUBROUTINE user\_read\_restart\_data}}; 861 \end{tikzpicture} 598 862 \end{center} 599 863 \end{frame} … … 610 874 \item<2-> Copy the default (empty) user-interface files that you need (e.g. user\underline{ }module.f90, user\underline{ }parin.f90, user\underline{ }actions.f90) to a directory of your choice, e.g.:\\ 611 875 \tiny 876 \par\smallskip 612 877 \quad \texttt{cd \~{ }/palm/current\underline{ }version}\\ 613 878 \quad \texttt{mkdir -p USER\underline{ }CODE/example\underline{ }cbl}\\
Note: See TracChangeset
for help on using the changeset viewer.