%$Id: particle_model_cloud_physics.tex 1515 2015-01-02 11:35:51Z keck $ \input{header_tmp.tex} %\input{../header_lectures.tex} \usepackage[utf8]{inputenc} \usepackage{ngerman} \usepackage{pgf} \usepackage{subfigure} \usepackage{units} \usepackage{multimedia} \usepackage{hyperref} \newcommand{\event}[1]{\newcommand{\eventname}{#1}} \usepackage{xmpmulti} \usepackage{tikz} \usetikzlibrary{shapes,arrows,positioning} \usetikzlibrary{calc} %neues paket \usetikzlibrary{decorations.markings} %neues paket \usetikzlibrary{decorations.pathreplacing} %neues paket \def\Tiny{\fontsize{4pt}{4pt}\selectfont} \usepackage{amsmath} \usepackage{amssymb} \usepackage{multicol} \usepackage{pdfcomment} \usepackage{graphicx} \usepackage{listings} \lstset{showspaces=false,language=fortran,basicstyle= \ttfamily,showstringspaces=false,captionpos=b} \institute{Institute of Meteorology and Climatology, Leibniz Universität Hannover} \selectlanguage{english} \date{last update: \today} \event{PALM Seminar} \setbeamertemplate{navigation symbols}{} \setbeamertemplate{footline} { \begin{beamercolorbox}[rightskip=-0.1cm]& {\includegraphics[height=0.65cm]{imuk_logo.pdf}\hfill \includegraphics[height=0.65cm]{luh_logo.pdf}} \end{beamercolorbox} \begin{beamercolorbox}[ht=2.5ex,dp=1.125ex, leftskip=.3cm,rightskip=0.3cm plus1fil]{title in head/foot} {\leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor} \hfill \eventname \hfill \insertframenumber \; / \inserttotalframenumber} \end{beamercolorbox} \begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot} \end{beamercolorbox} } %\logo{\includegraphics[width=0.3\textwidth]{luhimuk_logo.pdf}} \title[PALM's Lagrangian Particle Model]{PALM's Lagrangian Particle Model} \author{PALM group} \begin{document} % Folie 1 \begin{frame} \titlepage \end{frame} \section{The embedded Lagrangian particle model} \subsection{The embedded Lagrangian particle model} % Folie 2 \begin{frame} \frametitle{Overview} \begin{itemize} \item<1-> The Lagrangian particle model embedded in PALM can be used for different purposes: \begin{itemize} \footnotesize \item Cloud droplet simulation \item Dispersion modeling / Footprint analysis \item Visualization \end{itemize} \vspace{3mm} \item<2-> Therefore the particles can have different properties, e.g.: \begin{itemize} \footnotesize \item Particles can be transported (advected) \textbf{passively} with the \textbf{resolved-scale} flow \item Particle transport by the subgrid-scale (SGS) turbulence can be included by switching on a stochastic SGS model for the particle transport (parameter: \texttt{use\underline{ }sgs\underline{ }for\underline{ }particles}) \item Particles can be given a mass and thus an \textbf{inertia} and a \textbf{radius} which affects their \textbf{flow resistance} (parameter: \texttt{density\underline{ }ratio}, \texttt{radius}) \end{itemize} \end{itemize} \end{frame} % Folie 3 \begin{frame} \frametitle{Basics} \small \begin{itemize} \item<1-> The particle model is switched on by adding a \texttt{\&particles\underline{ }par} NAMELIST to the parameter file (PARIN). This NAMELIST has to be added \textbf{after} the \texttt{\&d3par}-NAMELIST. \item All parameters for steering the particle model are described in: Documentation $\rightarrow$ Model steering $\rightarrow$ Parameters $\rightarrow$ Particles (http://palm.muk.uni-hannover.de/) \item \textbf{The particle model requires to use a constant vertical grid spacing (due to the implemented scheme for the interpolation of information from the LES grid to particle positions, that is required for the calculation of particle velocities)!} \end{itemize} \end{frame} % Folie 4 \begin{frame} \frametitle{Basic Particle Parameters (I)} \small Parameters that define the locations of particle source(s): \begin{itemize} \item Step I: Define the volume of the particle source \end{itemize} \begin{tikzpicture} \definecolor{darkgreen1}{rgb}{0.2,0.7,0.2} \definecolor{darkgreen2}{rgb}{0.4,0.7,0.4} \definecolor{darkgreen3}{rgb}{0.1,0.6,0.2} % Draw the box \onslide<2-> \draw[-] (0,0) -- (5,0); \draw[-] (0,0) -- (0,4); \draw[-] (5,4) -- (5,0); \draw[-] (0,4) -- (5,4); \draw[-] (2,1.5) -- (7,1.5); \draw[-] (2,1.5) -- (2,5.5); \draw[-] (7,5.5) -- (7,1.5); \draw[-] (2,5.5) -- (7,5.5); \draw[-] (0,0) -- (2,1.5); \draw[-] (5,0) -- (7,1.5); \draw[-] (5,4) -- (7,5.5); \draw[-] (0,4) -- (2,5.5); \node at (4,5) {\small Total model domain}; % Draw coordinate system \node at (8.5,2.5) [scale=1.0] {% \begin{tikzpicture} \draw[->] (0,0) -- (1,0); \draw[->] (0,0) -- (0,1); \draw[->] (0,0) -- (0.5,0.5); \node at (-0.2,0.9) {z}; \node at (0.9,-0.2) {x}; \node at (0.65,0.3) {y}; \end{tikzpicture} }; % Draw green box \onslide<3-> \draw[fill=darkgreen1,draw=darkgreen1,opacity=.95] (0,1) -- (3,1) -- (3,2.5) -- (0,2.5) -- cycle ; \draw[fill=darkgreen2,draw=darkgreen2,opacity=.95] (3,1) -- (4,1.75) -- (4,3.25) -- (3,2.5) -- cycle ; \draw[fill=darkgreen3,draw=darkgreen3,opacity=.95] (0,2.5) -- (3,2.5) -- (4,3.25) -- (1,3.25) -- cycle ; \node at (1.5,2) {\small \glqq Source Volume\grqq }; % Dashed green lines \draw[dashed, ultra thick, color=darkgreen3] (0,1) -- (0,0); \draw[dashed, ultra thick, color=darkgreen3] (3,1) -- (3,0); \draw[dashed, ultra thick, color=darkgreen3] (3,1) -- (5,1); \draw[dashed, ultra thick, color=darkgreen3] (4,1.75) -- (6,1.75); \draw[dashed, ultra thick, color=darkgreen3] (5,1) -- (5,0); \draw[dashed, ultra thick, color=darkgreen3] (6,1.75) -- (6,0.75); % Add Labels \node at (1,-0.25) {\scriptsize \texttt{psl} (default 0.0)}; \node at (4.25,-0.25) {\scriptsize \texttt{psr} (default \texttt{nx*dx})}; \node at (7,0) {\scriptsize \texttt{pss} (default 0.0)}; \node at (8,0.75) {\scriptsize \texttt{psn} (default \texttt{ny*dy})}; \node [text width=4em] at (-0.7,0.5) {\scriptsize \texttt{psb} (default zu(\texttt{nz}/2))}; \node [text width=4em] at (-0.7,2) {\scriptsize \texttt{pst} (default zu(\texttt{nz}/2))}; \onslide<1-> \end{tikzpicture} \end{frame} % Folie 5 \begin{frame} \frametitle{Basic Particle Parameters (II)} \small Parameters that define the locations of particle source(s): \begin{itemize} \item Step IIa: Define the points of single particle release \end{itemize} \begin{tikzpicture} \definecolor{darkgreen}{rgb}{0.0,0.35,0.0} \definecolor{darkgreen3}{rgb}{0.2,0.6,0.2} \definecolor{darkred}{rgb}{0.5,0.0,0.0} % Draw green box (except for one line that is drawn later) \draw[-, ultra thick, color=darkgreen3] (0,0) -- (5,0); \draw[-, ultra thick, color=darkgreen3] (0,0) -- (0,4); \draw[-, ultra thick, color=darkgreen3] (0,4) -- (5,4); \draw[-, ultra thick, color=darkgreen3] (2,1.5) -- (7,1.5); \draw[-, ultra thick, color=darkgreen3] (2,1.5) -- (2,5.5); \draw[-, ultra thick, color=darkgreen3] (7,5.5) -- (7,1.5); \draw[-, ultra thick, color=darkgreen3] (2,5.5) -- (7,5.5); \draw[-, ultra thick, color=darkgreen3] (0,0) -- (2,1.5); \draw[-, ultra thick, color=darkgreen3] (5,0) -- (7,1.5); \draw[-, ultra thick, color=darkgreen3] (5,4) -- (7,5.5); \draw[-, ultra thick, color=darkgreen3] (0,4) -- (2,5.5); \node at (4,5) {\small \glqq Source Volume\grqq}; % Draw circles and dashed lines \node[circle, draw, thick, fill=red!90, scale=1.1] (rd1) at (0,0) {}; \node at (0,0) {1}; \onslide<2-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd2) at (2,0) {}; \draw[dashed, ultra thick, color=blue] (rd1) -- (rd2); \node at (2,0) {2}; \node at (1,-0.25) {\footnotesize \texttt{pdx}}; \onslide<3-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd3) at (4,0) {}; \draw[dashed, ultra thick, color=blue] (rd2) -- (rd3); \node at (4,0) {3}; \onslide<4> \node[circle, draw, thick, fill=red!90, scale=1.1] (rdx1) at (6,0) {}; \draw[dashed, ultra thick, color=blue] (rd3) -- (rdx1); \node[scale=1.6] at (6,0) {X}; \onslide<6-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd4) at (1.5,1.125) {}; \draw[dashed, ultra thick, color=darkgreen] (rd1) -- (rd4); \node at (1.5,1.125) {4}; \node at (1.1,0.43) {\footnotesize \texttt{pdy}}; \onslide<7-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd5) at (3.5,1.125) {}; \draw[dashed, ultra thick, color=blue] (rd4) -- (rd5); \node at (3.5,1.125) {5}; \onslide<7-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd6) at (5.5,1.125) {}; \draw[dashed, ultra thick, color=blue] (rd5) -- (rd6); \node at (5.5,1.125) {6}; \onslide<8> \node[circle, draw, thick, fill=red!90, scale=1.1] (rdx2) at (3,2.25) {}; \draw[dashed, ultra thick, color=darkgreen] (rd4) -- (rdx2); \node[scale=1.6] at (3,2.25) {X}; \onslide<10-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd7) at (0,2.2) {}; \draw[dashed, ultra thick, color=darkred] (rd1) -- (rd7); \node at (0,2.2) {7}; \node at (0.32,1.3) {\footnotesize \texttt{pdz}}; \onslide<11-> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd8) at (2,2.2) {}; \draw[dashed, ultra thick, color=blue] (rd7) -- (rd8); \node at (2,2.2) {8}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd9) at (4,2.2) {}; \draw[dashed, ultra thick, color=blue] (rd8) -- (rd9); \node at (4,2.2) {9}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd10) at (1.5,3.325) {}; \draw[dashed, ultra thick, color=darkgreen] (rd7) -- (rd10); \node[scale=0.8] at (1.5,3.325) {10}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd11) at (3.5,3.325) {}; \draw[dashed, ultra thick, color=blue] (rd10) -- (rd11); \node[scale=0.8] at (3.5,3.325) {11}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd12) at (5.5,3.325) {}; \draw[dashed, ultra thick, color=blue] (rd11) -- (rd12); \node[scale=0.8] at (5.5,3.325) {12}; \onslide<12> \node[circle, draw, thick, fill=red!90, scale=1.1] (rdx3) at (0,4.4) {}; \draw[dashed, ultra thick, color=darkred] (rd7) -- (rdx3); \node[scale=1.6] at (0,4.4) {X}; % Draw rest of the green box \onslide<1-13> \draw[-, ultra thick, color=darkgreen3] (5,4) -- (5,0); % Draw coordinate system \node at (7.2,0.1) [scale=1.0] {% \begin{tikzpicture} \draw[->] (0,0) -- (1,0); \draw[->] (0,0) -- (0,1); \draw[->] (0,0) -- (0.5,0.5); \node at (-0.2,0.9) {z}; \node at (0.9,-0.2) {x}; \node at (0.65,0.3) {y}; \end{tikzpicture} }; % Add text \node at (9.2,3) [scale=0.99] {% \begin{tikzpicture} \node[text width=11em] {\footnotesize Choosing a too large number of particles may cause memory problems!\\}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 6 \begin{frame} \frametitle{Basic Particle Parameters (III)} \small Parameters that define the locations of particle source(s): \begin{itemize} \item Step IIb: Random start positions of particles \end{itemize} \begin{tikzpicture} \definecolor{darkgreen3}{rgb}{0.2,0.6,0.2} % Draw green box \draw[-, ultra thick, color=darkgreen3] (0,0) -- (5,0); \draw[-, ultra thick, color=darkgreen3] (0,0) -- (0,4); \draw[-, ultra thick, color=darkgreen3] (5,4) -- (5,0); \draw[-, ultra thick, color=darkgreen3] (0,4) -- (5,4); \draw[-, ultra thick, color=darkgreen3] (2,1.5) -- (7,1.5); \draw[-, ultra thick, color=darkgreen3] (2,1.5) -- (2,5.5); \draw[-, ultra thick, color=darkgreen3] (7,5.5) -- (7,1.5); \draw[-, ultra thick, color=darkgreen3] (2,5.5) -- (7,5.5); \draw[-, ultra thick, color=darkgreen3] (0,0) -- (2,1.5); \draw[-, ultra thick, color=darkgreen3] (5,0) -- (7,1.5); \draw[-, ultra thick, color=darkgreen3] (5,4) -- (7,5.5); \draw[-, ultra thick, color=darkgreen3] (0,4) -- (2,5.5); % Draw circles and dashed lines \onslide<1-2> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd3) at (4,0) {}; \node at (4,0) {3}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd9) at (4,2.2) {}; \node at (4,2.2) {9}; \onslide<1> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd1) at (0,0) {}; \node at (0,0) {1}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd2) at (2,0) {}; \node at (2,0) {2}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd4) at (1.5,1.125) {}; \node at (1.5,1.125) {4}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd5) at (3.5,1.125) {}; \node at (3.5,1.125) {5}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd6) at (5.5,1.125) {}; \node at (5.5,1.125) {6}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd7) at (0,2.2) {}; \node at (0,2.2) {7}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd8) at (2,2.2) {}; \node at (2,2.2) {8}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd10) at (1.5,3.325) {}; \node[scale=0.8] at (1.5,3.325) {10}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd11) at (3.5,3.325) {}; \node[scale=0.8] at (3.5,3.325) {11}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd12) at (5.5,3.325) {}; \node[scale=0.8] at (5.5,3.325) {12}; \onslide<2> \node[circle, draw, thick, fill=red!90, scale=1.1] (rd1n) at (1.0,0.3) {}; \node at (1.0,0.3) {1}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd2n) at (1.8,0.3) {}; \node at (1.8,0.3) {2}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd4n) at (1.7,1.0) {}; \node at (1.7,1.0) {4}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd5n) at (3.0,1.2) {}; \node at (3.0,1.2) {5}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd6n) at (4.5,1.125) {}; \node at (4.5,1.125) {6}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd7n) at (0.9,2.8) {}; \node at (0.9,2.8) {7}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd8n) at (3,1.8) {}; \node at (3,1.8) {8}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd10n) at (2.1,3) {}; \node[scale=0.8] at (2.1,3) {10}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd11n) at (4,4.5) {}; \node[scale=0.8] at (4,4.5) {11}; \node[circle, draw, thick, fill=red!90, scale=1.1] (rd12n) at (4.5,3.2) {}; \node[scale=0.8] at (4.5,3.2) {12}; % Draw coordinate system \onslide<1-> \node at (9,2) [scale=1.0] {% \begin{tikzpicture} \draw[->] (0,0) -- (1,0); \draw[->] (0,0) -- (0,1); \draw[->] (0,0) -- (0.5,0.5); \node at (-0.2,0.9) {z}; \node at (0.9,-0.2) {x}; \node at (0.65,0.3) {y}; \end{tikzpicture} }; % Add text \node at (9.2,4) {\scriptsize \texttt{random\underline{ }start\underline{ }position = .T.}}; \end{tikzpicture} \end{frame} % Folie 7 \begin{frame} \frametitle{Basic Particle Parameters (IV)} \small Parameters that define the period of particle release: \\ \vspace{10mm} \begin{columns}[T] \begin{column}{1.15\textwidth} \begin{tikzpicture} \definecolor{darkred}{rgb}{0.6,0.1,0.1} \definecolor{grey}{rgb}{0.25,0.25,0.25} \draw[->, ultra thick] (0,0) -- (10.5,0); \draw[->, ultra thick] (0,0.5) -- (0,-0.5); \node at (10.7,0) {t}; \node at (0,-0.8) {0}; \node[text width=6em] at (0.2,-1.9) {\scriptsize Start of LES, determination of particle release points}; \onslide<2-> \draw[->, ultra thick, color=red] (2.5,0.5) -- (2.5,-0.5); \node at (2.8,-0.8) {\scriptsize \texttt{particle\underline{ }advection\underline{ }start}}; \node[text width=6em] at (2.8,-2.1) {\scriptsize Calculation of particle trajectories begins (default value: 0.0)}; \onslide<3-> \draw[->, ultra thick, color=red] (5.3,0.5) -- (5.3,-0.5); \node[text width=4em] at (4.9,-1.7) {\scriptsize Release of a new set of particles}; \node at (3.75,0.3) {\scriptsize \texttt{dt\underline{ }prel}}; \draw[<->, thick, color=blue] (2.5,0.6) -- (5.25,0.6); \onslide<4-> \draw[->, ultra thick, color=darkred] (6.5,0.5) -- (6.5,-0.5); \node[text width=4em] at (6.7,-1.9) {\scriptsize Deletion of the first set of particles}; \draw[<->, thick, color=darkred] (2.5,0.9) -- (6.5,0.9); \node at (4.5,1.2) {\scriptsize \texttt{particle\underline{ }maximum\underline{ }age}}; \onslide<5-> \draw[->, ultra thick, color=darkred] (7.95,0.5) -- (7.95,-0.5); \node[text width=4em] at (8.25,-2.1) {\scriptsize No release of new particles after this time}; \node at (8.0,-0.8) {\scriptsize \texttt{end\underline{ }time\underline{ }prel}}; \draw[<->, thick, color=blue] (5.35,0.6) -- (8.1,0.6); \onslide<6-> \draw[->, ultra thick, color=grey] (9.3,0.5) -- (9.3,-0.5); \node[text width=4em] at (9.8,-1.9) {\scriptsize Deletion of the second set of particles}; \draw[<->, thick, color=darkred] (5.35,1.6) -- (9.3,1.6); \onslide<1-> \end{tikzpicture} \end{column} \end{columns} \end{frame} % Folie 8 \begin{frame}[t] \frametitle{Basic Particle Parameters (V)} \small Parameter that defines the mode of particle movement: \\ The concept of LES ...\\ \vspace{-5mm} \begin{center} \includegraphics[scale=0.1]{particle_model_figures/basic_particle_parameters_5.png} \end{center} \vspace{-5mm} \onslide<2-> ... transferred to the embedded particle model leads to particle velocity\\ \vspace{1mm} \begin{columns}[T] \begin{column}{0.35\textwidth} $\vec{V}_{i_{\text{particle}}} = \vec{V}_{i_{\text{resolved}}} + \vec{V}_{i_{\text{subgrid}}}$ \end{column} \begin{column}{0.55\textwidth} \scriptsize \onslide<3-> Particle movement as a result of \begin{itemize} \item advection, resolved turbulence $\vec{V}_{i_{\text{resolved}}}$ \vspace{-2mm} \item and subgrid turbulence $\vec{V}_{i_{\text{subgrid}}}$ \end{itemize} \end{column} \end{columns} \begin{tikzpicture}[remember picture, overlay] \node [shift={(6 cm,-6.3cm)}] at (current page.north west) {% \begin{tikzpicture}[remember picture, overlay] \uncover<4->{\draw[->, ultra thick] (-2.05,0) -- (-5,-0.8); \node[text width=14em] at (-3.2,-1.5) {\scriptsize $=0$, if \texttt{use\underline{ }sgs\underline{ }for\underline{ }particles = .F.} (default value)\\};} \uncover<5->{\draw[->, ultra thick] (-1.95,0) -- (0,-0.8); \node[text width=20em] at (3.2,-1.5) {\scriptsize $\ne0$, if \texttt{use\underline{ }sgs\underline{ }for\underline{ }particles = .T.}\\ determination of the subgrid part of the particle velocity as a solution of a stochastic differential equation\\}; \node[text width=14em] at (2.5,-2.5) {\scriptsize requires initialization parameter \texttt{use\underline{ }upstream\underline{ }for\underline{ }tke = .T.}\\ };} \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 12 \begin{frame}[t] \frametitle{Basic Particle Parameters (VI)} \small \vspace{-2mm} Parameters that define the boundary conditions for particles\\ \scriptsize \ \\ \uncover<10>{In PALM particles are \textbf{always} reflected at \textbf{vertical walls and roofs of buildings.}}\\ \ \\ \begin{tikzpicture} \definecolor{darkgreen}{rgb}{0.2,0.7,0.2} % Bottom \uncover<2>{\draw[fill=darkgreen,draw=darkgreen,opacity=.85] (0,0) -- (2,1.5) -- (7,1.5) -- (5,0) -- cycle ;} % Top \uncover<4>{\draw[fill=darkgreen,draw=darkgreen,opacity=.85] (0,4) -- (2,5.5) -- (7,5.5) -- (5,4) -- cycle ;} % Front \uncover<6>{\draw[fill=darkgreen,draw=darkgreen,opacity=.85] (0,0) -- (0,4) -- (5,4) -- (5,0) -- cycle ;} % Back \uncover<6>{\draw[fill=darkgreen,draw=darkgreen,opacity=.85] (2,1.5) -- (7,1.5) -- (7,5.5) -- (2,5.5) -- cycle ;} % Left \uncover<8>{\draw[fill=darkgreen,draw=darkgreen,opacity=.85] (0,0) -- (0,4) -- (2,5.5) -- (2,1.5) -- cycle ;} % Right \uncover<8>{\draw[fill=darkgreen,draw=darkgreen,opacity=.85] (5,0) -- (5,4) -- (7,5.5) -- (7,1.5) -- cycle ;} % Draw Box \draw[-] (0,0) -- (5,0); \draw[-] (0,0) -- (0,4); \draw[-] (5,4) -- (5,0); \draw[-] (0,4) -- (5,4); \draw[-] (2,1.5) -- (7,1.5); \draw[-] (2,1.5) -- (2,5.5); \draw[-] (7,5.5) -- (7,1.5); \draw[-] (2,5.5) -- (7,5.5); \draw[-] (0,0) -- (2,1.5); \draw[-] (5,0) -- (7,1.5); \draw[-] (5,4) -- (7,5.5); \draw[-] (0,4) -- (2,5.5); \node at (4,5) {\small Total model domain}; % Labels \uncover<2->{\node at (2.7,0.15) {\scriptsize \texttt{bc\underline{ }par\underline{ }b = 'reflect', 'absorb'}};} \uncover<4->{\node at (3.0,4.25) {\scriptsize \texttt{bc\underline{ }par\underline{ }t = 'absorb', 'reflect'}};} \uncover<6->{\node at (3.25,2.15) {\scriptsize \texttt{bc\underline{ }par\underline{ }ns = 'cyclic', 'reflect', 'absorb'}};} \uncover<8->{\node[text width=15.5em] at (7.7,3.7) {\scriptsize \texttt{bc\underline{ }par\underline{ }lr = 'cyclic', 'reflect',}\\ \texttt{\hspace{5em} 'absorb'}};} % Draw coordinate system \node at (9,2) [scale=1.0] {% \begin{tikzpicture} \draw[->] (0,0) -- (1,0); \draw[->] (0,0) -- (0,1); \draw[->] (0,0) -- (0.5,0.5); \node at (-0.2,0.9) {z}; \node at (0.9,-0.2) {x}; \node at (0.65,0.3) {y}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 13 \begin{frame} \frametitle{Basic Particle Parameters (VIII)} \small Parameters that steer the output of particle data \begin{itemize} \item There are two output files containing particle data: \begin{itemize} \item \texttt{DATA\underline{ }1D\underline{ }PTS\underline{ }NETCDF}: \hspace{0.5em} contains particle time series, output\\ \hspace{11.0em}interval is controlled by parameter\\ \hspace{11.0em}\texttt{dt\underline{ }dopts}, one file for the total\\ \hspace{11.0em}domain, e.g. time series of the total\\ \hspace{11.0em}number of particles, mean particle\\ \hspace{11.0em}velocity, mean subgrid scale part of\\ \hspace{11.0em}the particle velocity, mean particle\\ \hspace{11.0em}location etc. \vspace{1mm} \item \texttt{DATA\underline{ }PRT\underline{ }NETCDF}: \hspace{2.5em}contains \textbf{all} particle data (see slide\\ \hspace{11.0em}The Data Type Used for Particles),\\ \hspace{11.0em}output is controlled by\\ \hspace{11.0em}\texttt{dt\underline{ }write\underline{ }particle\underline{ }data},\\ \hspace{11.0em}one file per subdomain/PE \end{itemize} \end{itemize} \end{frame} % Folie 14 \begin{frame}[fragile] \frametitle{An Example of a Particle NAMELIST} \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.7\textwidth, font=\Tiny,scale=1.2] \begin{tikzpicture} \node [yellow] {\begin{lstlisting} &inipar cloud_droplets = .TRUE., ................ / &particles_par dt_dopts = 25.0, bc_par_b = 'absorb', density_ratio = 0.001, radius = 1.0E-6, initial_weighting_factor = 1.0E10, psb = 35.0, pst = 255.0, psl = 935.0, psr = 1065.0, pss = -5.0, pdx = 20.0, pdy = 20.0, pdz = 20.0, random_start_position = .TRUE., / \end{lstlisting} }; \end{tikzpicture} \begin{itemize} \item<2-> \small Several (up to 10) so called particle groups with different density ratio, radius, and starting positions can be defined by setting parameter number\underline{ }of\underline{ }particle\underline{ }groups to the required number of groups, and by assigning values for each particle groups to the respective parameters (e.g. \texttt{density\_ratio = 0.001, 0.0}, etc.) \end{itemize} \end{frame} \section{Theory} \subsection{Theory} % Folie 15 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (I)} \footnotesize \textbf{Advection of Passive particles}\\ \vspace{1mm} The position of a particle is found by integrating $ \dfrac{d \vec{X}_{\text{particle}}}{dt} = \vec{V}_{\text{particle}}$\\ \vspace{2mm} \onslide<2->Transferring the LES concept ... \includegraphics[scale=0.1]{particle_model_figures/basic_particle_parameters_5.png}\\ \vspace{-2mm} \scriptsize \hspace{2em}total energy\hspace{2.25em}=\hspace{3em}resolved part\hspace{2.5em}+\hspace{3em}modelled part\\ \vspace{1mm} \small ... to the embedded particle model leads to: $\vec{V}_{\text{particle}} = \vec{V}_{\text{res}} (+ \vec{V}_{\text{sub}})$\\ \vspace{2mm} \onslide<3->$\vec{V}_{\text{res}}:$\\ \begin{tikzpicture}[remember picture, overlay] \node [shift={(1.7 cm,0.6cm)}] at (current page.south west) {% \begin{tikzpicture}[scale=0.3,remember picture, overlay] \draw[-] (0,0) -- (5,0); \draw[-] (0,0) -- (0,4); \draw[-] (5,4) -- (5,0); \draw[-] (0,4) -- (5,4); \draw[-] (2,1.5) -- (7,1.5); \draw[-] (2,1.5) -- (2,5.5); \draw[-] (7,5.5) -- (7,1.5); \draw[-] (2,5.5) -- (7,5.5); \draw[-] (0,0) -- (2,1.5); \draw[-] (5,0) -- (7,1.5); \draw[-] (5,4) -- (7,5.5); \draw[-] (0,4) -- (2,5.5); \node[circle, fill=blue, scale=0.5] at (0,0) {}; \node[circle, fill=blue, scale=0.5] at (5,0) {}; \node[circle, fill=blue, scale=0.5] at (0,4) {}; \node[circle, fill=blue, scale=0.5] at (5,4) {}; \node[circle, fill=blue, scale=0.5] at (2,1.5) {}; \node[circle, fill=blue, scale=0.5] at (7,1.5) {}; \node[circle, fill=blue, scale=0.5] at (7,5.5) {}; \node[circle, fill=blue, scale=0.5] at (2,5.5) {}; \node[circle, fill=red, scale=0.5] at (2.5,1.1) {}; \draw[->, ultra thick, color=red] (7.4,0.7) -- (2.9,1.1); \node at (9.0,0.1) {\scriptsize \textcolor{red}{particle location}}; \draw[->, ultra thick] (8,2.5) -- (12,2.5); \end{tikzpicture} }; \node [shift={(5.8 cm,0.6cm)}] at (current page.south west) {% \begin{tikzpicture}[scale=0.3,remember picture, overlay] \definecolor{darkgreen}{rgb}{0.2,0.7,0.2} \draw[-] (0,0) -- (5,0); \draw[-] (0,4) -- (5,4); \draw[-] (2,1.5) -- (7,1.5); \draw[-] (2,5.5) -- (7,5.5); \draw[-] (0,0) -- (2,1.5); \draw[-] (5,0) -- (7,1.5); \draw[-] (5,4) -- (7,5.5); \draw[-] (0,4) -- (2,5.5); \node[circle, fill=blue, scale=0.5] at (0,0) {}; \node[circle, fill=blue, scale=0.5] at (5,0) {}; \node[circle, fill=blue, scale=0.5] at (0,4) {}; \node[circle, fill=blue, scale=0.5] at (5,4) {}; \node[circle, fill=blue, scale=0.5] at (2,1.5) {}; \node[circle, fill=blue, scale=0.5] at (7,1.5) {}; \node[circle, fill=blue, scale=0.5] at (7,5.5) {}; \node[circle, fill=blue, scale=0.5] at (2,5.5) {}; \node[circle, draw, color=darkgreen, ultra thick, scale=0.5] at (2.5,0.6) {}; \node[circle, draw, color=darkgreen, ultra thick, scale=0.5] at (2.5,4.6) {}; \draw[->, ultra thick] (8,2.5) -- (12,2.5); \end{tikzpicture} }; \node [shift={(9 cm,0.6cm)}] at (current page.south west) {% \begin{tikzpicture}[scale=0.3,remember picture, overlay] \definecolor{darkgreen}{rgb}{0.2,0.7,0.2} \node[circle, draw, color=darkgreen, ultra thick, scale=0.5] at (2.5,0.6) {}; \node[circle, fill=red, scale=0.5] at (2.5,1.1) {}; \node[circle, draw, color=darkgreen, ultra thick, scale=0.5] at (2.5,4.6) {}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 16 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (II)} \footnotesize \textbf{Advection of Non-passive Particles}\\ \ \\ Advection of particles by the non-linear drag law following Clift et al., 1978\\ \vspace{4mm} $\dfrac{dV_i}{dt} = \dfrac{1}{\tau_p} (u_i - V_i) - \delta_{i3}( 1 - \rho_0 / \rho_l ) g$\\ \vspace{2mm} with $\tau_p^{-1} = \dfrac{9 v \rho_0}{2 r^2 \rho_l} \left( 1 + 0.15 \text{Re}^{0.687} \right)$ and $\text{Re} = \dfrac{2r \left| \vec{u}_i - \vec{V}_i \right|}{\nu} $\\ \vspace{5mm} \onslide<1-> \begin{tabular}{llll} $g$ & = gravitational acceleration & $\rho_l$ & = density of water\\ Re & = particle Reynolds number & $\rho_0$ & = density of air\\ $u_i$ & = velocity of the fluid & $\tau_p$ & = inertia response time\\ $V_i$ & = particle velocity & $\nu$ & = molecular viscosity of air\\ \end{tabular} \end{frame} % Folie 17 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (III)} \footnotesize \textbf{Using Particles as Cloud Droplets}\\ \small \begin{itemize} \item This feature is switched on by setting the initial parameter \texttt{cloud\_droplets = .TRUE.}. \item In this case, the change in particle radius by condensation/evaporation and collision is calculated for every timestep. \item In case of condensation or evaporation, the potential temperature and the specific humidity has to be adjusted in the respective grid volumes. This is done within the subroutine \texttt{interaction\_droplets\_ptq}. \end{itemize} \end{frame} % Folie 18 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (IV)} \footnotesize \textbf{Simulation of Cloud Droplets (I)}\\ \begin{itemize} \item Simulation of enormous particle numbers like in real clouds\\ is impossible \begin{itemize} \footnotesize \item Ensembles of water droplets are simulated \vspace{1mm} \item Every simulated droplet stands for a very high number\\ of real droplets \vspace{1mm} \item Concept of weighting factor: $A_i=$ real number of droplets represented by one simulated droplet \vspace{2mm} \item Initial weighting factor can be assigned with the parameter \texttt{initial\underline{ }weighting\underline{ }factor} \end{itemize} \vspace{1mm} \item Calculation of liquid water content: $ \text{LWC} = \omega_l = \dfrac{\rho_L}{\Delta V} \sum\limits^{N_p}_{i=1} A_i \cdot \dfrac{4}{3} \pi r_i^3$ \vspace{1mm} \item Droplets can change radius by condensation/evaporation and collision \end{itemize} \begin{tikzpicture}[remember picture, overlay] \node [shift={(11.7 cm,6.5cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node at (0.0,0.0) {\includegraphics[scale=0.20]{particle_model_figures/real_simulated.png}}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 19 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (V)} \footnotesize \textbf{Simulation of Cloud Droplets (II)}\\ \scriptsize \begin{itemize} \item \textbf{Condensation/evaporation}\\ \vspace{1mm} $ r_i \dfrac{dr_i}{dt} = \dfrac{(S - ar^{-1} + br^{-3})}{F_k + F_d}$\\ \vspace{1mm} with $S = \dfrac{e}{e_s}-1$, \quad $F_k = \left( \dfrac{L}{R_v T} -1 \right) \dfrac{L \rho_l}{KT}$ \quad and \quad $F_d = \dfrac{\rho_l R_v T}{D e_s(t)}$\\ \vspace{2mm} \qquad $a = 2 \sigma/(\rho_l R_v T) \qquad \rightarrow$ Curvature effect\\ \qquad $b = 3 i_\text{s} m_v M / (4 \pi \rho_l m_s) \rightarrow$ Solution effect \vspace{1.5mm} \item<2-> For $r > \unit{1}{\mu m}$ solution and curvature effects are neglected: \\ $ r_i \dfrac{dr_i}{dt} = \dfrac{S}{F_k + F_d} \rightarrow r_i(t) = \sqrt{ r_{i,0}^2 + 2 \cdot \Delta t \cdot \left( \dfrac{S}{F_k + F_d} \right)}$ \end{itemize} \vspace{0mm} \begin{tabular}{llll} $D$ & = Coefficient of diffusion & $L$ & = Latent heat\\ $e$ & = Vapor pressure & $r$ & = Droplet radius\\ $e_s$ & = Saturation vapor pressure & $R_v$ & = Gas constant for water vapor\\ $F_k$ & = Effect of heat conduction & $S$ & = Supersaturation\\ $F_d$ & = Effect of vapor diffusion & $T$ & = Temperature\\ $K$ & = Coefficient of thermal conductivity & $\rho_L$ & = Density of water\\ & & $i_\text{s}$ & = van't Hoff factor\\ \end{tabular} \end{frame} % Folie 20 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (VI)} \footnotesize \textbf{Simulation of Cloud Droplets (III)}\\ \ \\ \scriptsize Concept of droplet collision with collision efficiency = 1 \begin{tikzpicture}[remember picture, overlay] \node [shift={(5.0cm,3.7cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node at (0.0,0.0) {\includegraphics[scale=0.20]{particle_model_figures/collision1.png}}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 21 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (VII)} \footnotesize \textbf{Simulation of Cloud Droplets (IV)}\\ \ \\ \scriptsize Concept of droplet collision with collision efficiency $\neq$ 1 \begin{tikzpicture}[remember picture, overlay] \node [shift={(5.0cm,4.0cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node (pic2) at (0.0,0.0) {\includegraphics[scale=0.20]{particle_model_figures/collision2.png}}; \node[below=0.0cm of pic2] {Liquid water content is kept constant: $\sum\limits^{N_p}_{i=1} A_i^{\ast} \cdot r_i^{\ast 3} = \sum\limits^{N_p}_{i=1} A_i \cdot r_i^3$}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 22 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (VIII)} \footnotesize \textbf{Simulation of Cloud Droplets (V)}\\ \scriptsize \begin{itemize} \item Calculation of droplet growth due to \textbf{collisions} follows a statistical approach (e.\,g., Rogers and Yau, 1989) \item Two prognostic quantities: Weighting factor $A_n$ and mass of super-droplet expressed as volume averaged droplet radius $r_n=(m_n / (4/3 \pi \rho_\text{l} A_n))^{1/3}$: \scriptsize \begin{alignat*}{3} A_n^{\ast}&=A_n &&- K(r_n,\, r_n) \, \frac{1}{2} \, \frac{A_n (A_n - 1)}{\Delta V} \, \Delta t - \sum \limits_{m=n+1}^{N_\text{p}} K(r_m,\, r_n) \frac{A_n \, A_m}{\Delta V} \, \Delta t\\ r_n^{\ast}&=\left(\vphantom{\sum \limits_{m=1}^{n-1}} \right. &&\left[ \vphantom{\sum \limits_{m=1}^{n-1}}\right. r_n^3 + \sum \limits_{m=1}^{n-1} K(r_\text{n}, \, r_\text{m}) \frac{A_m}{\Delta V} \, r_m^3 \, \Delta t -\sum \limits_{m=n+1}^{N_\text{p}} K(r_\text{m}, \, r_\text{n}) \frac{A_m}{\Delta V} \, r_n^3 \, \Delta t \left.\vphantom{\sum \limits_{m=1}^{n-1}}\right] \left/\vphantom{\sum \limits_{m=1}^{n-1}}\right. \notag \\ & && \left[\vphantom{\sum \limits_{m=1}^{n-1}}\right.\ 1 - K(r_n,\, r_n) \, \frac{1}{2} \, \frac{A_n - 1}{\Delta V} \, \Delta t -\left. \left. \sum \limits_{m=n+1}^{N_\text{p}} K(r_m,\, r_n) \frac{A_m}{\Delta V} \, \Delta t \right] \right)^{1/3} \end{alignat*} \end{itemize} % \begin{tikzpicture}[remember picture, overlay] % \node [shift={(11 cm,3.5cm)}] at (current page.south west) % {% % \begin{tikzpicture}[remember picture, overlay] % \node at (0.0,0.0) {\includegraphics[scale=0.20]{particle_model_figures/droplet_falling.png}}; % \end{tikzpicture} % }; % \end{tikzpicture} \end{frame} % Folie 23 \begin{frame}[t] \frametitle{Theory of the Lagrangian Particle Model (IX)} \footnotesize \textbf{Simulation of Cloud Droplets (VI)}\\ \begin{itemize} \item \textbf{Collision kernel without turbulence effects} \\ \vspace{1mm} $K(R,r) = \pi(R + r)^2 \cdot E^g(R,r) \cdot [ u(R) - u(r)]$\\ \vspace{3mm} \item \textbf{Collision kernel with turbulence effects\\ from Ayala and Wang}\\ \vspace{1mm} $K(R,r) = 2 \pi (R + r)^2 \cdot \eta_E E^g \langle| w_r |\rangle g_{Rr} $\\ \vspace{3mm} \end{itemize} \begin{tabular}{ll} $\eta_E$ & = turbulent enhancement factor for collision efficiency \\ $E^g$ & = collection efficiency \\ $\langle| w_r |\rangle$ & = radial relative velocity \\ $g_{Rr}$ & = radial distribution function \\ \end{tabular} \begin{tikzpicture}[remember picture, overlay] \node [shift={(11 cm,6.5cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node (pic1) at (0.0,0.0) {\includegraphics[scale=0.30]{particle_model_figures/falkowich.png}}; \node[below=0.0cm of pic1] {Falkowich, 2010}; \end{tikzpicture} }; \end{tikzpicture} \begin{tikzpicture}[remember picture, overlay] \node [shift={(11.25 cm,3.0cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node (pic2) at (0.0,0.0) {\includegraphics[scale=0.30]{particle_model_figures/malinowski.png}}; \node[below=0.0cm of pic2] {Malinowski, 2010}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} \section{Implementation} \subsection{Implementation} % Folie 24 \begin{frame} \frametitle{Flow Chart of Particle Code (I)} \footnotesize \begin{tikzpicture}[scale=0.8, transform shape] % Define colours \tikzstyle{gelb1} = [draw, fill=yellow!60, text width=7em, text centered, minimum height=1.6em] \tikzstyle{orange} = [draw, fill=orange!60, text width=7em, text centered] % Define coordinates and draw nodes \node[gelb1, text width=5em] (PALM) at (0,0.1) {PALM}; \coordinate (A) at (0,-0.7); \node[gelb1, right=0.6cm of A] (init3d) {init\underline{ }3d\underline{ }model}; \coordinate[below=0.4cm of init3d] (B) ; \coordinate[below=1.0cm of init3d] (C) ; \coordinate[below=1.6cm of init3d] (D) ; \coordinate[below=2.2cm of init3d] (E) ; \coordinate[below=2.8cm of init3d] (F) ; \coordinate[below=4.2cm of init3d] (G) ; \coordinate[below=4.8cm of init3d] (H) ; \coordinate[below=6cm of init3d] (I) ; \coordinate (J) at (0,-8); \node[gelb1, right=0.5cm of B, text width=17em] (init1d) {init\underline{ }1d\underline{ }model (\textit{calls various subroutines})}; \node[gelb1, right=0.5cm of C] (initslope) {init\underline{ }slope}; \node[gelb1, right=0.5cm of D] (disturb) {disturb\underline{ }heatflux}; \node[gelb1, right=0.5cm of E] (initrankine) {init\underline{ }rankine}; \node[gelb1, right=0.0cm of initrankine] {init\underline{ }pt\underline{ }anomaly}; \node[gelb1, right=0.5cm of F] (disturbfield) {disturb\underline{ }field}; \node[gelb1, right=0.0cm of disturbfield] (pres) {pres}; \node[gelb1, right=0.5cm of G] (read3d) {read\underline{ }3d\underline{ }binary}; \node[gelb1, right=0.0cm of read3d] (initdvrp) {init\underline{ }dvrp}; \node[gelb1, right=0.0cm of initdvrp] (initocean) {init\underline{ }ocean}; \node[gelb1, right=0.0cm of initocean] {init\underline{ }cloud\underline{ }physics}; \node[orange, right=0.5cm of H] (initparticles) {lpm\underline{ }init}; \node[gelb1, right=0.5cm of I] (initadvec) {init\underline{ }advec}; \node[gelb1, right=0.0cm of initadvec] (userinit) {user\underline{ }init}; \node[gelb1, right=0.6cm of J] (dataoutput2d) {data\underline{ }output\underline{ }2d}; \node[gelb1, right=0.0cm of dataoutput2d] {data\underline{ }output\underline{ }3d}; \coordinate[below=0.15cm of pres] (K); \coordinate[right=0.2cm of K] (L); \coordinate[right=2cm of L] (M); \coordinate[right=2cm of M] (N); \node[gelb1, below=0.1cm of L, text width=4em] (poisfft) {poisfft}; \node[gelb1, below=0.1cm of M, text width=4em] (sor) {sor}; \node[gelb1, below=0.1cm of N, text width=4em] (poismg) {poismg}; \coordinate[below=0.1cm of initparticles] (O); \node[orange, right=1.5cm of O] (userinitparticles) {user\underline{ }lpm\underline{ }init}; % Draw lines \draw[dotted, thick] (PALM) -- (0,-0.5); \draw[-, thick] (0,-0.5) -- (0,-8.7); \draw[dotted, thick] (0,-8.7) -- (0,-9.0); \draw[-, thick] (init3d.west) -- (A) ; \draw[-, thick] (init3d.south) -- (I) ; \draw[dashed, thick] (B) -- (init1d.west); \draw[dashed, thick] (C) -- (initslope.west); \draw[dashed, thick] (D) -- (disturb.west); \draw[dashed, thick] (E) -- (initrankine.west); \draw[dashed, thick] (F) -- (disturbfield.west); \draw[dashed, thick] (G) -- (read3d.west); \draw[-, thick] (H) -- (initparticles.west); \draw[-, thick] (I) -- (initadvec.west); \draw[dashed, thick] (J) -- (dataoutput2d); \draw[-, thick] (pres.south) -- (K); \draw[-, thick] (K) -- (N); \draw[-, thick] (L) -- (poisfft.north); \draw[-, thick] (M) -- (sor.north); \draw[-, thick] (N) -- (poismg.north); \draw[-, thick] (initparticles.south) -- (O); \draw[-, thick] (O) -- (userinitparticles.west); \end{tikzpicture} \end{frame} % Folie 25 \begin{frame} \frametitle{Flow Chart of Particle Code (II)} \footnotesize \begin{tikzpicture}[scale=0.8, transform shape] % Define colours \tikzstyle{gelb1} = [draw, fill=yellow!60, text width=7em, text centered, minimum height=1.6em] \tikzstyle{orange} = [draw, fill=orange!60, text width=7em, text centered] % Define coordinates and draw nodes \coordinate (A) at (0,-0.7); \node[gelb1, right=0.6cm of A] (timeintegration) {time\underline{ }integration}; \coordinate[below=0.3 of timeintegration] (B); \coordinate[below=0.9 of timeintegration] (C); \node[gelb1, right=0.6cm of B] (timestep) {timestep}; \node[gelb1, right=0.6cm of C] (runcontrol) {run\underline{ }control}; \coordinate[below=0.2cm of runcontrol] (D); \node[gelb1, right=1.5cm of D] (flowstat) {flow\underline{ }statistics}; \coordinate[below=1.8cm of timeintegration] (E); \node[gelb1, right=0.6cm of E] (surface) {surface\underline{ }coupler}; \coordinate[below=2.4cm of timeintegration] (F); \node[gelb1, right=0.6cm of F, text width=13em] (useractions) {user\underline{ }actions (\textit{before\underline{ }timestep})}; \coordinate[below=3.0cm of timeintegration] (G); \node[gelb1, right=0.6cm of G, text width=11em] (timestepscheme) {timestep\underline{ }scheme\underline{ }steering}; \coordinate[below=3.5cm of timeintegration] (H); \coordinate[right=2cm of H] (I); \coordinate[right=3.5cm of I] (J); \node[draw, text width=22em,minimum height=4.5em,fill=black!15] (progframe) at (5.75,-5.3) {}; \node[draw, text width= 9.5em, right=0.5cm of progframe] {For details, see PALM Flow Chart (V).}; \node[gelb1, below=0.3cm of I, text width=9em] (prog) {prognostic\underline{ }equations}; \node[gelb1, below=0.3cm of J, text width=10.5em] (progfast) {prognostic\underline{ }equations\underline{ }fast}; \node[gelb1, below=0.1cm of progfast, text width=10.5em] (progvec) {prognostic\underline{ }equations\underline{ }vec}; \node[draw, fill=red, text width=4em] at (8.2,-4) {\textcolor{white}{standard advection}}; \coordinate[below=5.5cm of timeintegration] (K); \node[orange, right=0.6cm of K] (advecparticles) {lpm}; \coordinate[below=0.2cm of advecparticles] (L); \node[orange, right=1.5cm of L, text width=13em] (userparticlesatt) {user\underline{ }lpm\underline{ }set\underline{ }attributes + more}; \coordinate[below=6.6cm of timeintegration] (M); \node[orange, right=0.6cm of M, text width=10em] (interaction) {interaction\underline{ }droplets\underline{ }ptq}; \coordinate[below=7.2cm of timeintegration] (N); \node[gelb1, right=0.6cm of N] (asselin) {asselin\underline{ }filter}; \coordinate[below=7.8cm of timeintegration] (O); \node[gelb1, right=0.6cm of O] (boundary) {boundary\underline{ }conds}; \node[gelb1, right=0.0cm of boundary] {swap\underline{ }timelevel}; \coordinate[below=8.4cm of timeintegration] (P); \node[gelb1, right=0.6cm of P] (inflow) {inflow\underline{ }turbulence}; \node[gelb1, right=0.0cm of inflow] {disturb\underline{ }field}; % Draw lines \draw[dotted, thick] (0,-0.3) -- (0,-0.7); \draw[-, thick] (0,-0.7) -- (0,-7.7); \draw[dotted, thick] (0,-7.7) -- (0,-9.0); \draw[-, thick] (A) -- (timeintegration); \draw[-, thick] (B) -- (timestep); \draw[-, thick] (C) -- (runcontrol); \draw[-, thick] (runcontrol.south) -- (D); \draw[-, thick] (D) -- (flowstat); \draw[dashed, thick] (E) -- (surface); \draw[-, thick] (F) -- (useractions); \draw[-, thick] (G) -- (timestepscheme); \draw[-, thick] (H) -- (I); \draw[-, thick] (I) -- (prog.north); \draw[-, thick, color=red] (I) -- (J); \draw[->, thick, color=red] (J) -- (progfast.north); \draw[dashed, thick] (K) -- (advecparticles); \draw[-, thick] (advecparticles.south) -- (L); \draw[-, thick] (L) -- (userparticlesatt.west); \draw[dashed, thick] (M) -- (interaction.west); \draw[dashed, thick] (N) -- (asselin.west); \draw[-, thick] (O) -- (boundary.west); \draw[dashed, thick] (P) -- (inflow.west); \draw[-, thick] (timeintegration.south) -- (O); \draw[dashed, thick] (O) -- (P); \end{tikzpicture} \end{frame} % Folie 26 \begin{frame} \frametitle{Detailed Flow Chart of \texttt{lpm} (I)} \scriptsize \begin{tikzpicture}[scale=0.87, transform shape] \node (0) at (0,0) {}; {\node[draw, right=0.0cm of 0, text width=29em] {write particle data on file (subroutine \texttt{lpm\underline{ }data\underline{ }output\underline{ }particles})\\ \qquad binary (\texttt{PARTICLE\underline{ }DATA/}) };} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-0.75cm] {calculate exponential terms for particles groups with inertia};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-1.35cm] {if necessary, release a new set of particles (subroutine \texttt{lpm\underline{ }release\underline{ }set})};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-2.1cm, text width=30em] {particle growth by condensation/evaporation and collision\\ (subroutines \texttt{lpm\underline{ }droplet\underline{ }condensation} and \texttt{lpm\underline{ }droplet\underline{ }collision})};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-2.85cm] {If SGS-velocities are used: calculate gradients of TKE (subroutine \texttt{lpm\underline{ }init\underline{ }sgs\underline{ }tke})};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-3.6cm, text width=29em] {timestep loop\\ (repeated, unless each particle has reached the LES timestep \texttt{dt\underline{ }3d})};} \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-4.65cm, text width=36em] {for each particle:\\ - interpolate velocities and SGS quantities (SGS-velocities, Lagrangian timescale, etc.\\ - calculate the particle advection (subroutine \texttt{lpm\underline{ }advec})};} \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-5.55cm] {calculate particle reflection from walls (subroutine \texttt{lpm\underline{ }boundary\underline{ }conds})};} \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-6.15cm] {user defined actions (subroutine \texttt{user\underline{ }lpm\underline{ }advec})};} \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-6.75cm] {boundary conditions at bottom and top (subroutine \texttt{lpm\underline{ }boundary\underline{ }conds})};} \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-7.36cm] {particle exchange between gridpoints (subroutine \texttt{lpm\underline{ }move\underline{ }particle})};} \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-7.9cm] {particle exchange between the subdomains (subroutine \texttt{lpm\underline{ }exchange\underline{ }horiz})};} \end{tikzpicture} \end{frame} % Folie 27 \begin{frame} \frametitle{Detailed Flow Chart of \texttt{lpm} (II)} \scriptsize \begin{tikzpicture}[auto, node distance=0] \node (0) at (0,0) {}; \uncover<1->{\node[draw, right=0.5cm of 0, yshift=-0.7cm, text width=25em] {delete and pack particles\\ (subroutines \texttt{lpm\_pack\_all\_arrays})};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-1.6cm, text width=29em] {In case of cloud droplets: calculate the liquid water content\\ (subroutine \texttt{lpm\underline{ }calc\underline{ }liquid\underline{ }water\underline{ }content})};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-2.3cm] {user defined setting of particle attributes (subroutine \texttt{user\underline{ }lpm\underline{ }set\underline{ }attributes})};} \uncover<1->{\node[draw, right=0.0cm of 0, yshift=-3.0cm, text width=29em] {write particle statistics on file \texttt{PARTICLE\underline{ }INFOS} (ASCII format)\\ (subroutine \texttt{lpm\underline{ }write\underline{ }exchange\underline{ }statistics})}; } \end{tikzpicture} \end{frame} % Folie 28 \begin{frame}[fragile] \frametitle{The Data Type Used for Particles} \small \begin{itemize} \item Particle data are stored in a FORTRAN derived data type: \end{itemize} \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.9\textwidth, font=\Tiny,scale=1.0] \begin{tikzpicture} \node [yellow] {\begin{lstlisting} MODULE particle_attributes : TYPE particle_type SEQUENCE REAL(wp) :: radius, age, age_m, dt_sum, dvrp_psize, e_m, & origin_x, origin_y, origin_z, rvar1, rvar2, rvar3, & speed_x, speed_y, speed_z, weight_factor, x, y, z INTEGER(iwp) :: class, group, tailpoints, tail_id LOGICAL :: particle_mask INTEGER(iwp) :: block_nr END TYPE particle_type TYPE(particle_type), DIMENSION(:), POINTER :: particles TYPE(particle_type) :: zero_particle TYPE particle_groups_type SEQUENCE REAL(wp) :: density_ratio, radius, exp_arg, exp_term END TYPE particle_groups_type TYPE(particle_groups_type), DIMENSION(max_number_of_particle_groups) :: & particle_groups \end{lstlisting} }; \end{tikzpicture} \end{frame} \begin{frame}[fragile] \frametitle{Storing Lagrangian particles (I)} \begin{itemize} \item the easiest method for storing Lagrangian particles is an one-dimensional array \item most applications demand particles located at a certain location (e.\,g., collision process) \item finding this particles demands \texttt{N}$^2$ operations: \scriptsize \begin{lstlisting} DO n = 1, N DO k = 1, N IF ( k /= n ) THEN IF ( ABS( particles(k)%x - particles(n)%x ) & < threshold ) THEN ... ENDIF ENDIF ENDDO ENDDO \end{lstlisting} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Storing Lagrangian particles (I)} \begin{itemize} \item sorting the particles by their respective grid-box reduces the operations to \texttt{N}: \scriptsize \begin{lstlisting} DO n = n_start(k,j,i), n_end(k,j,i) ... ENDDO \end{lstlisting} \normalsize \item reducing CPU time of LPM by 9.6\,\% \item sorting increases CPU time and demands a second one-dimensional array for efficient sorting \item this was done in the previous version of PALM \item \textbf{new approach} in the current PALM version: a four-dimensional array \end{itemize} \end{frame} % Folie 9 \begin{frame}[t] \frametitle{Storing Lagrangian particles (III)} \small \begin{tikzpicture}[scale=0.6] \definecolor{darkgreen}{rgb}{0.2,0.7,0.2} % Coordinates \coordinate (OL) at (-4,4); \coordinate (OC) at (0,4); \coordinate (OR) at (4,4); \coordinate (ML) at (-4,0); \coordinate (MC) at (0,0); \coordinate (MR) at (4,0); \coordinate (UL) at (-4,-4); \coordinate (UC) at (0,-4); \coordinate (UR) at (4,-4); \coordinate (OL2) at (-2,2); \coordinate (OR2) at (2,2); \coordinate (UR2) at (2,-2); \coordinate (UL2) at (-2,-2); \coordinate (P1) at (-1,1); \coordinate (P2) at (1.8,-1.3); \coordinate (P3) at (0.4,-0.9); \coordinate (P4) at (1,0.7); \coordinate (P5) at (-1.3,-1.4); \coordinate (P6) at (-1.8,1.6); \coordinate (part_box) at (6,2); % Draw Boxes \draw[-] (OL) -- (OR) -- (UR) -- (UL) -- cycle; \draw[-] (OC) -- (UC); \draw[-] (ML) -- (MR); \draw[-,dashed] (OL2) -- (OR2) -- (UR2) -- (UL2) -- cycle; \draw[-, thick] (MC) -- (part_box); % Draw dots \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (OL) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (OC) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (OR) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (ML) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (MC) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (MR) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (UL) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (UC) {}; \node[circle, draw, fill, color=black, ultra thick, scale=0.3] at (UR) {}; \uncover<1>{\node[circle, draw, fill, color=red, ultra thick, scale=0.5] at (P1) {};} \uncover<1-2>{\node[circle, draw, fill, color=yellow, ultra thick, scale=0.5] at (P2) {};} \uncover<1-3>{\node[circle, draw, fill, color=green, ultra thick, scale=0.5] at (P3) {};} \uncover<1-4>{\node[circle, draw, fill, color=blue, ultra thick, scale=0.5] at (P4) {};} \uncover<1-5>{\node[circle, draw, fill, color=violet, ultra thick, scale=0.5] at (P5) {};} \uncover<1-6>{\node[circle, draw, fill, color=magenta, ultra thick, scale=0.5] at (P6) {};} \node[yshift=6.0, xshift=-15.0] at (OL) {\tiny \texttt{i-1,j+1}}; \node[yshift=6.0, xshift=-15.0] at (OC) {\tiny \texttt{i,j+1}}; \node[yshift=6.0, xshift=-15.0] at (OR) {\tiny \texttt{i+1,j+1}}; \node[yshift=6.0, xshift=-15.0] at (ML) {\tiny \texttt{i-1,j}}; \node[yshift=6.0, xshift=-15.0] at (MC) {\tiny \texttt{i,j}}; \node[yshift=6.0, xshift=-15.0] at (MR) {\tiny \texttt{i+1,j}}; \node[yshift=6.0, xshift=-15.0] at (UL) {\tiny \texttt{i-1,j-1}}; \node[yshift=6.0, xshift=-15.0] at (UC) {\tiny \texttt{i,j-1}}; \node[yshift=6.0, xshift=-15.0] at (UR) {\tiny \texttt{i+1,j-1}}; % draw particle box \node at (part_box) [scale=1.0] {% \begin{tikzpicture} \draw[-, thick, fill=white] (-0.2,0.2) -- (0.2,0.2) -- (0.2,-1.7) -- (-0.2,-1.7) -- cycle; \uncover<2->{\node[circle, draw, fill, color=red, ultra thick, scale=0.5] at (0,0) {};} \uncover<3->{\node[circle, draw, fill, color=yellow, ultra thick, scale=0.5] at (0,-0.3) {};} \uncover<4->{\node[circle, draw, fill, color=green, ultra thick, scale=0.5] at (0,-0.6) {};} \uncover<5->{\node[circle, draw, fill, color=blue, ultra thick, scale=0.5] at (0,-0.9) {};} \uncover<6->{\node[circle, draw, fill, color=violet, ultra thick, scale=0.5] at (0,-1.2) {};} \uncover<7->{\node[circle, draw, fill, color=magenta, ultra thick, scale=0.5] at (0,-1.5) {};} \end{tikzpicture} }; \uncover<1->{\node[text width=10em] at (10,0) {\scriptsize - all particles located in a certain grid box are stored in a \textit{small} one-dimensional particle array permanently assigned to this grid-box\\ \ \\ - LPM CPU time decreases by 22\,\% \\ \ \\ - available memory doubles since no additional arrays are needed };} \end{tikzpicture} \end{frame} \begin{frame}[fragile] \frametitle{Storing Lagrangian particles (IV)} \small \begin{itemize} \item particles stored in another FORTRAN derived data type: \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.9\textwidth, font=\Tiny,scale=1.0] \begin{tikzpicture} \node [yellow] {\begin{lstlisting} MODULE particle_attributes : TYPE grid_particle_def : TYPE(particle_type), POINTER, DIMENSION(:) :: particles END TYPE grid_particle_def TYPE(grid_particle_def), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: grid_particles \end{lstlisting} }; \end{tikzpicture} \item particles are called at every grid-box: \Tiny \begin{lstlisting} DO i = nxl, nxr DO j = nys, nyn DO k = nzb+1, nzt n_par = prt_count(k,j,i) particles => grid_particles(k,j,i)%particles(1:n_par) IF ( n_par <= 0 ) CYCLE DO n = 1, n_par ... ENDDO ENDDO ENDDO ENDDO \end{lstlisting} \end{itemize} \end{frame} % Folie 29 \begin{frame}[fragile] \frametitle{How to Read netCDF Particle Data from an External Program} \scriptsize \begin{itemize} \item An example program for reading netCDF particle data (from file DATA\underline{ }PRT\underline{ }NETCDF/) can be found in the PALM repository under \texttt{...../trunk/UTIL/analyze\underline{ }particle\underline{ }netcdf\underline{ }data.f90} \item<1-> \textbf{Attention:}\\ The particle feature \grqq density\underline{ }ratio\grqq\, is stored in variable particle\underline{ }groups which (so far) is \textbf{not} contained in the netCDF file.\\ \vspace{1mm} Both informations can only be found on file PARTICLE\underline{ }DATA/.\\ \vspace{1mm} For the format of this file (one per PE, i.e. filenames \underline{ }0000, \underline{ }0001, etc.) see beginning of subroutine \texttt{lpm\_data\_output\_particles}. \end{itemize} \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.9\textwidth, font=\Tiny,scale=1.0] \begin{tikzpicture} \node [yellow] {\begin{lstlisting} WRITE ( 85 ) simulated_time WRITE ( 85 ) prt_count DO ip = nxl, nxr DO jp = nys, nyn DO kp = nzb+1, nzt number_of_particles = prt_count(kp,jp,ip) particles => grid_particles(kp,jp,ip)%particles(1:number_of_particles) IF ( number_of_particles <= 0 ) CYCLE WRITE ( 85 ) particles ENDDO ENDDO ENDDO \end{lstlisting} }; \end{tikzpicture} \end{frame} \section{Application Example} \subsection{Application Example} % Folie 30 \begin{frame}[t] \frametitle{Application Example: Simulation of a Convective Cloud with LCM (I)} \footnotesize \textbf{Why investigating clouds?} \begin{itemize} \item Clouds are very important, e.g., for climate, precipitation \begin{itemize} \footnotesize \item Problem: many microphysic processes are still not sufficiently known but determine the macroscopic properties of clouds \item Open Issues: production of rain in sufficiently short period of time, activation of aerosols,... \end{itemize} \end{itemize} \vspace{1.5mm} \textbf{What is our goal?} \begin{itemize} \item Analyze in-cloud turbulence effects on droplet growth and precipitation formation using an LCM \end{itemize} \vspace{1.5mm} \textbf{What are the advantages?} \begin{itemize} \item dynamics and microphysics of the cloud are directly related to physical processes of the individual droplets \item provides detailed information e.g. spatial and temporal evolution of the droplet spectrum, spatial distribution of the droplet concentration, droplet tracks, ... \end{itemize} \end{frame} % Folie 32 \begin{frame}[fragile] \frametitle{Application Example: Simulation of a Convective Cloud with LCM (II)} \footnotesize \textbf{Extract from the corresponding parameter file:} \tikzstyle{yellow} = [rectangle, draw, fill=yellow!30, text width=0.9\textwidth, font=\tiny,scale=1.0] \begin{tikzpicture} \node [yellow] {\begin{lstlisting} &inipar humidity = .TRUE., cloud_droplets = .TRUE., ... / &d3par end_time = 1800.0, ... / &particles_par dt_write_particle_data = 100.0, bc_par_b = 'absorb', density_ratio = 0.001, initial_weighting_factor = 9.0E9, radius = 1.0E-6, psb = 20.0, pst = 2800.0, pdx = 4.5, pdy = 4.5, pdz = 4.5, random_start_position = .TRUE., number_of_particle_groups = 1, dt_dopts = 100.0, dt_prel = 9000.0,/ n \end{lstlisting} }; \end{tikzpicture} \end{frame} % Folie 33 \begin{frame}[t] \frametitle{Application Example: Simulation of a Convective Cloud with LCM (III)} \footnotesize \centering \includegraphics[scale=0.4]{particle_model_figures/snapshot.png}\\ Snapshot of cloud droplet evolution% using\\ visualization tool DVRP\\ \end{frame} % Folie 34 \begin{frame}[t] \frametitle{Application Example: Simulation of a Convective Cloud with LCM (IV)} \footnotesize \begin{tikzpicture}[remember picture, overlay] \node [shift={(6.3 cm, 3.6 cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node at (0.0,0.0) { \includegraphics[scale=0.15]{particle_model_figures/turbulence_effects.png}}; \node at (0.0,2.55) {after 1600 s}; \node at (-3.3,3) {Kernel without turbulence effects}; \node at (3,3) {Kernel with turbulence effects}; \end{tikzpicture} }; \end{tikzpicture} \end{frame} % Folie 35 \begin{frame}[t] \frametitle{Application Example: Simulation of a Convective Cloud with LCM (V)} \footnotesize \begin{tikzpicture}[remember picture, overlay] \node [shift={(6.3 cm, 4.2 cm)}] at (current page.south west) {% \begin{tikzpicture}[remember picture, overlay] \node at (0.0,0.0) {\includegraphics[scale=0.4]{particle_model_figures/turbulence_effects_2.png}}; \node at (-3.0,2.6) {Kernel without turbulence effects}; \node at (3,2.6) {Kernel with turbulence effects}; \end{tikzpicture} }; \end{tikzpicture} \ \\ \vspace{48mm} $\rightarrow$ Turbulence effects enhance droplet growth and lead to more realistic mass distribution function\\ \end{frame} % Folie 36 \begin{frame} \frametitle{General Warning} \begin{itemize} \item Errors in the user interface routines for particles may cause problems which are very difficult to debug. Please be extremely careful with modifying the user interface and try to find out exactly how the default particle code works, before you make your modifications. \end{itemize} \end{frame} \end{document}