timestepping.tex 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. % vim: set foldmethod=marker foldmarker=<<<,>>>:
  2. \begin{FIframe}{Accelerating GMRES Solves}{} %<<<
  3. \vspace{0.5em}
  4. \resizebox{.9\textwidth}{!}{\begin{tikzpicture}%<<<
  5. % draw horizontal line
  6. \draw[ultra thick, ->] (0,0) -- (14,0);
  7. % draw vertical lines
  8. \foreach \x in {2,4,6,8,10,12}
  9. \draw[ultra thick] (\x cm,3pt) -- (\x cm,-3pt);
  10. % draw node
  11. \draw[ultra thick] ( 4,0) node[below=3pt] {$t_{n-2}$};
  12. \draw[ultra thick] ( 6,0) node[below=3pt] {$t_{n-1}$};
  13. \draw[ultra thick] ( 8,0) node[below=3pt] {$t_{n}$};
  14. \draw[ultra thick] (10,0) node[below=3pt] {$t_{n+1}$};
  15. \end{tikzpicture}}%>>>
  16. \vspace{0.5em}
  17. \begin{itemize}
  18. \setlength\itemsep{0.5em}
  19. \item Forward Euler: ~$n\text{-}{th}$~ time step
  20. \begin{itemize}
  21. \item solve BIE using GMRES:~~ $A_{y_n} \sigma_{\!n} = b_{y_n}$
  22. \item advance to $t_{n+1}$:~~~ $y_{n+1} = y_{n} + h\, v(\sigma_{\!n})$
  23. \end{itemize}
  24. \only<2->{\item Use ~$\sigma_{\!n-1}$~ as initial guess to GMRES}
  25. \only<3->{: {\color{red} doesn't work well}}
  26. \end{itemize}
  27. \only<4->{
  28. %\vspace{0.5em}
  29. \begin{columns}
  30. \column{0.65\textwidth}
  31. \begin{itemize}
  32. \item Re-use Krylov subspace from previous time step?
  33. \only<5->{
  34. \begin{itemize}
  35. \item Krylov subspace: ~~$X \leftarrow [b, ~A b, ~\cdots, ~A^{k\shortminus\!1} b]$
  36. \item Compute QR decomposition: ~ $QR \leftarrow AX$
  37. \item Preconditioner: ~ $P \coloneq I - Q Q^{T} + X R^{-1} Q^{T}$
  38. \vspace{0.5em}
  39. \item[] \qquad $P \, Ax = x$ \quad for all~~ $x \in span(X)$
  40. \item[] \qquad ~\, $P \, y = y$ \quad for all~~ $y \perp span(X)$
  41. \end{itemize}
  42. }
  43. \end{itemize}
  44. \column{0.35\textwidth}
  45. \centering
  46. \only<6->{\bf Similar to \\
  47. subspace deflation}
  48. \end{columns}}
  49. % TODO: {Similar idea to subspace deflation}
  50. \end{FIframe} %>>>
  51. \begin{FIframe}{Krylov Preconditioning with SDC}{} %<<<
  52. \vspace{-1em}
  53. \resizebox{.9\textwidth}{!}{\begin{tikzpicture}%<<<
  54. % draw horizontal line
  55. \draw[ultra thick, ->] (0,0) -- (14,0);
  56. % draw vertical lines
  57. \foreach \x in {1.7, 12.3}
  58. \draw[ultra thick] (\x cm,6pt) -- (\x cm,-6pt);
  59. \draw[ultra thick] (1.7000 ,0) node[above=5pt] {$a$};
  60. \draw[ultra thick] (12.3000,0) node[above=5pt] {$b$};
  61. \foreach \x in {1.9000, 2.6699, 4.5000, 7.0000, 9.5000, 11.3301, 12.1000}
  62. \draw[ultra thick, blue] (\x cm,3pt) -- (\x cm,-3pt);
  63. % draw node
  64. \draw[ultra thick, blue] (1.9000 ,0) node[below=3pt] {$t_1$};
  65. \draw[ultra thick, blue] (2.6699 ,0) node[below=3pt] {$t_2$};
  66. \draw[ultra thick, blue] (4.5000 ,0) node[below=3pt] {$t_3$};
  67. %\draw[ultra thick, blue] (7.0000 ,0) node[below=3pt] {$t_4$};
  68. %\draw[ultra thick, blue] (9.5000 ,0) node[below=3pt] {$t_5$};
  69. \draw[ultra thick, blue] (8.5,0) node[below=3pt] {$\cdots$};
  70. %\draw[ultra thick, blue] (11.3301,0) node[below=3pt] {$t_6$};
  71. \draw[ultra thick, blue] (12.1000,0) node[below=3pt] {$t_m$};
  72. \only<2->{%<<<
  73. \draw[ultra thick, DarkGreen] (1.9000 ,-1) node {$P_1$};
  74. \draw[ultra thick, DarkGreen] (2.6699 ,-1) node {$P_2$};
  75. \draw[ultra thick, DarkGreen] (4.5000 ,-1) node {$P_3$};
  76. \draw[ultra thick, DarkGreen] (8.5000 ,-1) node {$\cdots$};
  77. \draw[ultra thick, DarkGreen] (12.1000,-1) node {$P_m$};
  78. \draw[ultra thick, DarkGreen, ->] (2.10 ,-1) -- (2.40 ,-1);
  79. \draw[ultra thick, DarkGreen, ->] (3.00 ,-1) -- (3.50 ,-1);
  80. \draw[ultra thick, DarkGreen, ->] (4.86 ,-1) -- (5.40 ,-1);
  81. }%>>>
  82. \only<3->{%<<<
  83. \draw[ultra thick, DarkGreen, ->] (1.9000 ,-1.25) -- (1.9000 ,-1.8);
  84. \draw[ultra thick, DarkGreen, ->] (2.6699 ,-1.25) -- (2.6699 ,-1.8);
  85. \draw[ultra thick, DarkGreen, ->] (4.5000 ,-1.25) -- (4.5000 ,-1.8);
  86. \draw[ultra thick, DarkGreen, ->] (12.100 ,-1.25) -- (12.100 ,-1.8);
  87. \draw[ultra thick, DarkGreen] (1.9000 ,-2.1) node {~~\,$P^{(1)}_1$};
  88. \draw[ultra thick, DarkGreen] (2.6699 ,-2.1) node {~~\,$P^{(1)}_2$};
  89. \draw[ultra thick, DarkGreen] (4.5000 ,-2.1) node {~~\,$P^{(1)}_3$};
  90. \draw[ultra thick, DarkGreen] (8.5000 ,-2.1) node {$\cdots$};
  91. \draw[ultra thick, DarkGreen] (12.100 ,-2.1) node {~~\,$P^{(1)}_m$};
  92. \draw[ultra thick, black, ->] (0.75 ,-0.5) -- (0.75 ,-3.5);
  93. \draw[ultra thick, black] (0.5,-2) node[rotate=-90] {corrections};
  94. }%>>>
  95. \only<4->{%<<<
  96. \draw[ultra thick, DarkGreen, ->] (1.9000 ,-2.5) -- (1.9000 ,-3.0);
  97. \draw[ultra thick, DarkGreen, ->] (2.6699 ,-2.5) -- (2.6699 ,-3.0);
  98. \draw[ultra thick, DarkGreen, ->] (4.5000 ,-2.5) -- (4.5000 ,-3.0);
  99. \draw[ultra thick, DarkGreen, ->] (12.100 ,-2.5) -- (12.100 ,-3.0);
  100. \draw[ultra thick, DarkGreen] (1.9000 ,-3.3) node {~~\,$P^{(2)}_1$};
  101. \draw[ultra thick, DarkGreen] (2.6699 ,-3.3) node {~~\,$P^{(2)}_2$};
  102. \draw[ultra thick, DarkGreen] (4.5000 ,-3.3) node {~~\,$P^{(2)}_3$};
  103. \draw[ultra thick, DarkGreen] (8.5000 ,-3.3) node {$\cdots$};
  104. \draw[ultra thick, DarkGreen] (12.100 ,-3.3) node {~~\,$P^{(2)}_m$};
  105. %\draw[ultra thick, DarkGreen, ->] (1.9000 ,-3.7) -- (1.9000 ,-4.2);
  106. %\draw[ultra thick, DarkGreen, ->] (2.6699 ,-3.7) -- (2.6699 ,-4.2);
  107. %\draw[ultra thick, DarkGreen, ->] (4.5000 ,-3.7) -- (4.5000 ,-4.2);
  108. %\draw[ultra thick, DarkGreen, ->] (12.100 ,-3.7) -- (12.100 ,-4.2);
  109. }%>>>
  110. \end{tikzpicture}}%>>>
  111. \only<5->{
  112. \vspace{1.4em}
  113. \begin{columns}
  114. \column{0.05\textwidth}
  115. \column{0.45\textwidth}
  116. GMRES iter without preconditioner:
  117. \vspace{0.5em}
  118. \begin{tabular}{r | r r r r r}
  119. \parbox[t]{2mm}{\multirow{5}{*}{\rotatebox[origin=c]{-90}{correction $\rightarrow$}}}
  120. & \multicolumn{5}{c}{sub-step $\rightarrow$} \\
  121. \hline
  122. & 66 & 66 & 66 & 66 & 66 \\
  123. & 66 & 66 & 66 & 66 & 66 \\
  124. & 66 & 66 & 66 & 66 & 66 \\
  125. & 66 & 66 & 66 & 66 & 66 \\
  126. \end{tabular}
  127. \column{0.05\textwidth}
  128. \column{0.44\textwidth}
  129. \only<6->{
  130. GMRES iter with preconditioner:
  131. \vspace{0.5em}
  132. \begin{tabular}{r | r r r r r}
  133. \parbox[t]{2mm}{\multirow{5}{*}{\rotatebox[origin=c]{-90}{correction $\rightarrow$}}}
  134. & \multicolumn{5}{c}{sub-step $\rightarrow$} \\
  135. \hline
  136. & 66 & 30 & 22 & 45 & 30 \\
  137. & 35 & 17 & 33 & 28 & 24 \\
  138. & 8 & 4 & 14 & 5 & 12 \\
  139. & 1 & 1 & 2 & 2 & 4 \\
  140. \end{tabular}}
  141. \end{columns}
  142. }
  143. \end{FIframe} %>>>
  144. \begin{FIframe}{Numerical Results}{} %<<< disc-chain
  145. \centering
  146. {\bf Average iterations per GMRES solve: 30 \quad (130 without Krylov preconditioner)}
  147. \embedvideo{\includegraphics[width=0.985\textwidth]{videos/chain32}}{videos/chain32.avi}
  148. {\bf 32 discs (36K unknowns)}, \hfill {\bf minimum distance: 1e-4}, \hfill {\bf 10-th order SDC}
  149. \vspace{1em}
  150. {\bf 7-digits accuracy} in quadratures, GMRES solve, and time-stepping.
  151. \end{FIframe} %>>>
  152. \begin{FIframe}{Numerical Results - Sedimentation Flow}{} %<<<
  153. \vspace{-1.75em}
  154. \begin{columns}
  155. \column{0.42\textwidth}
  156. {\bf 200K unknowns}\\
  157. 127 discs.
  158. \vspace{1em}
  159. {\bf Minimum distance: 1e-4}
  160. \vspace{1em}
  161. {\bf 10-th order adaptive SDC}
  162. \vspace{1em}
  163. {\bf 5-digits accuracy} in quadratures, GMRES solve, and time-stepping.
  164. \column{0.583\textwidth}
  165. \embedvideo{\includegraphics[width=0.99\textwidth]{videos/sed127_2}}{videos/sed127__.mp4}
  166. \end{columns}
  167. \end{FIframe} %>>>
  168. %\begin{FIframe}{High Order vs Low Order Time Stepping}{} %<<<
  169. % TODO: compare high order vs low order
  170. % TODO: explain Krylov preconditioner
  171. %\end{FIframe} %>>>