commit 09f8c7b4248daf0fa5152353e22d9de0b91934ff
parent b4929875a3d3b4db1a035c1827ba571de44c27eb
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Tue, 19 Jun 2018 14:55:26 +0300
Update slides.
Diffstat:
6 files changed, 700 insertions(+), 636 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,5 +1,6 @@
PHD_RU = arma-thesis-ru
PHD_EN = arma-thesis
+SLIDES = arma-slides
FLAGS = -interaction=nonstopmode \
-output-directory=build \
-pdf \
@@ -9,7 +10,7 @@ FLAGS = -interaction=nonstopmode \
export TEXINPUTS=$(PWD)//:
-all: build/$(PHD_RU).pdf build/$(PHD_EN).pdf
+all: build/$(PHD_RU).pdf build/$(PHD_EN).pdf build/$(SLIDES).pdf
build/$(PHD_RU).pdf: $(PHD_RU).tex preamble.tex bib/*
latexmk $(FLAGS) -f $(PHD_RU).tex
@@ -19,6 +20,12 @@ build/$(PHD_EN).pdf: $(PHD_EN).tex preamble.tex bib/*
latexmk $(FLAGS) -f $(PHD_EN).tex
true
+build/$(SLIDES).pdf: $(SLIDES).tex slides-preamble.tex $(SLIDES).org
+ org export $(SLIDES).org beamer
+ latexmk $(FLAGS) -f $(SLIDES).tex
+ true
+
clean:
rm -f build/$(PHD_EN)*
rm -f build/$(PHD_RU)*
+ rm -f build/$(SLIDES)*
diff --git a/R/common.R b/R/common.R
@@ -4,10 +4,20 @@ source(file.path("R", "transform.R"))
arma.qqplot_grid <- function (dir, params, titles, ...) {
wave_params <- arma.load_wave_parameters(dir, params)
i <- 1
- for (name in names(wave_params)) {
+ for (name in names(wave_params)) {
arma.qqplot(wave_params[[name]], 100, titles[[i]], ...)
i <- i + 1
- }
+ }
+}
+
+arma.qqplot_grid_adj <- function (dir, params, titles, adj, ...) {
+ wave_params <- arma.load_wave_parameters(dir, params)
+ i <- 1
+ for (name in names(wave_params)) {
+ ttl = list(title=titles[[i]], adjust=adj)
+ arma.qqplot(wave_params[[name]], 100, ttl, ...)
+ i <- i + 1
+ }
}
arma.wavy_plot <- function (data, t, ...) {
diff --git a/R/waves.R b/R/waves.R
@@ -20,7 +20,7 @@ arma.QFUNCTIONS <- list(
arma.ALL_WAVE_CHARACTERISTICS <- list(
"elevation",
- "heights_x",
+ "heights_x",
"heights_y",
"lengths_x",
"lengths_y",
@@ -54,11 +54,15 @@ arma.qqplot <- function (param, nsamples=100, ttl, ...) {
param$data,
asp=1,
xlim=c(param$min, param$max),
- ylim=c(param$min, param$max),
- ...
+ ylim=c(param$min, param$max),
+ ...
)
- title(ttl, line=-2)
- qqline(param$data, distribution=param$qfunc)
+ if (class(ttl) == 'character') {
+ title(ttl, line=-2)
+ } else {
+ title(ttl$title, line=-1, adj=ttl$adjust)
+ }
+ qqline(param$data, distribution=param$qfunc)
}
#wave_params <- arma.load_wave_parameters()
diff --git a/arma-slides.org b/arma-slides.org
@@ -0,0 +1,667 @@
+#+TITLE: Имитационное моделирование нерегулярного волнения для программ динамики морских объектов
+#+AUTHOR: Иван Ганкевич
+#+DATE: Санкт-Петербург, 2018
+#+LANGUAGE: ru
+#+LATEX_CLASS: beamer
+#+LATEX_CLASS_OPTIONS: [14pt,aspectratio=169]
+#+LATEX_HEADER_EXTRA: \input{slides-preamble}
+#+BEAMER_THEME: SaintPetersburg
+#+OPTIONS: todo:nil title:nil ':t toc:nil H:2
+#+STARTUP: indent
+#+PROPERTY: header-args:R :results graphics :exports results
+
+#+begin_export latex
+\setbeamertemplate{title page}{%
+ \centering%
+ \vskip1cm\spbuInsertField{title}%
+ \ifx\insertsubtitle\empty\else%
+ \vskip0.5\baselineskip%
+ \spbuInsertField{subtitle}%
+ \fi%
+ \vfill\spbuInsertField{author}%
+ \vfill\spbuInsertField{institute}%
+ \vfill\inserttitlegraphic%
+ \vfill\spbuInsertField{date}%
+}
+\frame{\maketitle}
+#+end_export
+
+** Модель Лонге---Хиггинса
+#+begin_export latex
+\small
+Исследовать возможности математического аппарата и численных методов для
+имитационного моделирования морских волн произвольных амплитуд.
+\vskip\baselineskip
+\textcolor{spbuTerracotta}{Текущий уровень развития.} Формула аппликаты волны:
+\begin{equation*}
+ \arraycolsep=1.4pt
+ \begin{array}{ll}
+ \zeta(x,y,t) &= \sum\limits_n c_n \cos(u_n x + v_n y - \omega_n t + \epsilon_n), \\
+ \end{array}
+\end{equation*}
+Формула потенциала скорости:
+\begin{equation*}
+ \phi(x,y,z,t) = \sum_n \frac{c_n g}{\omega_n}
+ e^{z\sqrt{u_n^2+v_n^2}}
+ \sin(u_n x + v_n y - \omega_n t + \epsilon_n).
+\end{equation*}
+#+end_export
+
+Недостатки: периодичность, вероятностная сходимость, линейная теория волн.
+
+** Цель и задачи
+Разработать /без предположений линейной теории волн/
+- модель ветрового волнения,
+- формулу для поля давлений,
+- программную реализацию для SMP и MPP.
+
+
+* Трехмерная модель АРСС
+** Основные формулы
+\begin{equation*}
+ \zeta_{i,j,k} =
+ \sum\limits_{l=0}^{p_1}
+ \sum\limits_{m=0}^{p_2}
+ \sum\limits_{n=0}^{p_3}
+ \Phi_{l,m,n} \zeta_{i-l,j-m,k-n}
+ +
+ \sum\limits_{l=0}^{q_1}
+ \sum\limits_{m=0}^{q_2}
+ \sum\limits_{n=0}^{q_3}
+ \Theta_{l,m,n} \epsilon_{i-l,j-m,k-n}
+ ,
+ \label{eq:arma-process}
+\end{equation*}
+
+По сравнению с моделью ЛХ
+- высоко-производительная,
+- непериодическая,
+- чисто математическая.
+
+По сравнению с другими работами
+- трехмерная,
+- исследуются трехмерные АКФ, а не спектры.
+
+** Определение коэффициентов :noexport:
+#+begin_export latex
+\framesubitile{Модель АР}
+ \small%
+ Решить СЛАУ (трехмерные уравнения Юла---Уокера) относительно $\Phi$:
+ \begin{equation*}
+ \Gamma
+ \left[
+ \begin{array}{l}
+ \Phi_{0,0,0}\\
+ \Phi_{0,0,1}\\
+ \vdotswithin{\Phi_{0,0,0}}\\
+ \Phi_{p_1,p_2,p_3}
+ \end{array}
+ \right]
+ =
+ \left[
+ \begin{array}{l}
+ K_{0,0,0}-\Var{\epsilon}\\
+ K_{0,0,1}\\
+ \vdotswithin{K_{0,0,0}}\\
+ K_{p_1,p_2,p_3}
+ \end{array}
+ \right],
+ \qquad
+ \Gamma=
+ \left[
+ \begin{array}{llll}
+ \Gamma_0 & \Gamma_1 & \cdots & \Gamma_{p_1} \\
+ \Gamma_1 & \Gamma_0 & \ddots & \vdotswithin{\Gamma_0} \\
+ \vdotswithin{\Gamma_0} & \ddots & \ddots & \Gamma_1 \\
+ \Gamma_{p_1} & \cdots & \Gamma_1 & \Gamma_0
+ \end{array}
+ \right],
+ \end{equation*}
+ \begin{equation*}
+ \Gamma_i =
+ \left[
+ \begin{array}{llll}
+ \Gamma^0_i & \Gamma^1_i & \cdots & \Gamma^{p_2}_i \\
+ \Gamma^1_i & \Gamma^0_i & \ddots & \vdotswithin{\Gamma^0_i} \\
+ \vdotswithin{\Gamma^0_i} & \ddots & \ddots & \Gamma^1_i \\
+ \Gamma^{p_2}_i & \cdots & \Gamma^1_i & \Gamma^0_i
+ \end{array}
+ \right]
+ \qquad
+ \Gamma_i^j=
+ \left[
+ \begin{array}{llll}
+ K_{i,j,0} & K_{i,j,1} & \cdots & K_{i,j,p_3} \\
+ K_{i,j,1} & K_{i,j,0} & \ddots &x \vdotswithin{K_{i,j,0}} \\
+ \vdotswithin{K_{i,j,0}} & \ddots & \ddots & K_{i,j,1} \\
+ K_{i,j,p_3} & \cdots & K_{i,j,1} & K_{i,j,0}
+ \end{array}
+ \right].
+ \end{equation*}
+#+end_export
+
+** Определение коэффициентов :noexport:
+#+begin_export latex
+\framesubitile{Модель СС}
+ \small%
+ Solve non-linear system of equations for $\Theta$:
+ \begin{equation*}
+ K_{i,j,k} =
+ \left[
+ \displaystyle
+ \sum\limits_{l=i}^{q_1}
+ \sum\limits_{m=j}^{q_2}
+ \sum\limits_{n=k}^{q_3}
+ \Theta_{l,m,n}\Theta_{l-i,m-j,n-k}
+ \right]
+ \Var{\epsilon}
+ \end{equation*}
+ via fixed-point iteration method:
+ \begin{equation*}
+ \theta_{i,j,k} =
+ -\frac{K_{0,0,0}}{\Var{\epsilon}}
+ +
+ \sum\limits_{l=i}^{q_1}
+ \sum\limits_{m=j}^{q_2}
+ \sum\limits_{n=k}^{q_3}
+ \Theta_{l,m,n} \Theta_{l-i,m-j,n-k}.
+ \end{equation*}
+#+end_export
+
+** Критерии выбора моделей АР и СС
+Использовать модель АР для стоячих волн и модель СС для прогрессивных.
+#+latex: \newline\newline
+Экспериментальный результат:
+- модели расходятся, если делать наоборот;
+- характеристики взволнованной поверхности соответствуют реальным.
+
+** АКФ морской поверхности :noexport:
+#+begin_export latex
+\small
+\begin{tikzpicture}[remember picture,overlay]
+ \node[fill=spbuWhite2,text width=2.3cm,xshift=1cm,yshift=1.5cm,anchor=west] (waveProfile) at (current page.west) {Формула профиля волны или спектра};
+ \node[fill=spbuWhite2,text width=2.0cm,yshift=1.5cm] (bigPoly) at (current page.center) {Полином высокой степени};
+ \node[fill=spbuWhite2,text width=2.0cm,xshift=-1cm,yshift=1.5cm,anchor=east] (acfApprox) at (current page.east) {Формула АКФ};
+ \draw[->,thick] (waveProfile) to node[above] {\scriptsize теорема} node[below] {\scriptsize Винера---Хинчина} (bigPoly);
+ \draw[->,thick] (bigPoly) to node[above] {\scriptsize аппроксимация} node[below] {\scriptsize модельной функцией} (acfApprox);
+\end{tikzpicture}
+\only<1>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-0}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
+\end{tikzpicture}
+}
+\only<2>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-1}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
+\end{tikzpicture}
+}
+\only<3>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-3}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
+\end{tikzpicture}
+}
+\only<4>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
+\end{tikzpicture}
+}
+\only<5>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
+\end{tikzpicture}
+}
+\only<6>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-01}};
+\end{tikzpicture}
+}
+\only<7>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-03}};
+\end{tikzpicture}
+}
+\only<8>{
+\begin{tikzpicture}[remember picture,overlay]
+ \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
+ \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-04}};
+\end{tikzpicture}
+}
+#+end_export
+
+** Верификация модели АРСС
+:PROPERTIES:
+:BEAMER_opt: t
+:END:
+
+*** Стоячие волны
+:PROPERTIES:
+:BEAMER_col: 0.47
+:BEAMER_opt: T
+:END:
+
+Стоячие волны
+#+latex: \vspace{-1cm}
+#+header: :width 2.7 :height 2.7 :bg #F5F6F5 :font sans
+#+begin_src R :file build/standing-wave-qqplots-slides.pdf
+source(file.path("R", "common.R"))
+par(pty="s", mfrow=c(2, 2), mar=c(1,1,1,0), mgp=c(3,0,0), cex=0.6)
+arma.qqplot_grid_adj(
+ file.path("build", "standing_wave"),
+ c("elevation", "heights_y", "lengths_y", "periods"),
+ c("подъем", "высота", "длина", "период"),
+ 0.1,
+ xlab="x",
+ ylab="y",
+ tck=0.04
+)
+#+end_src
+
+#+RESULTS:
+[[file:build/standing-wave-qqplots-slides.pdf]]
+
+
+*** Прогрессивные волны
+:PROPERTIES:
+:BEAMER_col: 0.47
+:BEAMER_opt: T
+:END:
+
+Прогрессивные волны
+#+latex: \vspace{-1cm}
+#+header: :width 2.7 :height 2.7 :bg #F5F6F5 :font sans
+#+begin_src R :file build/propagating-wave-qqplots-slides.pdf
+source(file.path("R", "common.R"))
+par(pty="s", mfrow=c(2, 2), mar=c(1,1,1,0), mgp=c(3,0,0), cex=0.6)
+arma.qqplot_grid_adj(
+ file.path("build", "propagating_wave"),
+ c("elevation", "heights_y", "lengths_y", "periods"),
+ c("подъем", "высота", "длина", "период"),
+ 0.1,
+ xlab="x",
+ ylab="y",
+ tck=0.04
+)
+#+end_src
+
+#+RESULTS:
+[[file:build/propagating-wave-qqplots-slides.pdf]]
+
+** Взволнованная морская поверхность
+#+begin_export latex
+\begin{tikzpicture}[remember picture,overlay]
+ \node[inner sep=0pt,rectangle] at (current page.center){%
+ \includegraphics[width=0.95\paperwidth]{wavy}
+ };%
+\end{tikzpicture}
+#+end_export
+
+** Нелинейное волнение
+
+#+begin_export latex
+ \flushleft%
+ \vskip\baselineskip
+ \begin{minipage}{0.4\textwidth}
+ \begin{block}{\small\centering Преобразование аппликат}
+ \begin{equation}
+ \label{eq:distribution}
+ \only<1>{\Phi(\zeta_k)}
+ \only<2->{\rectemph{oldDist}{\Phi(\zeta_k)}}
+ =
+ \only<1>{F(\zeta^{*}_k)}
+ \only<2->{\rectemph{newDist}{F(\zeta^{*}_k)}}
+ \end{equation}
+ \vspace{-\baselineskip}
+ \end{block}
+ \end{minipage}
+ \vskip2\baselineskip
+ \begin{block}{\small Преобразование АКФ}
+ \begin{equation*}
+ \only<1>{K_{\zeta^{*}}}
+ \only<2->{\rectemph{newACF}{K_{\zeta^{*}}}}
+ \left( \vec u \right)
+ =
+ \sum\limits_{m=0}^{\infty}
+ C_m^2 \frac{K_\zeta^m \left( \vec u \right)}{m!}
+ \quad
+ C_m = \frac{1}{\sqrt{2\pi}}
+ \int\limits_0^\infty
+ \only<1>{\zeta^{*}(y)}
+ \only<2->{\rectemph{solutionDist}{\zeta^{*}(y)}}
+ \,
+ \only<1>{H_m(y)}
+ \only<2->{\rectemph{hermitePoly}{H_m(y)}}
+ \exp\!\left[ -\frac{y^2}{2} \right]
+ \end{equation*}
+ \vspace{-\baselineskip}
+ \end{block}
+ \only<2->{%
+ \begin{tikzpicture}[remember picture,overlay]
+ % first block
+ \node[fill=none,baseline,anchor= west,yshift=0cm] (oldDistLabel) at (current page.west) {\small гауссов закон распределения};
+ \path[->,thick] (oldDistLabel.north) edge [bend left=20,out=0](oldDist.south);
+
+ % second block
+ \node[fill=none,anchor=south east,yshift=0.1cm] (hermitePolyLabel) at (current page.south east) {\small полином Эрмита};
+ \path[->,thick] (hermitePolyLabel.north) edge [bend left=20,out=0](hermitePoly.south);
+ \node[fill=none,anchor=south,yshift=0.1cm] (solutionDistLabel) at (current page.south) {\small решение ур.~\ref{eq:distribution}};
+ \path[->,thick] (solutionDistLabel.north) edge [bend right=20,out=0](solutionDist.south);
+ \node[fill=none,baseline,anchor=south west,xshift=0.5cm,yshift=0.1cm] (newACFLabel) at (current page.south west) {\small\hspace{-0.5cm}новая АКФ};
+ \path[->,thick] (newACFLabel.north west) edge [bend right=20,out=0](newACF.south);
+
+ % picture
+ \node[fill=spbuWhite2,anchor=north east,xshift=-0.8cm,yshift=-1.2cm]
+ (skewNormal2Graph) at (current page.north east) {%
+ \includegraphics[scale=0.4]{skew-normal-2}
+ };
+ \path[->,thick] (skewNormal2Graph.west) edge [bend left=40](newDist.south);
+ \end{tikzpicture}
+ }
+#+end_export
+
+* Формула для поля давлений
+** Уравнения потенциального течения
+#+begin_export latex
+\begin{align*}
+ & \nabla^2\phi = 0 & \text{\small уравнение неразрывности}\\
+ & \phi_t+\frac{1}{2} |\vec{\upsilon}|^2 + g\zeta=-\frac{p}{\rho}
+ & \text{\small динамическое ГУ на }z=\zeta(x,y,t)\\
+ &
+ \only<1>{D\zeta}
+ \only<2->{\circleemph{dzeta}{D\zeta}}
+ =
+ \only<1>{\nabla \phi \cdot \vec{n}}
+ \only<2->{\circleemph{dphi}{\nabla \phi \cdot \vec{n}}}
+ & \text{\small кинематическое ГУ на }z=\zeta(x,y,t)
+\end{align*}
+\only<2->{%
+\begin{tikzpicture}[remember picture,overlay]
+ \node[fill=none,baseline,anchor=south west,xshift=1cm,yshift=0cm]
+ (dzetaLabel) at (current page.south west) {%
+ \small\hspace{-1cm}субстациональная производная $\zeta$%
+ };
+ \node[fill=none,baseline,anchor=south east,yshift=0cm]
+ (dphiLabel) at (current page.south east) {%
+ \small производная по нормали к $\zeta$%
+ };
+ \path[->,thick] (dzetaLabel.north west) edge [bend left](dzeta.west);
+ \path[->,thick] (dphiLabel.north) edge [bend left,out=0](dphi.south east);
+\end{tikzpicture}
+}
+#+end_export
+
+** Двухмерный случай
+
+#+begin_export latex
+\small%
+\begin{minipage}{0.4\textwidth}
+ \vspace{-\baselineskip}
+ \begin{align*}
+ & \phi_{xx}+\phi_{zz}=0\\
+ & \zeta_t =
+ \only<1>{\left(\zeta_x/\sqrt{1 + \zeta_x^2}-\zeta_x\right) \phi_x}%
+ \only<2->{\rectemph{dzetadphi2}{\left(\zeta_x/\sqrt{1 + \zeta_x^2}-\zeta_x\right) \phi_x}}
+ - \phi_z
+ \end{align*}
+\end{minipage}
+\newline
+Решение в рамках линейной теории
+\begin{equation*}
+ \phi(x,z,t)
+ =
+ \InverseFourierX{
+ \frac{\Sinh{2\pi u (z+h)}}{2\pi u \Sinh{2\pi u h}}
+ \FourierX{-\zeta_t}{x}{u}
+ }{u}{x}
+ =
+ \only<1>{\mathcal{W}(x,z)}
+ \only<2->{\rectemph{windowFunc}{\mathcal{W}(x,z)}}
+ \mathrel{*} \zeta_t(x,t)
+\end{equation*}
+Общее решение
+\begin{equation*}
+ \boxed{
+ \phi(x,z,t)
+ =
+ \InverseFourierX{
+ \frac{\Sinh{2\pi u (z+h)}}{2\pi u}
+ \frac{
+ \FourierX{ \zeta_t / \left(i \:\!\:\! f(x) - 1\right) }{x}{u}
+ }{
+ \FourierX{ \FunSecond{\zeta(x,t)} }{x}{u}
+ }
+ }{u}{x}
+ }
+\end{equation*}
+\only<2->{%
+\begin{tikzpicture}[remember picture,overlay]
+ \node[fill=none,baseline,anchor=north,xshift=0cm,yshift=-1.2cm]
+ (dzetadphiLabel) at (current page.north) {%
+ \small нет в линейной теории%
+ };
+ \path[->,thick] (dzetadphiLabel.west) edge [bend right=20](dzetadphi2.north);
+ \node[fill=spbuWhite2,anchor=north east,xshift=-0.2cm,yshift=-1.2cm]
+ (windowFunctionGraph) at (current page.north east) {%
+ \includegraphics[scale=0.4]{window-function-2}
+ };
+ \path[->,thick] (windowFunctionGraph.south) edge [bend right,out=0](windowFunc.north);
+\end{tikzpicture}
+}
+#+end_export
+
+** Сравнение с линейной теорией
+#+begin_export latex
+\centering
+\begin{columns}
+ \begin{column}{0.15\textwidth}
+ \only<1>{$A=1$м}%
+ \only<2>{$A=2$м}%
+ \only<3>{$A=4$м}%
+ \end{column}
+ \begin{column}{0.4\textwidth}
+ \begin{block}{\small Линейная теория}
+ \includegraphics<1>{velocity-ref-1}
+ \includegraphics<2>{velocity-ref-2}
+ \includegraphics<3>{velocity-ref-4}
+ \end{block}
+ \end{column}
+ \begin{column}{0.4\textwidth}
+ \begin{block}{\small Новая формула}
+ \includegraphics<1>{velocity-1}
+ \includegraphics<2>{velocity-2}
+ \includegraphics<3>{velocity-4}
+ \end{block}
+ \end{column}
+\end{columns}
+#+end_export
+
+** Сравнение с формулой для ВМА
+#+begin_export latex
+\centering
+\begin{columns}[T]
+ \begin{column}{0.45\textwidth}
+ \begin{block}{\small Малая амплитуда}
+ \vspace{0.25\baselineskip}%
+ \includegraphics{low-amp-color}
+ \end{block}
+ \end{column}
+ \begin{column}{0.45\textwidth}
+ \begin{block}{\small Высокая амплитуда}
+ \vspace{0.25\baselineskip}%
+ \includegraphics{high-amp-color}
+ \end{block}
+ \end{column}
+\end{columns}
+#+end_export
+
+** Выводы
+Метод подходит для
+- дискретно заданной $\zeta(x,y,t)$,
+- волн произвольных амплитуд,
+- произвольной глубины $h=\text{const}$.
+
+* Программный комплекс
+** Диаграмма
+:PROPERTIES:
+:BEAMER_ENV: fullframe
+:END:
+
+#+begin_export latex
+ \tikzset{DataBlock/.style={rectangle,draw=spbuDarkGray,thick,text width=2cm,align=center}}%
+ \tikzset{Terminator/.style={circle,fill=spbuDarkGray,thick,minimum size=0.4cm,text width=0pt}}%
+ \tikzset{Comment/.style={draw=none,fill=none,text width=8.8cm}}%
+ \small
+ \begin{tikzpicture}[x=6cm,y=0.80cm]
+ % UML blocks
+ \node[Terminator] (umlStart) at (0,0) {};
+ \node[DataBlock] (umlSpec) at (0,-1) {$S(\omega,\theta)$};
+ \node[DataBlock] (umlK) at (0,-2) {$K_{i,j,k}$};
+ \node[DataBlock,fill=spbuWhite2] (umlK2) at (0,-3) {$K_{i,j,k}^{*}$};
+ \node[DataBlock] (umlPhi) at (0,-4) {$\Phi_{i,j,k}$};
+ \node[DataBlock] (umlEps) at (0,-5) {$\epsilon_{i,j,k}$};
+ \node[DataBlock,fill=spbuWhite2] (umlZeta2) at (0,-6) {$\zeta_{i,j,k}^{*}$};
+ \node[DataBlock] (umlZeta) at (0,-7) {$\zeta_{i,j,k}$};
+ \node[DataBlock] (umlVelocity) at (0,-8) {$\phi(x,y,z)$};
+ \node[DataBlock] (umlPressure) at (0,-9) {$p(x,y,z)$};
+ \node[Terminator] (umlEnd) at (0,-10) {};
+ \node[circle,draw=spbuDarkGray,thick,minimum size=0.5cm,text width=0pt] at (0,-10) {};
+
+ % edges
+ \path[->,thick] (umlStart.south) edge (umlSpec.north);
+ \path[thick] (umlSpec.south) edge (umlK.north);
+ \path[thick] (umlK.south) edge (umlK2.north);
+ \path[thick] (umlK2.south) edge (umlPhi.north);
+ \path[thick] (umlPhi.south) edge (umlEps.north);
+ \path[thick] (umlEps.south) edge (umlZeta2.north);
+ \path[thick] (umlZeta2.south) edge (umlZeta.north);
+ \path[thick] (umlZeta.south) edge (umlVelocity.north);
+ \path[thick] (umlVelocity.south) edge (umlPressure.north);
+ \path[->,thick] (umlPressure.south) edge (umlEnd.north);
+
+ % comments
+ \node[align=left,draw=none] at (1,-1) {Частотно-направленный спектр волнения,};
+ \node[Comment] at (1,-2) {автоковариационная функция (АКФ),};
+ \node[Comment] at (1,-3) {преобразованная АКФ,};
+ \node[Comment] at (1,-4) {коэффициенты авторегрессии,};
+ \node[Comment] at (1,-5) {белый шум,};
+ \node[Comment] at (1,-6) {преобразованная реализация,};
+ \node[Comment] at (1,-7) {реализация взволнованной поверхности,};
+ \node[Comment] at (1,-8) {потенциал скорости,};
+ \node[Comment] at (1,-9) {давление.};
+ \end{tikzpicture}
+#+end_export
+
+** Время генерации, сек.
+#+begin_export latex
+\centering
+\small
+ \begin{tabular}{c lll lll}
+ \toprule
+ & \multicolumn{3}{c}{Модель Лонге---Хиггинса} & \multicolumn{3}{c}{Авторег. модель}\tabularnewline
+ \cmidrule{2-7}
+ Размер & OpenCL & OpenMP & MPI & OpenCL & OpenMP & MPI \\
+ \midrule
+ 400000 & 0.82 & 40.44 & 32.60 & 1.80 & 0.800 & 0.750\\
+ 440000 & 0.90 & 44.59 & 35.78 & 1.92 & 0.100 & 0.930\\
+ 480000 & 0.99 & 48.49 & 38.93 & 2.29 & 0.970 & 0.126\\
+ 520000 & 1.07 & 52.65 & 41.92 & 2.43 & 0.118 & 0.117\\
+ 560000 & 1.15 & 56.45 & 45.00 & 2.51 & 0.117 & 0.161\\
+ 600000 & 1.23 & 60.85 & 48.80 & 2.54 & 0.123 & 0.132\\
+ 640000 & 1.31 & 65.07 & 53.02 & 2.73 & 0.123 & 0.160\\
+ 680000 & 1.40 & 68.90 & 54.92 & 2.80 & 0.138 & 0.136\\
+ 720000 & 1.48 & 72.49 & 58.42 & 2.88 & 0.144 & 0.173\\
+ 760000 & \only<2>{\cellcolor{markBlue!50}}{1.56} & 76.86 & 61.41 & 3.47 & \only<2>{\cellcolor{markBlue!50}}{0.156} & 0.155\\
+ 800000 & 1.64 & 81.03 & 66.42 & 3.25 & 0.166 & 0.174\\
+ \bottomrule
+\end{tabular}
+#+end_export
+
+** Оптимизация записи в файл
+#+begin_export latex
+ \begin{columns}[T]
+ \begin{column}{0.575\textwidth}
+ \begin{block}{\small Диаграмма событий}
+ \vspace{0.25\baselineskip}%
+ \includegraphics{overlap-color}
+ \end{block}
+ \end{column}
+ \begin{column}{0.425\textwidth}
+ \begin{block}{\small Время генерации}
+ \vspace{0.25\baselineskip}%
+ \includegraphics{performance-color}
+ \end{block}
+ \end{column}
+ \end{columns}
+#+end_export
+
+** Отказоустойчивость
+#+begin_export latex
+\centering%
+\includegraphics{mpp-time-color}
+#+end_export
+
+** Выводы
+Программная реализация
+- масштабируется на SMP и MPP системы,
+- эффективна и без использования GPU
+- и отказоустойчива.
+
+** Апробация
+:PROPERTIES:
+:BEAMER_ENV: fullframe
+:END:
+
+#+begin_export latex
+\begin{columns}[T]
+ \begin{column}{0.55\textwidth}
+ \begin{block}{\small Апробация в LAMP4}
+ \vspace{0.25\baselineskip}%
+ \includegraphics[width=\textwidth]{lamp4-ar-waves}
+ \end{block}
+ \end{column}
+ \begin{column}{0.35\textwidth}
+ \begin{block}{\small Апробация в Spark}
+ \centering
+ \includegraphics[width=0.7\textwidth]{spark-logo}
+ \end{block}
+ \begin{block}{\small Награды}
+ \vspace{0.25\baselineskip}%
+ \includegraphics[width=\textwidth]{hpcs-15-poster-paper-award}
+ \end{block}
+ \end{column}
+\end{columns}
+#+end_export
+
+** Заключение
+- Изучена модель ветрового волнения для генерации волн произвольных амплитуд.
+- Разработан гибридный метод расчета давлений в двухмерной постановке.
+- Программная реализация метода была сведена к параллельному вычислению большого
+ количества преобразований Фурье.
+- Предварительная апробация модели и метода была произведена в пакете Large
+ Amplitude Motion Program 4.
+
+#+begin_export latex
+\setbeamercolor{bgcolor}{fg=white,bg=black!50}
+#+end_export
+
+** Спасибо за внимание
+:PROPERTIES:
+:BEAMER_ENV: fullframe
+:END:
+
+#+begin_export latex
+\begin{tikzpicture}[remember picture,overlay]
+ \node[anchor=north west,xshift=-5,yshift=5] at (current page.north west) {%
+ \includegraphics[width=\paperwidth]{sea}
+ };
+ \node[anchor=center,fill=black,text=spbuWhite3,fill opacity=0.5,text opacity=1,yshift=1.5cm] at (current page.center) {%
+ \Large\textbf{Спасибо за внимание!}
+ };
+\end{tikzpicture}
+#+end_export
diff --git a/slides-preamble.tex b/slides-preamble.tex
@@ -1,11 +1,13 @@
\titlegraphic{%
+ \begin{minipage}{0.9\textwidth}%
\scriptsize%
- \begin{tabular}{p{0.45\textwidth}p{0.45\textwidth}}
+ \begin{tabular}{p{0.45\textwidth}p{0.45\textwidth}}%
\hfill Научный руководитель: & д.т.н. Дегтярев А.Б.\\
\hfill Специальность 05.13.18: & мат. моделирование,\\
& численные методы\\
& и комплексы программ \\
- \end{tabular}
+ \end{tabular}%
+ \end{minipage}%
}
\usepackage{colortbl}
diff --git a/slides.org b/slides.org
@@ -1,626 +0,0 @@
-#+TITLE: Высокопроизводительная модель морского волнения для программ динамики морских объектов
-#+AUTHOR: Иван Ганкевич
-#+DATE: Санкт-Петербург, 2016
-#+LANGUAGE: ru
-#+LATEX_CLASS: beamer
-#+LATEX_CLASS_OPTIONS: [14pt,aspectratio=169]
-#+LATEX_HEADER_EXTRA: \input{slides-preamble}
-#+BEAMER_THEME: SaintPetersburg
-#+OPTIONS: todo:nil title:nil ':t toc:nil H:2
-#+STARTUP: indent
-
-#+begin_latex
-\frame{\maketitle}
-#+end_latex
-
-** Модель Лонге---Хиггинса
-#+begin_latex
-\small
-Исследовать возможности математического аппарата и численных методов для
-имитационного моделирования морских волн произвольных амплитуд.
-\vskip\baselineskip
-\textcolor{spbuTerracotta}{Текущий уровень развития.} Формула аппликаты волны:
-\begin{equation*}
- \arraycolsep=1.4pt
- \begin{array}{ll}
- \zeta(x,y,t) &= \sum\limits_n c_n \cos(u_n x + v_n y - \omega_n t + \epsilon_n), \\
- \end{array}
-\end{equation*}
-Формула потенциала скорости:
-\begin{equation*}
- \phi(x,y,z,t) = \sum_n \frac{c_n g}{\omega_n}
- e^{z\sqrt{u_n^2+v_n^2}}
- \sin(u_n x + v_n y - \omega_n t + \epsilon_n).
-\end{equation*}
-#+end_latex
-
-Недостатки: периодичность, вероятностная сходимость, линейная теория волн.
-
-** Цель и задачи
-Разработать /без предположений линейной теории волн/
-- модель ветрового волнения,
-- формулу для поля давлений,
-- программную реализацию для SMP и MPP.
-
-
-* Трехмерная модель АРСС
-** Основные формулы
-\begin{equation*}
- \zeta_{i,j,k} =
- \sum\limits_{l=0}^{p_1}
- \sum\limits_{m=0}^{p_2}
- \sum\limits_{n=0}^{p_3}
- \Phi_{l,m,n} \zeta_{i-l,j-m,k-n}
- +
- \sum\limits_{l=0}^{q_1}
- \sum\limits_{m=0}^{q_2}
- \sum\limits_{n=0}^{q_3}
- \Theta_{l,m,n} \epsilon_{i-l,j-m,k-n}
- ,
- \label{eq:arma-process}
-\end{equation*}
-
-По сравнению с моделью ЛХ
-- высоко-производительная,
-- непериодическая,
-- чисто математическая.
-
-По сравнению с другими работами
-- трехмерная,
-- исследуются трехмерные АКФ, а не спектры.
-
-** Определение коэффициентов :noexport:
-#+begin_latex
-\framesubitile{Модель АР}
- \small%
- Решить СЛАУ (трехмерные уравнения Юла---Уокера) относительно $\Phi$:
- \begin{equation*}
- \Gamma
- \left[
- \begin{array}{l}
- \Phi_{0,0,0}\\
- \Phi_{0,0,1}\\
- \vdotswithin{\Phi_{0,0,0}}\\
- \Phi_{p_1,p_2,p_3}
- \end{array}
- \right]
- =
- \left[
- \begin{array}{l}
- K_{0,0,0}-\Var{\epsilon}\\
- K_{0,0,1}\\
- \vdotswithin{K_{0,0,0}}\\
- K_{p_1,p_2,p_3}
- \end{array}
- \right],
- \qquad
- \Gamma=
- \left[
- \begin{array}{llll}
- \Gamma_0 & \Gamma_1 & \cdots & \Gamma_{p_1} \\
- \Gamma_1 & \Gamma_0 & \ddots & \vdotswithin{\Gamma_0} \\
- \vdotswithin{\Gamma_0} & \ddots & \ddots & \Gamma_1 \\
- \Gamma_{p_1} & \cdots & \Gamma_1 & \Gamma_0
- \end{array}
- \right],
- \end{equation*}
- \begin{equation*}
- \Gamma_i =
- \left[
- \begin{array}{llll}
- \Gamma^0_i & \Gamma^1_i & \cdots & \Gamma^{p_2}_i \\
- \Gamma^1_i & \Gamma^0_i & \ddots & \vdotswithin{\Gamma^0_i} \\
- \vdotswithin{\Gamma^0_i} & \ddots & \ddots & \Gamma^1_i \\
- \Gamma^{p_2}_i & \cdots & \Gamma^1_i & \Gamma^0_i
- \end{array}
- \right]
- \qquad
- \Gamma_i^j=
- \left[
- \begin{array}{llll}
- K_{i,j,0} & K_{i,j,1} & \cdots & K_{i,j,p_3} \\
- K_{i,j,1} & K_{i,j,0} & \ddots &x \vdotswithin{K_{i,j,0}} \\
- \vdotswithin{K_{i,j,0}} & \ddots & \ddots & K_{i,j,1} \\
- K_{i,j,p_3} & \cdots & K_{i,j,1} & K_{i,j,0}
- \end{array}
- \right].
- \end{equation*}
-#+end_latex
-
-** Определение коэффициентов :noexport:
-#+begin_latex
-\framesubitile{Модель СС}
- \small%
- Solve non-linear system of equations for $\Theta$:
- \begin{equation*}
- K_{i,j,k} =
- \left[
- \displaystyle
- \sum\limits_{l=i}^{q_1}
- \sum\limits_{m=j}^{q_2}
- \sum\limits_{n=k}^{q_3}
- \Theta_{l,m,n}\Theta_{l-i,m-j,n-k}
- \right]
- \Var{\epsilon}
- \end{equation*}
- via fixed-point iteration method:
- \begin{equation*}
- \theta_{i,j,k} =
- -\frac{K_{0,0,0}}{\Var{\epsilon}}
- +
- \sum\limits_{l=i}^{q_1}
- \sum\limits_{m=j}^{q_2}
- \sum\limits_{n=k}^{q_3}
- \Theta_{l,m,n} \Theta_{l-i,m-j,n-k}.
- \end{equation*}
-#+end_latex
-
-** Критерии выбора моделей АР и СС
-Использовать модель АР для стоячих волн и модель СС для прогрессивных.
-#+latex: \newline\newline
-Экспериментальный результат:
-- модели расходятся, если делать наоборот;
-- характеристики взволнованной поверхности соответствуют реальным.
-
-** АКФ морской поверхности
-#+begin_latex
-\small
-\begin{tikzpicture}[remember picture,overlay]
- \node[fill=spbuWhite2,text width=2.3cm,xshift=1cm,yshift=1.5cm,anchor=west] (waveProfile) at (current page.west) {Формула профиля волны или спектра};
- \node[fill=spbuWhite2,text width=2.0cm,yshift=1.5cm] (bigPoly) at (current page.center) {Полином высокой степени};
- \node[fill=spbuWhite2,text width=2.0cm,xshift=-1cm,yshift=1.5cm,anchor=east] (acfApprox) at (current page.east) {Формула АКФ};
- \draw[->,thick] (waveProfile) to node[above] {\scriptsize теорема} node[below] {\scriptsize Винера---Хинчина} (bigPoly);
- \draw[->,thick] (bigPoly) to node[above] {\scriptsize аппроксимация} node[below] {\scriptsize модельной функцией} (acfApprox);
-\end{tikzpicture}
-\only<1>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-0}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
-\end{tikzpicture}
-}
-\only<2>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-1}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
-\end{tikzpicture}
-}
-\only<3>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-3}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
-\end{tikzpicture}
-}
-\only<4>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
-\end{tikzpicture}
-}
-\only<5>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-00}};
-\end{tikzpicture}
-}
-\only<6>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-01}};
-\end{tikzpicture}
-}
-\only<7>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-03}};
-\end{tikzpicture}
-}
-\only<8>{
-\begin{tikzpicture}[remember picture,overlay]
- \node[xshift=-3cm,yshift=-1.5cm,anchor=center] (acf1) at (current page.center) {\includegraphics[scale=0.7]{standing-acf-4}};
- \node[xshift=3cm,yshift=-1.5cm,anchor=center] (acf2) at (current page.center) {\includegraphics[scale=0.7]{propagating-acf-04}};
-\end{tikzpicture}
-}
-#+end_latex
-
-** Верификация модели АРСС
-#+begin_latex
-\small%
-\centering
-\begin{columns}
- \begin{column}{0.5\textwidth}
- \centering%
- Стоячие волны
- \begin{tabular}{ll}
- \includegraphics[scale=0.5]{standing-elevation} &
- \includegraphics[scale=0.5]{standing-wave-height-x} \\
- \addlinespace
- \includegraphics[scale=0.5]{standing-wave-length-x} &
- \includegraphics[scale=0.5]{standing-wave-period} \\
- \end{tabular}
- \end{column}
- \begin{column}{0.5\textwidth}
- \centering%
- Прогрессивные волны
- \begin{tabular}{ll}
- \includegraphics[scale=0.5]{propagating-elevation} &
- \includegraphics[scale=0.5]{propagating-wave-height-x} \\
- \addlinespace
- \includegraphics[scale=0.5]{propagating-wave-length-x} &
- \includegraphics[scale=0.5]{propagating-wave-period} \\
- \end{tabular}
- \end{column}
-\end{columns}
-#+end_latex
-
-** Взволнованная морская поверхность
-#+begin_latex
-\begin{tikzpicture}[remember picture,overlay]
- \node[inner sep=0pt,rectangle] at (current page.center){%
- \includegraphics[width=0.95\paperwidth]{wavy}
- };%
-\end{tikzpicture}
-#+end_latex
-
-** Нелинейное волнение
-
-#+begin_latex
- \flushleft%
- \vskip\baselineskip
- \begin{minipage}{0.4\textwidth}
- \begin{block}{\small\centering Преобразование аппликат}
- \begin{equation}
- \label{eq:distribution}
- \only<1>{\Phi(\zeta_k)}
- \only<2->{\rectemph{oldDist}{\Phi(\zeta_k)}}
- =
- \only<1>{F(\zeta^{*}_k)}
- \only<2->{\rectemph{newDist}{F(\zeta^{*}_k)}}
- \end{equation}
- \vspace{-\baselineskip}
- \end{block}
- \end{minipage}
- \vskip2\baselineskip
- \begin{block}{\small Преобразование АКФ}
- \begin{equation*}
- \only<1>{K_{\zeta^{*}}}
- \only<2->{\rectemph{newACF}{K_{\zeta^{*}}}}
- \left( \vec u \right)
- =
- \sum\limits_{m=0}^{\infty}
- C_m^2 \frac{K_\zeta^m \left( \vec u \right)}{m!}
- \quad
- C_m = \frac{1}{\sqrt{2\pi}}
- \int\limits_0^\infty
- \only<1>{\zeta^{*}(y)}
- \only<2->{\rectemph{solutionDist}{\zeta^{*}(y)}}
- \,
- \only<1>{H_m(y)}
- \only<2->{\rectemph{hermitePoly}{H_m(y)}}
- \exp\!\left[ -\frac{y^2}{2} \right]
- \end{equation*}
- \vspace{-\baselineskip}
- \end{block}
- \only<2->{%
- \begin{tikzpicture}[remember picture,overlay]
- % first block
- \node[fill=none,baseline,anchor= west,yshift=0cm] (oldDistLabel) at (current page.west) {\small гауссов закон распределения};
- \path[->,thick] (oldDistLabel.north) edge [bend left=20,out=0](oldDist.south);
-
- % second block
- \node[fill=none,anchor=south east,yshift=0.1cm] (hermitePolyLabel) at (current page.south east) {\small полином Эрмита};
- \path[->,thick] (hermitePolyLabel.north) edge [bend left=20,out=0](hermitePoly.south);
- \node[fill=none,anchor=south,yshift=0.1cm] (solutionDistLabel) at (current page.south) {\small решение ур.~\ref{eq:distribution}};
- \path[->,thick] (solutionDistLabel.north) edge [bend right=20,out=0](solutionDist.south);
- \node[fill=none,baseline,anchor=south west,xshift=0.5cm,yshift=0.1cm] (newACFLabel) at (current page.south west) {\small\hspace{-0.5cm}новая АКФ};
- \path[->,thick] (newACFLabel.north west) edge [bend right=20,out=0](newACF.south);
-
- % picture
- \node[fill=spbuWhite2,anchor=north east,xshift=-0.8cm,yshift=-1.2cm]
- (skewNormal2Graph) at (current page.north east) {%
- \includegraphics[scale=0.4]{skew-normal-2}
- };
- \path[->,thick] (skewNormal2Graph.west) edge [bend left=40](newDist.south);
- \end{tikzpicture}
- }
-#+end_latex
-
-* Формула для поля давлений
-** Уравнения потенциального течения
-#+begin_latex
-\begin{align*}
- & \nabla^2\phi = 0 & \text{\small уравнение неразрывности}\\
- & \phi_t+\frac{1}{2} |\vec{\upsilon}|^2 + g\zeta=-\frac{p}{\rho}
- & \text{\small динамическое ГУ на }z=\zeta(x,y,t)\\
- &
- \only<1>{D\zeta}
- \only<2->{\circleemph{dzeta}{D\zeta}}
- =
- \only<1>{\nabla \phi \cdot \vec{n}}
- \only<2->{\circleemph{dphi}{\nabla \phi \cdot \vec{n}}}
- & \text{\small кинематическое ГУ на }z=\zeta(x,y,t)
-\end{align*}
-\only<2->{%
-\begin{tikzpicture}[remember picture,overlay]
- \node[fill=none,baseline,anchor=south west,xshift=1cm,yshift=0cm]
- (dzetaLabel) at (current page.south west) {%
- \small\hspace{-1cm}субстациональная производная $\zeta$%
- };
- \node[fill=none,baseline,anchor=south east,yshift=0cm]
- (dphiLabel) at (current page.south east) {%
- \small производная по нормали к $\zeta$%
- };
- \path[->,thick] (dzetaLabel.north west) edge [bend left](dzeta.west);
- \path[->,thick] (dphiLabel.north) edge [bend left,out=0](dphi.south east);
-\end{tikzpicture}
-}
-#+end_latex
-
-** Двухмерный случай
-
-#+begin_latex
-\small%
-\begin{minipage}{0.4\textwidth}
- \vspace{-\baselineskip}
- \begin{align*}
- & \phi_{xx}+\phi_{zz}=0\\
- & \zeta_t =
- \only<1>{\left(\zeta_x/\sqrt{1 + \zeta_x^2}-\zeta_x\right) \phi_x}%
- \only<2->{\rectemph{dzetadphi2}{\left(\zeta_x/\sqrt{1 + \zeta_x^2}-\zeta_x\right) \phi_x}}
- - \phi_z
- \end{align*}
-\end{minipage}
-\newline
-Решение в рамках линейной теории
-\begin{equation*}
- \phi(x,z,t)
- =
- \InverseFourierX{
- \frac{\Sinh{2\pi u (z+h)}}{2\pi u \Sinh{2\pi u h}}
- \FourierX{-\zeta_t}{x}{u}
- }{u}{x}
- =
- \only<1>{\mathcal{W}(x,z)}
- \only<2->{\rectemph{windowFunc}{\mathcal{W}(x,z)}}
- \mathrel{*} \zeta_t(x,t)
-\end{equation*}
-Общее решение
-\begin{equation*}
- \boxed{
- \phi(x,z,t)
- =
- \InverseFourierX{
- \frac{\Sinh{2\pi u (z+h)}}{2\pi u}
- \frac{
- \FourierX{ \zeta_t / \left(i \:\!\:\! f(x) - 1\right) }{x}{u}
- }{
- \FourierX{ \FunSecond{\zeta(x,t)} }{x}{u}
- }
- }{u}{x}
- }
-\end{equation*}
-\only<2->{%
-\begin{tikzpicture}[remember picture,overlay]
- \node[fill=none,baseline,anchor=north,xshift=0cm,yshift=-1.2cm]
- (dzetadphiLabel) at (current page.north) {%
- \small нет в линейной теории%
- };
- \path[->,thick] (dzetadphiLabel.west) edge [bend right=20](dzetadphi2.north);
- \node[fill=spbuWhite2,anchor=north east,xshift=-0.2cm,yshift=-1.2cm]
- (windowFunctionGraph) at (current page.north east) {%
- \includegraphics[scale=0.4]{window-function-2}
- };
- \path[->,thick] (windowFunctionGraph.south) edge [bend right,out=0](windowFunc.north);
-\end{tikzpicture}
-}
-#+end_latex
-
-** Сравнение с линейной теорией
-#+begin_latex
-\centering
-\begin{columns}
- \begin{column}{0.15\textwidth}
- \only<1>{$A=1$м}%
- \only<2>{$A=2$м}%
- \only<3>{$A=4$м}%
- \end{column}
- \begin{column}{0.4\textwidth}
- \begin{block}{\small Линейная теория}
- \includegraphics<1>{velocity-ref-1}
- \includegraphics<2>{velocity-ref-2}
- \includegraphics<3>{velocity-ref-4}
- \end{block}
- \end{column}
- \begin{column}{0.4\textwidth}
- \begin{block}{\small Новая формула}
- \includegraphics<1>{velocity-1}
- \includegraphics<2>{velocity-2}
- \includegraphics<3>{velocity-4}
- \end{block}
- \end{column}
-\end{columns}
-#+end_latex
-
-** Сравнение с формулой для ВМА
-#+begin_latex
-\centering
-\begin{columns}[T]
- \begin{column}{0.45\textwidth}
- \begin{block}{\small Малая амплитуда}
- \vspace{0.25\baselineskip}%
- \includegraphics{low-amp-color}
- \end{block}
- \end{column}
- \begin{column}{0.45\textwidth}
- \begin{block}{\small Высокая амплитуда}
- \vspace{0.25\baselineskip}%
- \includegraphics{high-amp-color}
- \end{block}
- \end{column}
-\end{columns}
-#+end_latex
-
-** Выводы
-Метод подходит для
-- дискретно заданной $\zeta(x,y,t)$,
-- волн произвольных амплитуд,
-- произвольной глубины $h=\text{const}$.
-
-* Программный комплекс
-** Диаграмма
-:PROPERTIES:
-:BEAMER_ENV: fullframe
-:END:
-
-#+begin_latex
- \tikzset{DataBlock/.style={rectangle,draw=spbuDarkGray,thick,text width=2cm,align=center}}%
- \tikzset{Terminator/.style={circle,fill=spbuDarkGray,thick,minimum size=0.4cm,text width=0pt}}%
- \tikzset{Comment/.style={draw=none,fill=none,text width=8.8cm}}%
- \small
- \begin{tikzpicture}[x=6cm,y=0.80cm]
- % UML blocks
- \node[Terminator] (umlStart) at (0,0) {};
- \node[DataBlock] (umlSpec) at (0,-1) {$S(\omega,\theta)$};
- \node[DataBlock] (umlK) at (0,-2) {$K_{i,j,k}$};
- \node[DataBlock,fill=spbuWhite2] (umlK2) at (0,-3) {$K_{i,j,k}^{*}$};
- \node[DataBlock] (umlPhi) at (0,-4) {$\Phi_{i,j,k}$};
- \node[DataBlock] (umlEps) at (0,-5) {$\epsilon_{i,j,k}$};
- \node[DataBlock,fill=spbuWhite2] (umlZeta2) at (0,-6) {$\zeta_{i,j,k}^{*}$};
- \node[DataBlock] (umlZeta) at (0,-7) {$\zeta_{i,j,k}$};
- \node[DataBlock] (umlVelocity) at (0,-8) {$\phi(x,y,z)$};
- \node[DataBlock] (umlPressure) at (0,-9) {$p(x,y,z)$};
- \node[Terminator] (umlEnd) at (0,-10) {};
- \node[circle,draw=spbuDarkGray,thick,minimum size=0.5cm,text width=0pt] at (0,-10) {};
-
- % edges
- \path[->,thick] (umlStart.south) edge (umlSpec.north);
- \path[thick] (umlSpec.south) edge (umlK.north);
- \path[thick] (umlK.south) edge (umlK2.north);
- \path[thick] (umlK2.south) edge (umlPhi.north);
- \path[thick] (umlPhi.south) edge (umlEps.north);
- \path[thick] (umlEps.south) edge (umlZeta2.north);
- \path[thick] (umlZeta2.south) edge (umlZeta.north);
- \path[thick] (umlZeta.south) edge (umlVelocity.north);
- \path[thick] (umlVelocity.south) edge (umlPressure.north);
- \path[->,thick] (umlPressure.south) edge (umlEnd.north);
-
- % comments
- \node[align=left,draw=none] at (1,-1) {Частотно-направленный спектр волнения,};
- \node[Comment] at (1,-2) {автоковариационная функция (АКФ),};
- \node[Comment] at (1,-3) {преобразованная АКФ,};
- \node[Comment] at (1,-4) {коэффициенты авторегрессии,};
- \node[Comment] at (1,-5) {белый шум,};
- \node[Comment] at (1,-6) {преобразованная реализация,};
- \node[Comment] at (1,-7) {реализация взволнованной поверхности,};
- \node[Comment] at (1,-8) {потенциал скорости,};
- \node[Comment] at (1,-9) {давление.};
- \end{tikzpicture}
-#+end_latex
-
-** Время генерации, сек.
-#+begin_latex
-\centering
-\small
- \begin{tabular}{c lll lll}
- \toprule
- & \multicolumn{3}{c}{Модель Лонге---Хиггинса} & \multicolumn{3}{c}{Авторег. модель}\tabularnewline
- \cmidrule{2-7}
- Размер & OpenCL & OpenMP & MPI & OpenCL & OpenMP & MPI \\
- \midrule
- 400000 & 0.82 & 40.44 & 32.60 & 1.80 & 0.800 & 0.750\\
- 440000 & 0.90 & 44.59 & 35.78 & 1.92 & 0.100 & 0.930\\
- 480000 & 0.99 & 48.49 & 38.93 & 2.29 & 0.970 & 0.126\\
- 520000 & 1.07 & 52.65 & 41.92 & 2.43 & 0.118 & 0.117\\
- 560000 & 1.15 & 56.45 & 45.00 & 2.51 & 0.117 & 0.161\\
- 600000 & 1.23 & 60.85 & 48.80 & 2.54 & 0.123 & 0.132\\
- 640000 & 1.31 & 65.07 & 53.02 & 2.73 & 0.123 & 0.160\\
- 680000 & 1.40 & 68.90 & 54.92 & 2.80 & 0.138 & 0.136\\
- 720000 & 1.48 & 72.49 & 58.42 & 2.88 & 0.144 & 0.173\\
- 760000 & \only<2>{\cellcolor{markBlue!50}}{1.56} & 76.86 & 61.41 & 3.47 & \only<2>{\cellcolor{markBlue!50}}{0.156} & 0.155\\
- 800000 & 1.64 & 81.03 & 66.42 & 3.25 & 0.166 & 0.174\\
- \bottomrule
-\end{tabular}
-#+end_latex
-
-** Оптимизация записи в файл
-#+begin_latex
- \begin{columns}[T]
- \begin{column}{0.575\textwidth}
- \begin{block}{\small Диаграмма событий}
- \vspace{0.25\baselineskip}%
- \includegraphics{overlap-color}
- \end{block}
- \end{column}
- \begin{column}{0.425\textwidth}
- \begin{block}{\small Время генерации}
- \vspace{0.25\baselineskip}%
- \includegraphics{performance-color}
- \end{block}
- \end{column}
- \end{columns}
-#+end_latex
-
-** Отказоустойчивость
-#+begin_latex
-\centering%
-\includegraphics{mpp-time-color}
-#+end_latex
-
-** Выводы
-Программная реализация
-- масштабируется на SMP и MPP системы,
-- эффективна и без использования GPU
-- и отказоустойчива.
-
-** Апробация
-:PROPERTIES:
-:BEAMER_ENV: fullframe
-:END:
-
-#+begin_latex
-\begin{columns}[T]
- \begin{column}{0.55\textwidth}
- \begin{block}{\small Апробация в LAMP4}
- \vspace{0.25\baselineskip}%
- \includegraphics[width=\textwidth]{lamp4-ar-waves}
- \end{block}
- \end{column}
- \begin{column}{0.35\textwidth}
- \begin{block}{\small Апробация в Spark}
- \centering
- \includegraphics[width=0.7\textwidth]{spark-logo}
- \end{block}
- \begin{block}{\small Награды}
- \vspace{0.25\baselineskip}%
- \includegraphics[width=\textwidth]{hpcs-15-poster-paper-award}
- \end{block}
- \end{column}
-\end{columns}
-#+end_latex
-
-** Заключение
-- Изучена модель ветрового волнения для генерации волн произвольных амплитуд.
-- Разработан гибридный метод расчета давлений в двухмерной постановке.
-- Программная реализация метода была сведена к параллельному вычислению большого
- количества преобразований Фурье.
-- Предварительная апробация модели и метода была произведена в пакете Large
- Amplitude Motion Program 4.
-
-#+begin_latex
-\setbeamercolor{bgcolor}{fg=white,bg=black!50}
-#+end_latex
-
-** Спасибо за внимание
-:PROPERTIES:
-:BEAMER_ENV: fullframe
-:END:
-
-#+begin_latex
-\begin{tikzpicture}[remember picture,overlay]
- \node[anchor=north west,xshift=-5,yshift=5] at (current page.north west) {%
- \includegraphics[width=\paperwidth]{sea}
- };
- \node[anchor=center,fill=black,text=spbuWhite3,fill opacity=0.5,text opacity=1,yshift=1.5cm] at (current page.center) {%
- \Large\textbf{Спасибо за внимание!}
- };
-\end{tikzpicture}
-#+end_latex