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