arma-thesis

Simulation modelling of irregular waves for marine object dynamics programmes
git clone https://git.igankevich.com/arma-thesis.git
Log | Files | Refs | LICENSE

arma-slides.org (22707B)


      1 #+TITLE: Simulation modelling of irregular waves for marine object dynamics programmes
      2 #+AUTHOR: Ivan Gankevich
      3 #+DATE: St. Petersburg, 2018
      4 #+LANGUAGE: en
      5 #+LATEX_CLASS: beamer
      6 #+LATEX_CLASS_OPTIONS: [14pt,aspectratio=169]
      7 #+LATEX_HEADER_EXTRA: \input{slides-titlepage}
      8 #+LATEX_HEADER_EXTRA: \input{slides-preamble}
      9 #+BEAMER_THEME: SaintPetersburg
     10 #+OPTIONS: todo:nil title:nil ':t toc:nil H:2
     11 #+STARTUP: indent
     12 #+PROPERTY: header-args:R :results graphics :exports results :eval no-export
     13 
     14 # Novel modelling of irregular waves for simulating marine object dynamics
     15 
     16 #+begin_export latex
     17 \setbeamertemplate{title page}{%
     18 	\centering%
     19 	\vskip1cm\spbuInsertField{title}%
     20 	\ifx\insertsubtitle\empty\else%
     21 		\vskip0.5\baselineskip%
     22 		\spbuInsertField{subtitle}%
     23 	\fi%
     24 	\vfill\spbuInsertField{author}%
     25 	\vfill\spbuInsertField{institute}%
     26 	\vfill\inserttitlegraphic%
     27 	\vfill\spbuInsertField{date}%
     28 }
     29 \setbeamerfont{block title}{size=\small}
     30 \setbeamerfont{note page}{size=\footnotesize}
     31 \setjobnamebeamerversion{arma-slides}
     32 \mode*
     33 #+end_export
     34 
     35 * Introduction
     36 :PROPERTIES:
     37 :BEAMER_env: ignoreheading
     38 :END:
     39 
     40 ** Title page
     41 :PROPERTIES:
     42 :BEAMER_env: fullframe
     43 :BEAMER_act: <presentation>
     44 :END:
     45 
     46 #+beamer: \label{slide-title}
     47 #+beamer: \maketitle
     48 
     49 ** Problem statement
     50 :PROPERTIES:
     51 :BEAMER_act: <presentation>
     52 :END:
     53 
     54 #+beamer: \label{slide-problem}
     55 
     56 Develop
     57 - three-dimensional simulation model for sea waves,
     58 - method for computing pressure field under wavy surface,
     59 - software suite for shared and distributed memory systems
     60 which are /alternative/ to their counterparts from linear wave theory.
     61 
     62 * Three-dimensional ARMA model
     63 
     64 ** Three-dimensional ARMA model
     65 :PROPERTIES:
     66 :BEAMER_act: <presentation>
     67 :END:
     68 
     69 #+beamer: \label{slide-arma}
     70 
     71 \begin{equation*}
     72   \rectemph{zeta1}{\zeta_{i,j,k}} =
     73   \sum\limits_{l=0}^{p_1}
     74   \sum\limits_{m=0}^{p_2}
     75   \sum\limits_{n=0}^{p_3}
     76   \rectemph{phi}{\Phi_{l,m,n}} \rectemph{zeta2}{\zeta_{i-l,j-m,k-n}}
     77   +
     78   \sum\limits_{l=0}^{q_1}
     79   \sum\limits_{m=0}^{q_2}
     80   \sum\limits_{n=0}^{q_3}
     81   \rectemph{theta}{\Theta_{l,m,n}} \rectemph{eps}{\epsilon_{i-l,j-m,k-n}}
     82 \end{equation*}
     83 
     84 #+begin_export latex
     85 \begin{tikzpicture}[remember picture,overlay]
     86 \node[fill=none,baseline,anchor=south west,xshift=1.1cm,yshift=-1.75cm]
     87 	(zetaLabel) at (current page.north west)
     88 	{\scriptsize{}wavy surface elevation};
     89 \node[fill=none,anchor=south east,xshift=-2cm,yshift=-1.75cm]
     90 	(epsLabel) at (current page.north east)
     91 	{\scriptsize{}white noise};
     92 \node[fill=none,baseline,anchor=north west,below=of phi,yshift=0.2cm]
     93 	(phiLabel)
     94 	{\scriptsize{}AR coefficients};
     95 \node[fill=none,baseline,anchor=north west,below=of theta,yshift=0.2cm]
     96 	(thetaLabel)
     97 	{\scriptsize{}MA coefficients};
     98 \path[->,thick] (zetaLabel.south -| zeta1.north) edge (zeta1.north);
     99 \path[->,thick] (zetaLabel.south east)
    100 	edge [transform canvas={xshift=2mm}]
    101 	(zeta2.north west);
    102 \path[->,thick] (epsLabel.south -| eps.north west)
    103 	edge [transform canvas={xshift=2mm}]
    104 	(eps.north west);
    105 \path[->,thick] (phiLabel.north -| phi.south west)
    106 	edge [transform canvas={xshift=2.5mm}]
    107 	(phi.south west);
    108 \path[->,thick] (thetaLabel.north -| theta.south west)
    109 	edge [transform canvas={xshift=2.5mm}]
    110 	(theta.south west);
    111 \end{tikzpicture}
    112 #+end_export
    113 
    114 #+BEAMER: \vspace{0.5cm}\pause
    115 
    116 #+begin_src dot :exports results :file build/arma-pipeline.pdf
    117 digraph G {
    118 
    119   node [
    120 	  fontname="Open Sans",
    121 	  fontsize=10,
    122 	  margin="0.055,0",
    123 	  shape=box,
    124 	  fillcolor="#E5E6E5",
    125 	  style="filled",
    126 	  height="0.37",
    127 	  color="#404040"
    128   ]
    129   graph [nodesep="0.25",ranksep="0.30",rankdir="LR" margin=0]
    130   edge [arrowsize=0.66,color="#404040"]
    131   bgcolor="#F5F6F5"
    132 
    133   acf [label="ACF"]
    134   yule_walker_equations [label="Yule—Walker\nequations"]
    135   nonlinear_equations [label="Nonlinear\nequations"]
    136   ar_process [label="AR\nmodel"]
    137   ma_process [label="MA\nmodel"]
    138   arma_process [label="ARMA\nmodel"]
    139 
    140   acf->yule_walker_equations->ar_process->arma_process
    141   acf->nonlinear_equations->ma_process->arma_process
    142 
    143 }
    144 #+end_src
    145 
    146 #+RESULTS:
    147 [[file:build/arma-pipeline.pdf]]
    148 
    149 ** Wavy sea surface ACF
    150 :PROPERTIES:
    151 :BEAMER_act: <presentation>
    152 :END:
    153 
    154 #+beamer: \label{slide-acf}
    155 
    156 *** Columns
    157 :PROPERTIES:
    158 :BEAMER_env: columns
    159 :END:
    160 
    161 **** Column 1
    162 :PROPERTIES:
    163 :BEAMER_col: 1.00
    164 :END:
    165 
    166 #+latex: \vspace{-0.5cm}
    167 #+begin_src dot :exports results :file build/acf-pipeline.pdf
    168 digraph G {
    169 
    170   node [
    171 	  fontname="Open Sans",
    172 	  fontsize=10,
    173 	  margin="0.055,0",
    174 	  shape=box,
    175 	  fillcolor="#E5E6E5",
    176 	  style="filled",
    177 	  color="#404040"
    178   ]
    179   graph [nodesep="0.25",ranksep="0.20",rankdir="TB" margin=0]
    180   edge [arrowsize=0.66,color="#404040"]
    181   bgcolor="#F5F6F5"
    182 
    183   function [label="Wavy surface\nformula",height="0.40"]
    184   discrete_function [label="Discrete\nwavy surface",height="0.40"]
    185   field_data [label="Field\ndata",width="1.1",height="0.40"]
    186   theorem [label="Wiener—Khinchin theorem",height="0.20"]
    187   acf [label="ACF",height="0.20"]
    188 
    189   function->theorem
    190   discrete_function->theorem
    191   field_data->theorem
    192   theorem->acf
    193 
    194 }
    195 #+end_src
    196 
    197 #+RESULTS:
    198 [[file:build/acf-pipeline.pdf]]
    199 
    200 *** Separator
    201 :PROPERTIES:
    202 :BEAMER_env: ignoreheading
    203 :END:
    204 
    205 *** Columns
    206 :PROPERTIES:
    207 :BEAMER_env: columns
    208 :BEAMER_opt: T
    209 :END:
    210 
    211 **** Column 1
    212 :PROPERTIES:
    213 :BEAMER_col: 0.30
    214 :END:
    215 
    216 #+header: :width 1.7 :height 1.2 :bg #F5F6F5 :font sans
    217 #+begin_src R :file build/acf-propagating-plain-wave.pdf
    218 source(file.path("R", "common.R"))
    219 par(mar=c(0,0.5,0,0))
    220 df <- data.frame(t=rep(NA,0), x=rep(NA,0), y=rep(NA,0), z=rep(NA,0))
    221 n <- 20
    222 grid <- seq(1, n)
    223 alpha <- 2.13975
    224 beta <- 0.77341
    225 gamm <- 0.549017
    226 for (i in grid) {
    227 	for (j in grid) {
    228     x <- i/(n-1)
    229     y <- j/(n-1)
    230 		z <- gamm * exp(-alpha*(x+y)) * cos(beta*(x+y))
    231 		df[nrow(df) + 1,] <- c(0,i,j,z)
    232 	}
    233 }
    234 arma.wavy_plot(df, 0, zlim=c(0,0.5), expand=0.5, border=NA)
    235 #+end_src
    236 
    237 #+caption: Plain wave
    238 #+RESULTS:
    239 [[file:build/acf-propagating-plain-wave.pdf]]
    240 
    241 
    242 **** Column 2
    243 :PROPERTIES:
    244 :BEAMER_col: 0.35
    245 :END:
    246 
    247 #+header: :width 1.7 :height 1.2 :bg #F5F6F5 :font sans
    248 #+begin_src R :file build/acf-standing-plain-wave.pdf
    249 source(file.path("R", "common.R"))
    250 par(mar=c(0,0.5,0,0))
    251 df <- data.frame(t=rep(NA,0), x=rep(NA,0), y=rep(NA,0), z=rep(NA,0))
    252 n <- 20
    253 grid <- seq(1, n)
    254 alpha <- 2.31906
    255 beta <- -5.49873
    256 gamm <- 0.0680413
    257 for (i in grid) {
    258 	for (j in grid) {
    259     x <- i/(n-1)
    260     y <- j/(n-1)
    261 		z <- gamm * exp(-alpha*(x+y)) * cos(beta*x) * cos(beta*y)
    262 		df[nrow(df) + 1,] <- c(0,i,j,z)
    263 	}
    264 }
    265 arma.wavy_plot(df, 0, zlim=c(-0.05,0.05), expand=0.5, border=NA)
    266 #+end_src
    267 
    268 #+caption: Plain standing wave
    269 #+RESULTS:
    270 [[file:build/acf-standing-plain-wave.pdf]]
    271 
    272 **** Column 3
    273 :PROPERTIES:
    274 :BEAMER_col: 0.30
    275 :END:
    276 
    277 #+header: :width 1.7 :height 1.2 :bg #F5F6F5 :font sans
    278 #+begin_src R :file build/acf-propagating-stokes-wave.pdf
    279 source(file.path("R", "common.R"))
    280 par(mar=c(0,0.5,0,0))
    281 df <- data.frame(t=rep(NA,0), x=rep(NA,0), y=rep(NA,0), z=rep(NA,0))
    282 n <- 40
    283 alpha <- 0.5
    284 grid <- seq(1, n)
    285 k <- 0.77341
    286 t <- 0
    287 omega <- 0.3
    288 a <- 1.5
    289 for (i in grid) {
    290 	for (j in grid) {
    291     x <- i/(n-1)
    292     y <- j/(n-1)
    293     theta <- k*(x + y) - omega*t
    294 		z <- a * exp(-alpha*(x+y)) * (cos(theta) + 0.5*k*a*cos(2*theta) + (3/8)*(k*a*k*a)*cos(3*theta))
    295 		df[nrow(df) + 1,] <- c(0,i,j,z)
    296 	}
    297 }
    298 arma.acf_plot(df, 0, zlim=c(0,1.0), expand=0.5, border=NA)
    299 #+end_src
    300 
    301 #+caption: Stokes wave
    302 #+RESULTS:
    303 [[file:build/acf-propagating-stokes-wave.pdf]]
    304 
    305 ** ARMA model verification
    306 :PROPERTIES:
    307 :BEAMER_act: <presentation>
    308 :END:
    309 
    310 #+beamer: \label{slide-arma-verification}
    311 
    312 *** Standing waves
    313 :PROPERTIES:
    314 :BEAMER_col: 0.47
    315 :BEAMER_opt: T
    316 :END:
    317 
    318 #+latex: \vspace{-1cm}
    319 #+header: :width 2.7 :height 2.7 :bg #F5F6F5 :font sans
    320 #+begin_src R :file build/standing-wave-qqplots-slides.pdf
    321 source(file.path("R", "common.R"))
    322 par(pty="s", mfrow=c(2, 2), mar=c(1,1,1,0), mgp=c(3,0.3,0), cex=0.6, fg='black', col='navy')
    323 arma.qqplot_grid_adj(
    324   file.path("build", "arma-benchmarks", "verification-orig", "standing_wave"),
    325   c("elevation", "heights_y", "lengths_y", "periods"),
    326   c("elevation", "height", "length", "period"),
    327   0.1,
    328   xlab="x",
    329   ylab="y",
    330   tck=0.04
    331 )
    332 #+end_src
    333 
    334 #+caption: Standing plain waves
    335 #+RESULTS:
    336 [[file:build/standing-wave-qqplots-slides.pdf]]
    337 
    338 
    339 *** Propagating waves
    340 :PROPERTIES:
    341 :BEAMER_col: 0.47
    342 :BEAMER_opt: T
    343 :END:
    344 
    345 #+latex: \vspace{-1cm}
    346 #+header: :width 2.7 :height 2.7 :bg #F5F6F5 :font sans
    347 #+begin_src R :file build/propagating-wave-qqplots-slides.pdf
    348 source(file.path("R", "common.R"))
    349 par(pty="s", mfrow=c(2, 2), mar=c(1,1,1,0), mgp=c(3,0.3,0), cex=0.6, col='navy')
    350 arma.qqplot_grid_adj(
    351   file.path("build", "arma-benchmarks", "verification-orig", "propagating_wave"),
    352   c("elevation", "heights_y", "lengths_y", "periods"),
    353   c("elevation", "height", "length", "period"),
    354   0.1,
    355   xlab="x",
    356   ylab="y",
    357   tck=0.04
    358 )
    359 #+end_src
    360 
    361 #+caption: Propagating plain waves
    362 #+RESULTS:
    363 [[file:build/propagating-wave-qqplots-slides.pdf]]
    364 
    365 
    366 * Pressure field under discretely given wavy surface
    367 
    368 ** Velocity potential equations
    369 :PROPERTIES:
    370 :BEAMER_act: <presentation>
    371 :END:
    372 
    373 #+beamer: \footnotesize
    374 #+beamer: \label{slide-potential-flow}
    375 #+begin_export latex
    376 \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
    377 \vspace{-\baselineskip}%
    378 \begin{align*}%
    379     & \nabla^2\phi = 0
    380 	& \text{continuity equation}
    381 	\\
    382     & \phi_t+\frac{1}{2} |\vec{\upsilon}|^2 + g\zeta=-\frac{p}{\rho}
    383     & \text{dynamic BC for }z=\zeta(x,y,t)
    384 	\\
    385     & D\zeta = \nabla \phi \cdot \vec{n}
    386     & \text{kinematic BC for }z=\zeta(x,y,t)\\
    387 \end{align*}%
    388 \vspace{-2.5\baselineskip}%
    389 \end{beamercolorbox}%
    390 %
    391 \pause%
    392 %
    393 \spbuArrow{}%
    394 \vspace{-0.2cm}%
    395 %
    396 \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
    397 \vspace{-\baselineskip}%
    398 \begin{align*}%
    399     & \phi_{xx} + \phi_{yy} + \phi_{zz} = 0\\
    400     & \zeta_t 
    401     = \underbrace{\fillrectemph{f1}{\left(\FracSqrtZetaY{\zeta_x} - \zeta_x\right)}}_{f_1} \phi_x
    402     + \underbrace{\fillrectemph{f2}{\left(\FracSqrtZetaY{\zeta_y} - \zeta_y\right)}}_{f_2} \phi_y
    403     - \underbrace{\fillrectemph{f3}{\FracSqrtZetaY{1}}}_{f_3} \phi_z \\
    404 \end{align*}%
    405 \vspace{-2.7\baselineskip}%
    406 \end{beamercolorbox}%
    407 %
    408 \pause%
    409 #+end_export
    410 
    411 *** Columns
    412 :PROPERTIES:
    413 :BEAMER_env: columns
    414 :BEAMER_opt: T
    415 :END:
    416 
    417 **** Column 1
    418 :PROPERTIES:
    419 :BEAMER_col: 0.47
    420 :END:
    421 #+begin_export latex
    422 \vspace{-\baselineskip}%
    423 \spbuArrow{}%
    424 \vspace{-1.3\baselineskip}%
    425 \begingroup%
    426 \setlength\abovedisplayskip{1mm}%
    427 \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
    428 Linear wave theory solution:%
    429 \begin{equation*}%
    430 \phi(x,y,z,t) = \mathcal{W}_1(x,y,z) \mathrel{*} \left(-\zeta_t(x,y,t)\right)
    431 \end{equation*}%
    432 \vspace{-1.5\baselineskip}%
    433 \end{beamercolorbox}%
    434 \endgroup%
    435 #+end_export
    436 
    437 **** Column 2
    438 :PROPERTIES:
    439 :BEAMER_col: 0.47
    440 :END:
    441 #+begin_export latex
    442 \vspace{-\baselineskip}%
    443 \spbuArrow{}%
    444 \vspace{-1.3\baselineskip}%
    445 \begingroup%
    446 \setlength\abovedisplayskip{1mm}%
    447 \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
    448 Generic solution:\vspace{-0.5\baselineskip}%
    449 \begin{equation*}%
    450 	\phi(x,y,z,t)
    451 	=
    452 	\mathcal{W}_2(x,y,z)
    453 	\mathrel{*}
    454 %	\frac{\zeta_t(x,y,t)}{i f_1(x,y,t) + i f_2(x,y,t) - f_3(x,y,t)}
    455 	\frac{\zeta_t(x,y,t)}{F\left(f_1, f_2, f_3\right)}
    456 %	& \mathcal{W}_1 \approx \mathcal{W}_2
    457 \end{equation*}%
    458 \vspace{-1.35\baselineskip}%
    459 \end{beamercolorbox}%
    460 \endgroup%
    461 #+end_export
    462 
    463 ** Pressure computation verification
    464 :PROPERTIES:
    465 :BEAMER_act: <presentation>
    466 :END:
    467 
    468 #+beamer: \label{slide-potential-verification}
    469 
    470 *** Columns
    471 :PROPERTIES:
    472 :BEAMER_env: columns
    473 :BEAMER_opt: T
    474 :END:
    475 
    476 **** Column 1
    477 :PROPERTIES:
    478 :BEAMER_col: 0.47
    479 :END:
    480 
    481 #+beamer: \vspace{-0.5cm}
    482 #+header: :width 2.7 :height 1.5 :bg #F5F6F5 :font sans
    483 #+begin_src R :file build/slides-plain-wave-velocity-field-comparison.pdf
    484 source(file.path("R", "velocity-potentials.R"))
    485 nlevels <- 41
    486 levels <- pretty(c(-200,200), nlevels)
    487 palette <- colorRampPalette(c("blue", "lightyellow", "red"))
    488 col <- palette(nlevels-1)
    489 
    490 par(pty="s",mgp=c(3,0.2,0),mfrow=c(1,2),mar=c(1.5,1,0,0),cex=0.66,bty="n")
    491 
    492 # linear solver
    493 #par(fig=c(0,0.95,0,0.5),new=TRUE)
    494 arma.plot_velocity_potential_field(
    495   file.path("build", "arma-benchmarks", "verification-orig", "plain_wave_linear_solver"),
    496   levels=levels,
    497   col=col,
    498   contour_lwd=0.5,
    499   zeta_lwd=1,
    500   sky_col='#F5F6F5',
    501   axis_args=list(tck=-0.02),
    502   z_min=-5,
    503   title_args=list(main="     Linear wave\n     theory",outer=FALSE,adj=0,line=-1.5,cex.main=0.77)
    504 )
    505 
    506 # high-amplitude solver
    507 #par(fig=c(0,0.95,0.5,1),new=TRUE)
    508 arma.plot_velocity_potential_field(
    509   file.path("build", "arma-benchmarks", "verification-orig", "plain_wave_high_amplitude_solver"),
    510   levels=levels,
    511   col=col,
    512   contour_lwd=0.5,
    513   zeta_lwd=1,
    514   sky_col='#F5F6F5',
    515   axis_args=list(tck=-0.02),
    516   z_min=-5,
    517   title_args=list(main="     Generic\n     solution",outer=FALSE,adj=0,line=-1.5,cex.main=0.77)
    518 )
    519 #+end_src
    520 
    521 #+RESULTS:
    522 [[file:build/slides-plain-wave-velocity-field-comparison.pdf]]
    523 
    524 **** Column 2
    525 :PROPERTIES:
    526 :BEAMER_col: 0.47
    527 :END:
    528 
    529 #+beamer: \vspace{-0.5cm}
    530 #+header: :width 2.7 :height 1.3 :bg #F5F6F5 :font sans
    531 #+begin_src R :file build/slides-large-and-small-amplitude-velocity-field-comparison.pdf
    532 source(file.path("R", "velocity-potentials.R"))
    533 linetypes = c("solid", "dashed")
    534 par(pty="s",mgp=c(3,0.3,0),mfrow=c(1,2),mar=c(1.5,1,0,0),cex=0.66,bty="n")
    535 arma.plot_velocity(
    536   file.path("data", "velocity", "low-amp"),
    537   file.path("data", "velocity", "low-amp-0"),
    538   linetypes=linetypes,
    539   ylim=c(-2,2),
    540   axis_args=list(tck=-0.04),
    541   title_args=list(main="  Small\n  amplitude",outer=FALSE,adj=0,line=-1.5,cex.main=0.77),
    542   legend_x="bottomright"
    543 )
    544 arma.plot_velocity(
    545   file.path("data", "velocity", "high-amp"),
    546   file.path("data", "velocity", "high-amp-0"),
    547   linetypes=linetypes,
    548   ylim=c(-2,2),
    549   title_args=list(main="Large\n amplitude",outer=FALSE,adj=1,line=-1.5,cex.main=0.77),
    550   axis_args=list(tck=-0.04),
    551   legend_x="bottomright"
    552 )
    553 #+end_src
    554 
    555 #+RESULTS:
    556 [[file:build/slides-large-and-small-amplitude-velocity-field-comparison.pdf]]
    557 
    558 
    559 *** End column
    560 :PROPERTIES:
    561 :BEAMER_env: ignoreheading
    562 :END:
    563 
    564 #+header: :width 5.5 :height 1.3 :bg #F5F6F5 :font sans
    565 #+begin_src R :file build/slides-irregular-wave-velocity-field.pdf
    566 source(file.path("R", "velocity-potentials.R"))
    567 nlevels <- 41
    568 levels <- pretty(c(-40,40), nlevels)
    569 palette <- colorRampPalette(c("blue", "lightyellow", "red"))
    570 col <- palette(nlevels-1)
    571 
    572 par(mgp=c(3,0.2,0),mar=c(1.5,1,0,0),cex=0.66,bty="n")
    573 
    574 # high-amplitude solver
    575 arma.plot_velocity_potential_field(
    576   file.path("build", "arma-benchmarks", "verification", "velocity", "our-formula"),
    577   levels=levels,
    578   col=col,
    579   contour_lwd=0.5,
    580   zeta_lwd=1,
    581   sky_col='#F5F6F5',
    582   axis_args=list(tck=-0.02),
    583   x_max=40,
    584   z_min=-5,
    585   compare_to=file.path("build", "arma-benchmarks", "verification", "velocity", "linear"),
    586   points_args=list(col="black",bg="black",pch=21,cex=1.5),
    587   title_args=list(main="      Irregular waves",outer=FALSE,adj=0.01,line=-1.5,cex.main=0.77)
    588 )
    589 #+end_src
    590 
    591 #+RESULTS:
    592 [[file:build/slides-irregular-wave-velocity-field.pdf]]
    593 
    594 
    595 * Software suite
    596 
    597 ** Software implementation
    598 :PROPERTIES:
    599 :BEAMER_act: <presentation>
    600 :END:
    601 
    602 #+beamer: \label{slide-implementation}
    603 
    604 #+begin_export latex
    605 \tikzset{Ann/.style={
    606 	fill=none,
    607 	baseline,
    608 	font=\footnotesize\linespread{1}\selectfont,
    609 }}%
    610 \tikzset{Cube/.style={
    611 	rectangle,
    612 	text width=0.7cm,
    613 	text height=0.7cm,
    614 	draw=spbuDarkGray,
    615 	fill=spbuWhite2,
    616 	thick,
    617 	font=\footnotesize\linespread{1}\selectfont,
    618 	align=center,
    619 	inner sep=0.5mm
    620 }}%
    621 \tikzset{CubeText/.style={
    622 	fill=none,
    623 	baseline,
    624 	font=\footnotesize\linespread{1}\selectfont,
    625 	inner sep=0mm
    626 }}%
    627 \tikzset{DataBlock/.style={
    628 	rectangle,
    629 	draw=spbuDarkGray,
    630 	thick,
    631 	text width=2cm,
    632 	align=center,
    633 	fill=spbuWhite2,
    634 	font=\footnotesize\linespread{1}\selectfont,
    635 	inner sep=1mm
    636 }}%
    637 \tikzset{Arrow/.style={
    638 	very thick,
    639 	arrows={-Triangle[length=0.25cm,width=0.125cm]},
    640 	draw=spbuDarkGray
    641 }}%
    642 \tikzset{Dashed/.style={
    643 	very thick,
    644 	draw=spbuDarkGray2,
    645 	dashed
    646 }}%
    647 \vspace{2cm}
    648 \begin{tikzpicture}[x=3cm,y=1cm,remember picture]
    649 % nodes
    650 \node[DataBlock,text width=1.2cm] (umlACF) at (0,0)
    651 	{ACF};
    652 \node[DataBlock,text width=2.6cm] (umlYW) at (1.1,0.8)
    653 	{AR coefficients};
    654 \node[DataBlock,text width=2.6cm] (umlNonlin) at (1.1,-0.8)
    655 	{MA coefficients};
    656 \node[DataBlock,text width=1.5cm] (umlAR) at (2.1,0.8)
    657 	{AR model};
    658 \node[DataBlock,text width=1.5cm] (umlMA) at (2.1,-0.8)
    659 	{MA model};
    660 \node[DataBlock,text width=1.5cm] (umlARMA) at (3.1,0)
    661 	{ARMA model};
    662 \node[DataBlock] (umlPres) at (4.1,0)
    663 	{Pressures};
    664 % arrows
    665 \path[Arrow] (umlACF.east) -- (umlYW.west);
    666 \path[Arrow] (umlACF.east) -- (umlNonlin.west);
    667 \path[Arrow] (umlYW.east) -- (umlAR.west);
    668 \path[Arrow] (umlNonlin.east) -- (umlMA.west);
    669 \path[Arrow] (umlAR.east) -- (umlARMA.west);
    670 \path[Arrow] (umlMA.east) -- (umlARMA.west);
    671 \path[Arrow] (umlARMA.east) -- (umlPres.west);
    672 \end{tikzpicture}
    673 #+end_export
    674 
    675 #+begin_export latex
    676 \begin{tikzpicture}[remember picture,overlay]
    677 % cubes
    678 \node[Cube,anchor=north west,yshift=-1.2cm,xshift=-3.5cm]
    679 	(cube00) at (current page.north east) {};
    680 \node[Cube,right=-0.5mm of cube00] (cube01) {};
    681 \node[Cube,below=-0.5mm of cube00] (cube10) {};
    682 \node[Cube,below=-0.5mm of cube01] (cube11) {};
    683 % cube labels
    684 \node[CubeText] (cubeLabel00) at (cube00) {A};
    685 \node[CubeText] (cubeLabel01) at (cube01) {B};
    686 \node[CubeText] (cubeLabel10) at (cube10) {C};
    687 \node[CubeText] (cubeLabel11) at (cube11) {D};
    688 % cube arrows
    689 \path[Arrow] (cubeLabel01.west) -- (cubeLabel00.east);
    690 \path[Arrow] (cubeLabel10.north) -- (cubeLabel00.south);
    691 \path[Arrow] (cubeLabel11.north west) -- (cubeLabel00.south east);
    692 \path[Arrow] (cubeLabel11.north) -- (cubeLabel01.south);
    693 \path[Arrow] (cubeLabel11.west) -- (cubeLabel10.east);
    694 \end{tikzpicture}
    695 #+end_export
    696 
    697 #+begin_export latex
    698 \begin{tikzpicture}[remember picture,overlay]
    699 % nodes
    700 \node[Ann,anchor=north,below=of umlACF] (annACF)
    701 	{Convolution (\(2\mathcal{F}\))};
    702 \node[Ann,anchor=north,above=of umlYW,align=center] (annYW)
    703 	{Symmetric system\\of linear equations};
    704 \node[Ann,anchor=north,below=of umlNonlin] (annNonlin)
    705 	{Thomas algorithm};
    706 \node[Ann,anchor=north,below=of umlMA,yshift=\baselineskip] (annMA)
    707 	{Convolution (\(3\mathcal{F}\))};
    708 \node[Ann,anchor=north,below=of umlPres] (annPres)
    709 	{Convolution (\(4\mathcal{F}\))};
    710 \node[Ann,anchor=south,above=of umlAR,align=center,yshift=1.5\baselineskip] (annAR)
    711 	{Minimalistic job scheduler};
    712 \node[Ann,anchor=north,below=1mm of cube11.south west,align=center] (annARdeps)
    713 	{Autoregressive\\dependencies};
    714 % arrows
    715 \path[Dashed] (annACF.north -| umlACF.south) -- (umlACF.south);
    716 \path[Dashed] (annNonlin.north -| umlNonlin.south) -- (umlNonlin.south);
    717 \path[Dashed] (annYW.south -| umlYW.north) -- (umlYW.north);
    718 \path[Dashed] (annAR.south) -- (umlAR.north);
    719 \path[Dashed] (cube00.west |- annAR.east) -- (annAR.east);
    720 \path[Dashed] (annMA.north -| umlMA.south) -- (umlMA.south);
    721 \path[Dashed] (annPres.north -| umlPres.south) -- (umlPres.south);
    722 \end{tikzpicture}
    723 #+end_export
    724 
    725 ** Shared memory system
    726 :PROPERTIES:
    727 :header-args:R: :results output raw :exports results
    728 :BEAMER_act: <presentation>
    729 :END:
    730 
    731 #+beamer: \label{slide-smp}
    732 
    733 #+beamer: \small
    734 #+header: :results output raw :exports results
    735 #+name: tab-arma-performance
    736 #+begin_src R :results output org :exports results
    737 source(file.path("R", "benchmarks.R"))
    738 options(arma.mark=",")
    739 model_names <- list(
    740 	ar.x="AR",
    741 	ma.x="MA",
    742 	lh.x="LH",
    743 	ar.y="AR",
    744 	ma.y="MA",
    745 	lh.y="LH",
    746   Row.names="\\orgcmidrule{2-4}{5-6}Subroutine"
    747 )
    748 row_names <- list(
    749   determine_coefficients="Coefficients",
    750   validate="Validation",
    751   generate_surface="Wavy surface",
    752   write_all="File output",
    753   copy_to_host="Copy data from GPU",
    754   velocity="Pressures"
    755 )
    756 arma.print_openmp_vs_opencl(model_names, row_names)
    757 #+end_src
    758 
    759 #+attr_latex: :booktabs t
    760 #+RESULTS: tab-arma-performance
    761 
    762 {\hfill\footnotesize{}LH --- Longuet---Higgins model.}
    763 
    764 ** Distributed memory system
    765 :PROPERTIES:
    766 :BEAMER_act: <presentation>
    767 :END:
    768 
    769 #+beamer: \label{slide-mpp}
    770 
    771 *** Columns
    772 :PROPERTIES:
    773 :BEAMER_env: columns
    774 :BEAMER_opt: T
    775 :END:
    776 
    777 **** Column 1
    778 :PROPERTIES:
    779 :BEAMER_col: 0.37
    780 :END:
    781 
    782 #+beamer: \vspace{-1cm}
    783 #+header: :width 2.3 :height 3 :bg #F5F6F5 :font sans
    784 #+begin_src R :file build/slides-bscheduler-performance.pdf
    785 source(file.path("R", "benchmarks.R"))
    786 par(mgp=c(1.5,0.4,0), mar=c(3.2,2.5,0.5,0.7), cex=0.7)
    787 data <- arma.load_bscheduler_performance_data()
    788 arma.plot_bscheduler_performance_data(
    789   data,
    790   list(
    791     openmp="OpenMP",
    792     bsc1="Bscheduler (single node)",
    793     bsc2="Bscheduler (two nodes)",
    794 	openmp_args=list(lty="solid", lwd=2, col='#404040', pch=19),
    795 	bsc1_args=list(lty="solid", lwd=2, col='#5353AC', pch=19),
    796 	bsc2_args=list(lty="solid", lwd=2, col='#E57575', pch=19)
    797   )
    798 )
    799 title(xlab="Wavy surface size", ylab="Time, s")
    800 #+end_src
    801 
    802 #+RESULTS:
    803 [[file:build/slides-bscheduler-performance.pdf]]
    804 
    805 **** Column 2
    806 :PROPERTIES:
    807 :BEAMER_col: 0.57
    808 :END:
    809 
    810 #+beamer: \vspace{-1cm}
    811 #+name: fig-master-slave-failure
    812 #+header: :width 3 :height 3 :bg #F5F6F5 :font sans
    813 #+begin_src R :file build/slides-master-slave-failure.pdf
    814 source(file.path("R", "benchmarks.R"))
    815 par(mgp=c(1.5,0.4,0), mar=c(3,2.5,0.5,0.5), cex=0.7)
    816 data <- arma.load_master_slave_failure_data()
    817 arma.plot_master_slave_failure_data(
    818   data,
    819   list(
    820     master="Bscheduler (master failure)",
    821     slave="Bscheduler (slave failure)",
    822     nofailures="Bscheduler (no failures)",
    823 	master_args=list(lty="solid", lwd=2, col='#E57575', pch=19),
    824 	slave_args=list(lty="solid", lwd=2, col='#5353AC', pch=19),
    825 	nofailures_args=list(lty="solid", lwd=2, col='#404040', pch=19)
    826   )
    827 )
    828 title(xlab="Wavy surface size", ylab="Time, s")
    829 #+end_src
    830 
    831 #+RESULTS: fig-master-slave-failure
    832 [[file:build/slides-master-slave-failure.pdf]]
    833 
    834 * Conclusion
    835 :PROPERTIES:
    836 :BEAMER_env: ignoreheading
    837 :END:
    838 
    839 ** Conclusion
    840 :PROPERTIES:
    841 :BEAMER_act: <presentation>
    842 :END:
    843 
    844 #+beamer: \label{slide-conclusion}
    845 
    846 The following items were developed in the course of the study.
    847 - Three-dimensional model for arbitrary-amplitude waves generation.
    848 - Pressure field computation method without small-amplitude waves assumption.
    849 - Software suite for shared and distributed memory systems.
    850 
    851 ** Approbation
    852 :PROPERTIES:
    853 :BEAMER_act: <presentation>
    854 :END:
    855 
    856 #+beamer: \label{slide-validation}
    857 
    858 - International conferences: STAB'13, ISSW'14, HPCS'15, HPCS'16, HPCS'17.
    859 - Book chapter in /The Ocean in Motion/ (Springer Oceanography).
    860 
    861 *** Columns
    862 :PROPERTIES:
    863 :BEAMER_env: columns
    864 :BEAMER_opt: T
    865 :END:
    866 
    867 **** LAMP4
    868 :PROPERTIES:
    869 :BEAMER_col: 0.25
    870 :BEAMER_env: block
    871 :END:
    872 
    873 #+ATTR_LATEX: :width \linewidth
    874 [[file:graphics/slides/lamp4-ar-waves.png]]
    875 
    876 **** Ascheduler
    877 :PROPERTIES:
    878 :BEAMER_col: 0.25
    879 :BEAMER_env: block
    880 :END:
    881 
    882 #+ATTR_LATEX: :width \linewidth
    883 [[file:graphics/slides/spark-logo.png]]
    884 
    885 **** HPCS'15
    886 :PROPERTIES:
    887 :BEAMER_col: 0.25
    888 :BEAMER_env: block
    889 :END:
    890 
    891 #+ATTR_LATEX: :width \linewidth
    892 [[file:graphics/slides/hpcs-15-poster-paper-award.png]]
    893 
    894 #+latex: \setbeamerfont{block title}{size=\normalsize}
    895