% vim: set foldmethod=marker foldmarker=<<<,>>>: \section{Mobility problem} %<<< \begin{FIframe}{Mobility problem}{} %<<< \vspace{-1em} \begin{columns} \column{0.6\textwidth} \begin{itemize} \item $n$ rigid bodies ~~$\Omega = \sum\limits_{i=1}^{n} \Omega_i$ \only<1>{ with velocities ~$\vct{V}(\vct{x}) = \vct{v}_i + \vct{\omega}_i \times (\vct{x}-\vct{x}^c_i)$, }% \only<2>{ with velocities ~{\color{red}$\vct{V}(\vct{x}) = \vct{v}_i + \vct{\omega}_i \times (\vct{x}-\vct{x}^c_i)$}, } \vspace{0.8ex} and given forces $\vct{F}_i$, ~torques $\vct{T}_i$ abount $\vct{x}^c_i$. \vspace{1.4em} \item Stokesian fluid in $\Real^3 \setminus \Omega$ \vspace{0.7ex} \qquad $\displaystyle \Delta \vct{u} - \nabla p = 0, ~~\nabla \cdot \vct{u} = 0,$ \\ \vspace{0.6ex} \qquad $\displaystyle \vct{u} \rightarrow 0$ ~as~ $\vct{x} \rightarrow \infty$. \vspace{1.3em} \item Boundary conditions on $\partial\Omega$, \vspace{0.6ex} \only<1>{\qquad $\displaystyle \vct{u} = \vct{V} + \vct{u}_s$.} \only<2>{\qquad $\displaystyle \vct{u} = {\color{red}\vct{V}} + \vct{u}_s$.} \end{itemize} \vspace{1em} \qquad\quad \only<1>{\phantom{\color{red} unknown: $\vct{V}(\vct{u}_i, \vct{\omega}_i)$}} \only<2>{\color{red} unknown: $\vct{V}(\vct{u}_i, \vct{\omega}_i)$} \column{0.4\textwidth} \resizebox{0.98\textwidth}{!}{\begin{tikzpicture} \node[anchor=south west,inner sep=0] at (0,0) {\includegraphics[angle=90,origin=c,width=4cm]{figs/rigid-bodies.png}}; \draw[ultra thick, ->] (2.19,0.95) to (3,1.5); \node at (3.25, 1.5) {$\vct{F}_1$}; \node (a) at (2.0, 1.3) {}; \node (b) at (2.08, 1.3) {}; \draw[thick, ->] (a) to [out=140,in=60, looseness=3] (b); \draw[ultra thick, ->] (2.1,1) to (1.85,2.15); \node at (1.85, 2.3) {$\vct{T}_1$}; %\draw[color=red, ultra thick] (2.7,0.9) circle (1pt); %\node at (2.5, 0.5) {\color{red} \Large $x$}; %\draw[ultra thick, ->] (4.3,0.45) to (3.1,0.5); %\node [rotate=-6] at (5.55, 0.25) {log singularity}; %\draw[ultra thick, ->] (10.5,-0.25) to (12.1,-0.2); %\node [rotate=-4.5] at (9.5, -0.17) {$|s-s_0|^{-\alpha}$}; \end{tikzpicture}} \end{columns} \end{FIframe} %>>> \begin{FIframe}{Mobility problem - double-layer formulation}{} %<<< Represent fluid velocity: ~~$\displaystyle \vct{u} = \StokesSL[\vct{\nu}(\vct{F}_i, \vct{T}_i)] + \StokesDL[{\color{red}\vct{\sigma}}] $ \vspace{0.3em} and rigid body velocity: ~~$\displaystyle \vct{V} = -\sum_{i=1}^{6n} \mathfrak{v}_i \mathfrak{v}_i^T {\color{red}\vct{\sigma}}$ \vspace{1.5em} Applying boundary conditions ~ ($\displaystyle \vct{u} = \vct{V} + \vct{u}_s$ ~on~ $\partial\Omega$), \vspace{0.3em} \qquad$\qquad\displaystyle (I/2 + D) \, {\color{red}\vct{\sigma}} + \sum_{i=1}^{6n} \mathfrak{v}_i \mathfrak{v}_i^T {\color{red}\vct{\sigma}} = \vct{u}_s - S \, \vct{\nu} $ \vspace{0.5em}{\em(Pozrikidis - Boundary Integral and Singularity Methods for Linearized Viscous Flow)} \vspace{0.5em} \only<2->{Second kind integral equation \quad {\color{red} $\cdots$ but doesn't work for slender bodies!} %, should be well-conditioned.\\ %What can possibly go wrong? \vspace{1em} \only<3->{\color{red} $\kappa(I/2 + D) ~\sim~ 1/(\varepsilon^{2} \log \varepsilon^{-1})$} } \end{FIframe} %>>> %\begin{FIframe}{Boundary Integral Formulation}{Dirichlet BVP} %<<< % \begin{columns} % \column{0.5\textwidth} % \quad$\displaystyle \nabla^2 u - \nabla p = 0$ ~~in~~ $\mathbb{R}^3 \setminus \Omega$ % \quad$\displaystyle u |_{\Gamma} = u_0$ % \quad $\displaystyle u(x) \rightarrow 0 ~\text{as}~ |x|\rightarrow \infty$ % \column{0.5\textwidth} % \includegraphics[width=0.99\textwidth]{figs/biest-conv} % \end{columns} % {\bf Integral equation formulation:} % \begin{columns} % \column{0.75\textwidth} % \vspace{1em} % $u = \frac{\sigma}{2} + \StokesDL[\sigma] \text{~~~~on~~~~} \Gamma$ \hfill $\kappa \sim 324$ % \vspace{1em} % $u = \StokesSL[\sigma] \text{~~~~on~~~~} \Gamma$ \hfill $\kappa \sim 651$ % \vspace{1em} % $u = \frac{\sigma}{2} + \StokesDL[\sigma] + \StokesSL[\sigma] \text{~~~~on~~~~} \Gamma$ \hfill $\kappa \sim 9$ % \end{columns} %\end{FIframe} %>>> %\begin{FIframe}{Conditioning of layer-potential operators}{} %<<< % \vspace{1em} % \begin{columns} % \column{0.05\textwidth} % \column{0.35\textwidth} % %\quad$\displaystyle \nabla^2 u - \nabla p = 0$ ~~in~~ $\mathbb{R}^3 \setminus \Omega$ % %\quad$\displaystyle u |_{\Gamma} = u_0$ % %\quad $\displaystyle u(x) \rightarrow 0 ~\text{as}~ |x|\rightarrow \infty$ % \vspace{1em} % $\kappa(S)$ \hfill $\sim 2.6e6$ % \vspace{1em} % $\kappa(I/2 + D)$ \hfill $\sim 4.3e6$ % \vspace{1em} % $\kappa(I/2 + D + 16 S)$ \hfill $\sim 80$ % \column{0.1\textwidth} % \column{0.50\textwidth} % \includegraphics[width=0.99\textwidth]{figs/slender-torus} % \end{columns} % \vspace{3em} % \begin{itemize} % \item For infinite cylinder (Laplace case): ~~ $\kappa(I/2 + D) ~\sim~ 1/(\varepsilon^{2} \log \varepsilon^{-1})$ % \vspace{0.5em} % \item Combined field operator well-conditioned: ~~ $I/2 + D + S ~/~ (2\varepsilon \log \varepsilon^{-1})$ % \end{itemize} %\end{FIframe} %>>> \begin{FIframe}{Mobility problem - combined field formulation}{} %<<< \only<1>{ Represent fluid velocity: ~~$\displaystyle \vct{u} = \StokesSL[\vct{\nu}(\vct{F}_i, \vct{T}_i)] + \StokesCF[{\color{red}\vct{\sigma}} ] $ } \only<2->{ \vspace{-0.7em} Represent fluid velocity: ~~$\displaystyle \vct{u} = \StokesSL[\vct{\nu}(\vct{F}_i, \vct{T}_i)] + \StokesCF[{\color{red}\vct{\sigma}} - \sum_{i=1}^{6n} \mathfrak{v}_i \mathfrak{v}_i^T {\color{red}\vct{\sigma}} ] $ } \only<1>{\vspace{0.5em}}% \only<2->{\vspace{-0.65em}}% and rigid body velocity: ~~$\displaystyle \vct{V} = -\sum_{i=1}^{6n} \mathfrak{v}_i \mathfrak{v}_i^T {\color{red}\vct{\sigma}}$ \vspace{0.3em} where, ~$\displaystyle \StokesCF = \StokesDL + \StokesSL / (2 \varepsilon \log \varepsilon^{-1}) $. \only<3>{ \vspace{2.5em} Applying boundary conditions, \vspace{0.3em} \qquad$\qquad\displaystyle (\convop{I}/2 + \StokesCF)[{\color{red}\vct{\sigma}} - \sum_{i=1}^{6n} \mathfrak{v}_i \mathfrak{v}_i^T {\color{red}\vct{\sigma}} ] + \sum_{i=1}^{6n} \mathfrak{v}_i \mathfrak{v}_i^T {\color{red}\vct{\sigma}} = \vct{u}_s - \StokesSL[\vct{\nu}] $ \vspace{1em} Second kind integral equation and well-conditioned! } \end{FIframe} %>>> \begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<< \vspace{-1.5em} \begin{columns}[t] \column{0.7\textwidth} \vspace{1ex} {\bf Time-stepping:} 5-th order adaptive SDC \vspace{1ex} {\bf 8-digits accuracy} in quadratures, GMRES solve, \\ and time-stepping. \vspace{1ex} {\bf 40 CPU cores} \only<2>{ \embedvideo{\includegraphics[width=0.99\textwidth]{videos/sed2-top-zoom1}}{videos/sed2-top-zoom1.avi} } \column{0.4\textwidth} \vspace{-0.5em} \only<1>{ \embedvideo{\includegraphics[width=0.99\textwidth]{videos/sed2-side-color}}{videos/sed2-side-color.mov} } \only<2>{ \includegraphics[width=0.99\textwidth]{videos/sed2-side-color} } \end{columns} %\embedvideo{\includegraphics[width=0.25\textwidth]{videos/mesh}}{videos/mesh.avi} % 5-th order SDC time-stepping % 7 - digits accuracy % adaptively refined mesh % block diagonal preconditioner - plot of GMRES iterations \end{FIframe} %>>> %\begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<< % \vspace{-2.0em} % \begin{center} % \resizebox{0.85\textwidth}{!}{\begin{tikzpicture} % \pgfplotsset{ % xmin=0, xmax=250, % width=12cm, height=7cm, % xlabel={$T$}, xtick distance=50, % } % \begin{axis}[ymin=0, ymax=110, ylabel={$N_{iter}$}, legend style={draw=none,at={(0,1)},anchor=north west}] % \addplot [thick,color=blue] table [x={t},y={noprecond}] {data/sed2}; \addlegendentry{no-preconditioner}; % \addplot [thick,color=red] table [x={t},y={precond}] {data/sed2}; \addlegendentry{block-preconditioner}; % %\addplot [thick,color=green] table [x={t},y={KSPprecond}] {data/sed2}; \addlegendentry{Krylov-preconditioner}; % \end{axis} % \begin{axis}[axis y line*=right, ymin=0, ymax=65000, ylabel={$N$}, legend style={draw=none,at={(0.97,0.97)},anchor=north east}] % \addplot [thick,dashed,color=black] table [x={t},y={N}] {data/sed2}; \addlegendentry{$N$}; % \end{axis} % \end{tikzpicture}} % \end{center} % \vspace{-1em} % {\bf Close-to-touching:} ~~smaller time-steps, ~~more unknowns ($N$), \\ % high GMRES iteration count (one-body preconditioner doesn't help). \\ % {\color{red} $\sim 125 \times$ more expensive!} %\end{FIframe} %>>> %\begin{FIframe}{Accelerating GMRES Solves}{} %<<< % \vspace{0.5em} % \resizebox{.9\textwidth}{!}{\begin{tikzpicture}%<<< % % draw horizontal line % \draw[ultra thick, ->] (0,0) -- (14,0); % % draw vertical lines % \foreach \x in {2,4,6,8,10,12} % \draw[ultra thick] (\x cm,3pt) -- (\x cm,-3pt); % % draw node % \draw[ultra thick] ( 4,0) node[below=3pt] {$t_{n-2}$}; % \draw[ultra thick] ( 6,0) node[below=3pt] {$t_{n-1}$}; % \draw[ultra thick] ( 8,0) node[below=3pt] {$t_{n}$}; % \draw[ultra thick] (10,0) node[below=3pt] {$t_{n+1}$}; % \end{tikzpicture}}%>>> % \vspace{0.5em} % \begin{itemize} % \setlength\itemsep{0.5em} % \item Forward Euler: ~$n\text{-}{th}$~ time step % \begin{itemize} % \item solve BIE using GMRES:~~ $A_{y_n} \sigma_{\!n} = b_{y_n}$ % \item advance to $t_{n+1}$:~~~ $y_{n+1} = y_{n} + h\, v(\sigma_{\!n})$ % \end{itemize} % \only<2->{\item Use ~$\sigma_{\!n-1}$~ as initial guess to GMRES} % \only<3->{: {\color{red} doesn't work well}} % \end{itemize} % \only<4->{ % \vspace{0.5em} % \begin{itemize} % \item Re-use Krylov subspace from previous time step? % \only<5->{ % \begin{itemize} % \item Krylov subspace: ~~$X \leftarrow [b, ~A b, ~\cdots, ~A^{k\shortminus\!1} b]$ % \item Compute QR decomposition: ~ $QR \leftarrow AX$ % \item Preconditioner: ~ $P \coloneq I - Q Q^{T} + X R^{-1} Q^{T}$ % \vspace{0.5em} % \item[] \qquad $P \, Ax = x$ \quad for all~~ $x \in span(X)$ % \item[] \qquad ~\, $P \, y = y$ \quad for all~~ $y \perp span(X)$ % \end{itemize} % } % \end{itemize}} %\end{FIframe} %>>> %\begin{FIframe}{Krylov Preconditioning with SDC}{} %<<< % \vspace{-1em} % \resizebox{.9\textwidth}{!}{\begin{tikzpicture}%<<< % % draw horizontal line % \draw[ultra thick, ->] (0,0) -- (14,0); % % draw vertical lines % \foreach \x in {1.7, 12.3} % \draw[ultra thick] (\x cm,6pt) -- (\x cm,-6pt); % \draw[ultra thick] (1.7000 ,0) node[above=5pt] {$a$}; % \draw[ultra thick] (12.3000,0) node[above=5pt] {$b$}; % \foreach \x in {1.9000, 2.6699, 4.5000, 7.0000, 9.5000, 11.3301, 12.1000} % \draw[ultra thick, blue] (\x cm,3pt) -- (\x cm,-3pt); % % draw node % \draw[ultra thick, blue] (1.9000 ,0) node[below=3pt] {$t_1$}; % \draw[ultra thick, blue] (2.6699 ,0) node[below=3pt] {$t_2$}; % \draw[ultra thick, blue] (4.5000 ,0) node[below=3pt] {$t_3$}; % %\draw[ultra thick, blue] (7.0000 ,0) node[below=3pt] {$t_4$}; % %\draw[ultra thick, blue] (9.5000 ,0) node[below=3pt] {$t_5$}; % \draw[ultra thick, blue] (8.5,0) node[below=3pt] {$\cdots$}; % %\draw[ultra thick, blue] (11.3301,0) node[below=3pt] {$t_6$}; % \draw[ultra thick, blue] (12.1000,0) node[below=3pt] {$t_m$}; % \only<2->{%<<< % \draw[ultra thick, DarkGreen] (1.9000 ,-1) node {$P_1$}; % \draw[ultra thick, DarkGreen] (2.6699 ,-1) node {$P_2$}; % \draw[ultra thick, DarkGreen] (4.5000 ,-1) node {$P_3$}; % \draw[ultra thick, DarkGreen] (8.5000 ,-1) node {$\cdots$}; % \draw[ultra thick, DarkGreen] (12.1000,-1) node {$P_m$}; % \draw[ultra thick, DarkGreen, ->] (2.10 ,-1) -- (2.40 ,-1); % \draw[ultra thick, DarkGreen, ->] (3.00 ,-1) -- (3.50 ,-1); % \draw[ultra thick, DarkGreen, ->] (4.86 ,-1) -- (5.40 ,-1); % }%>>> % \only<3->{%<<< % \draw[ultra thick, DarkGreen, ->] (1.9000 ,-1.25) -- (1.9000 ,-1.8); % \draw[ultra thick, DarkGreen, ->] (2.6699 ,-1.25) -- (2.6699 ,-1.8); % \draw[ultra thick, DarkGreen, ->] (4.5000 ,-1.25) -- (4.5000 ,-1.8); % \draw[ultra thick, DarkGreen, ->] (12.100 ,-1.25) -- (12.100 ,-1.8); % \draw[ultra thick, DarkGreen] (1.9000 ,-2.1) node {~~\,$P^{(1)}_1$}; % \draw[ultra thick, DarkGreen] (2.6699 ,-2.1) node {~~\,$P^{(1)}_2$}; % \draw[ultra thick, DarkGreen] (4.5000 ,-2.1) node {~~\,$P^{(1)}_3$}; % \draw[ultra thick, DarkGreen] (8.5000 ,-2.1) node {$\cdots$}; % \draw[ultra thick, DarkGreen] (12.100 ,-2.1) node {~~\,$P^{(1)}_m$}; % \draw[ultra thick, black, ->] (0.75 ,-0.5) -- (0.75 ,-3.5); % \draw[ultra thick, black] (0.5,-2) node[rotate=-90] {corrections}; % }%>>> % \only<4->{%<<< % \draw[ultra thick, DarkGreen, ->] (1.9000 ,-2.5) -- (1.9000 ,-3.0); % \draw[ultra thick, DarkGreen, ->] (2.6699 ,-2.5) -- (2.6699 ,-3.0); % \draw[ultra thick, DarkGreen, ->] (4.5000 ,-2.5) -- (4.5000 ,-3.0); % \draw[ultra thick, DarkGreen, ->] (12.100 ,-2.5) -- (12.100 ,-3.0); % \draw[ultra thick, DarkGreen] (1.9000 ,-3.3) node {~~\,$P^{(2)}_1$}; % \draw[ultra thick, DarkGreen] (2.6699 ,-3.3) node {~~\,$P^{(2)}_2$}; % \draw[ultra thick, DarkGreen] (4.5000 ,-3.3) node {~~\,$P^{(2)}_3$}; % \draw[ultra thick, DarkGreen] (8.5000 ,-3.3) node {$\cdots$}; % \draw[ultra thick, DarkGreen] (12.100 ,-3.3) node {~~\,$P^{(2)}_m$}; % %\draw[ultra thick, DarkGreen, ->] (1.9000 ,-3.7) -- (1.9000 ,-4.2); % %\draw[ultra thick, DarkGreen, ->] (2.6699 ,-3.7) -- (2.6699 ,-4.2); % %\draw[ultra thick, DarkGreen, ->] (4.5000 ,-3.7) -- (4.5000 ,-4.2); % %\draw[ultra thick, DarkGreen, ->] (12.100 ,-3.7) -- (12.100 ,-4.2); % }%>>> % \end{tikzpicture}}%>>> % \only<5->{ % \vspace{1.4em} % \begin{columns} % \column{0.05\textwidth} % \column{0.45\textwidth} % GMRES iter without preconditioner: % \vspace{0.5em} % \begin{tabular}{r | r r r r r} % \parbox[t]{2mm}{\multirow{5}{*}{\rotatebox[origin=c]{-90}{correction $\rightarrow$}}} % & \multicolumn{5}{c}{sub-step $\rightarrow$} \\ % \hline % & 66 & 66 & 66 & 66 & 66 \\ % & 66 & 66 & 66 & 66 & 66 \\ % & 66 & 66 & 66 & 66 & 66 \\ % & 66 & 66 & 66 & 66 & 66 \\ % \end{tabular} % \column{0.05\textwidth} % \column{0.44\textwidth} % \only<6->{ % GMRES iter with preconditioner: % \vspace{0.5em} % \begin{tabular}{r | r r r r r} % \parbox[t]{2mm}{\multirow{5}{*}{\rotatebox[origin=c]{-90}{correction $\rightarrow$}}} % & \multicolumn{5}{c}{sub-step $\rightarrow$} \\ % \hline % & 66 & 30 & 22 & 45 & 30 \\ % & 35 & 17 & 33 & 28 & 24 \\ % & 8 & 4 & 14 & 5 & 12 \\ % & 1 & 1 & 2 & 2 & 4 \\ % \end{tabular}} % \end{columns} % } %\end{FIframe} %>>> \begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<< \vspace{-2.0em} \begin{center} \resizebox{0.95\textwidth}{!}{\begin{tikzpicture} \pgfplotsset{ xmin=0, xmax=250, width=12cm, height=7cm, xlabel={$T$}, xtick distance=50, } \begin{axis}[ymin=0, ymax=110, ylabel={$N_{iter}$}, legend style={draw=none,at={(0,1)},anchor=north west}] \addplot [thick,color=blue] table [x={t},y={noprecond}] {data/sed2}; \addlegendentry{no-preconditioner}; \addplot [thick,color=red] table [x={t},y={precond}] {data/sed2}; \addlegendentry{block-preconditioner}; \addplot [thick,color=DarkGreen] table [x={t},y={KSPprecond}] {data/sed2}; \addlegendentry{Krylov-preconditioner}; \end{axis} \begin{axis}[axis y line*=right, ymin=0, ymax=65000, ylabel={$N$}, legend style={draw=none,at={(0.97,0.97)},anchor=north east}] \addplot [thick,dashed,color=black] table [x={t},y={N}] {data/sed2}; \addlegendentry{$N$}; \end{axis} \end{tikzpicture}} \end{center} %\vspace{-1em} %{\bf Close-to-touching:} ~~smaller time-steps, ~~more unknowns ($N$), \\ %high GMRES iteration count (block preconditioner doesn't help). \\ %{\color{red} $\sim 125 \times$ more expensive!} \end{FIframe} %>>> %>>> %<<< Sedimentation flow \begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<< \begin{columns} \column{0.35\textwidth} \vspace{1ex} {\bf 5-th order adaptive SDC} \vspace{1ex} {\bf 8-digits accuracy} in quadratures, GMRES solve, \\ and time-stepping. \vspace{1ex} {\bf 0.5 million unknowns} \\ 64 rings. \vspace{1ex} {\bf 160 CPU cores} \column{0.65\textwidth} \embedvideo{\includegraphics[width=0.99\textwidth]{videos/sed64}}{videos/sed64.mov} \end{columns} \end{FIframe} %>>> %\begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<< % \vspace{-1.9em} % \centering % \only<1>{ \embedvideo{\includegraphics[width=0.94\textwidth]{videos/bacteria2_.png}}{videos/bacteria2_.mov} }% % \only<2>{ \embedvideo{\includegraphics[width=0.47\textwidth]{videos/bacteria64-density.png}}{videos/bacteria64-density.mov} } %\end{FIframe} %>>> %>>>