123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- % vim: set foldmethod=marker foldmarker=<<<,>>>:
- \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{columns}
- \column{0.65\textwidth}
- \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}
- \column{0.35\textwidth}
- \centering
- \only<6->{\bf Similar to \\
- subspace deflation}
- \end{columns}}
- % TODO: {Similar idea to subspace deflation}
- \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}{} %<<< disc-chain
- \centering
- {\bf Average iterations per GMRES solve: 30 \quad (130 without Krylov preconditioner)}
- \embedvideo{\includegraphics[width=0.985\textwidth]{videos/chain32}}{videos/chain32.avi}
- {\bf 32 discs (36K unknowns)}, \hfill {\bf minimum distance: 1e-4}, \hfill {\bf 10-th order SDC}
- \vspace{1em}
- {\bf 7-digits accuracy} in quadratures, GMRES solve, and time-stepping.
- \end{FIframe} %>>>
- \begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<<
- \vspace{-1.75em}
- \begin{columns}
- \column{0.42\textwidth}
- {\bf 200K unknowns}\\
- 127 discs.
- \vspace{1em}
- {\bf Minimum distance: 1e-4}
- \vspace{1em}
- {\bf 10-th order adaptive SDC}
- \vspace{1em}
- {\bf 5-digits accuracy} in quadratures, GMRES solve, and time-stepping.
- \column{0.583\textwidth}
- \embedvideo{\includegraphics[width=0.99\textwidth]{videos/sed127_2}}{videos/sed127__.mp4}
- \end{columns}
- \end{FIframe} %>>>
- %\begin{FIframe}{High Order vs Low Order Time Stepping}{} %<<<
- % TODO: compare high order vs low order
- % TODO: explain Krylov preconditioner
- %\end{FIframe} %>>>
|