arma-thesis

git clone https://git.igankevich.com/arma-thesis.git
Log | Files | Refs | LICENSE

commit 2e27c0cf07412b3eb2a9f4d392816fba9ef005d2
parent a2073f2593b92696ef6a579c75e2c3bb7b671aa3
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Wed, 18 Jan 2017 14:25:46 +0300

Merge branch 'master' of ssh://bitbucket.org/igankevich/phd-diss

Diffstat:
R/common.R | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
phd-diss-ru.org | 18+++++++++++++++---
phd-diss.org | 18++++++++++++++----
3 files changed, 85 insertions(+), 7 deletions(-)

diff --git a/R/common.R b/R/common.R @@ -65,3 +65,59 @@ arma.skew_normal_2_plot <- function(x, params) { arma.fmt <- function(x, ndigits) { format(round(x, ndigits), nsmall=ndigits) } + +arma.plot_partitions <- function() { + library("rgl") + part_alpha <- 0.2 + part_col <- "grey" + part_size <- 2 + sc <- 0.8 + off <- part_size * (1-sc)/2 + bcol <- "grey" + balpha <- 1.0 + sc2 <- 1.0 - sc + off2 <- part_size * sc/2 + ccol <- "red" + calpha <- 1.0 + # whole parts + a1 <- cube3d(color=part_col, alpha=part_alpha) + a2 <- cube3d(color=part_col, alpha=part_alpha) + a3 <- cube3d(color=part_col, alpha=part_alpha) + shade3d(translate3d(a1, 0*part_size, 0, 0)) + shade3d(translate3d(a2, 1*part_size, 0, 0)) + shade3d(translate3d(a3, 2*part_size, 0, 0)) + # stripped parts + b1 <- scale3d(cube3d(color=bcol, alpha=balpha), sc, sc, sc) + b2 <- scale3d(cube3d(color=bcol, alpha=balpha), sc, sc, sc) + b3 <- scale3d(cube3d(color=bcol, alpha=balpha), sc, sc, sc) + shade3d(translate3d(b1, 0 + off, off, off)) + shade3d(translate3d(b2, 2 + off, off, off)) + shade3d(translate3d(b3, 4 + off, off, off)) + # overlap intervals + c1 <- scale3d(cube3d(color=ccol, alpha=calpha), sc2, 1, 1) + c2 <- scale3d(cube3d(color=ccol, alpha=calpha), sc2, 1, 1) + c3 <- scale3d(cube3d(color=ccol, alpha=calpha), sc2, 1, 1) + shade3d(translate3d(c1, 0 + off2, 0, 0)) + shade3d(translate3d(c2, 2 + off2, 0, 0)) + shade3d(translate3d(c3, 4 + off2, 0, 0)) +} + +arma.plot_ramp_up_interval <- function(label="Ramp-up interval") { + zeta <- read.csv(file.path("build", "standing_wave", "zeta.csv")) + t <- round(mean(zeta$t)) + res <- arma.wavy_plot(zeta, t, scale=FALSE) + library("grDevices") + ax <- 7 + ay <- 7 + my <- max(zeta$y) + lines(trans3d( + c(0, 0, ax, ax, 0), + c(0, my, my, 0, 0), + c(0, 0, 0, 0, 0), + pmat=res + ), col="red", lwd=3) + text(trans3d(0, my/2, max(zeta$z)*1.5, pmat=res), label, col="red", font=2) + from <- trans3d(0, my/2, max(zeta$z)*1.4, pmat=res) + to <- trans3d(0, my/2, max(zeta$z)*0.05, pmat=res) + arrows(from$x, from$y, to$x, to$y, lwd=2, angle=10, length=0.1, col="red") +} diff --git a/phd-diss-ru.org b/phd-diss-ru.org @@ -1549,9 +1549,9 @@ cite:matsumoto1998mersenne с периодом $2^{19937}-1$. Это позво *** Алгоритм генерации взволнованной поверхности В модели АРСС значение подъема взволнованной поверхности в каждой точке зависит от предыдущих по пространству и времени значений, из-за чего в начале реализации -образуется так называемый /интервал разгона/ --- промежуток, на котором -реализация не соответствует заданной АКФ. Способ решения этой проблемы зависит -от контекста, в котором происходит моделирование. +образуется так называемый /интервал разгона/ (см. рис. [[fig:ramp-up-interval]]) --- +промежуток, на котором реализация не соответствует заданной АКФ. Способ решения +этой проблемы зависит от контекста, в котором происходит моделирование. Если реализация используется в контексте расчета остойчивости судна без учета маневрирования, то интервал никак не повлияет результаты эксперимента, поскольку @@ -1575,6 +1575,18 @@ cite:oppenheim1989discrete,svoboda2011efficient,pavel2013algorithms. Суть м накладывается на интервал разгона в начале части $N+1$, и значения в соответствующих точках складываются. +#+name: fig:ramp-up-interval +#+begin_src R :results output graphics :exports results :file build/ramp-up-interval-ru.pdf +dev.off() +cairo_pdf("build/ramp-up-interval-ru.pdf") +source(file.path("R", "common.R")) +arma.plot_ramp_up_interval(label="Интервал разгона") +#+end_src + +#+caption: Интевал разгона в начале оси $OX$ реализации. +#+RESULTS: fig:ramp-up-interval +[[file:build/ramp-up-interval-ru.pdf]] + *** Формулы нормировки для потенциалов скоростей :PROPERTIES: :CUSTOM_ID: sec:compute-delta diff --git a/phd-diss.org b/phd-diss.org @@ -1488,10 +1488,10 @@ saved to a file, which is then read before starting white noise generation. *** Wavy surface generation In ARMA model value of wavy surface elevation at a particular point depends on -previous in space and time points, as a result the so called /ramp-up interval/, -in which realisation does not correspond to specified ACF, forms in the -beginning of the realisation. There are several solutions to this problem which -depend on the simulation context. +previous in space and time points, as a result the so called /ramp-up interval/ +(see fig. [[fig:ramp-up-interval]]), in which realisation does not correspond to +specified ACF, forms in the beginning of the realisation. There are several +solutions to this problem which depend on the simulation context. If realisation is used in the context of ship stability simulation without manoeuvring, ramp-up interval will not affect results of the simulation, because @@ -1515,6 +1515,16 @@ end of each part. Then wavy surface is generated in each point of each part is superimposed on the ramp-up interval at the beginning of the part $N+1$, and values in corresponding points are added. +#+name: fig:ramp-up-interval +#+begin_src R :results output graphics :exports results :file build/ramp-up-interval.pdf +source(file.path("R", "common.R")) +arma.plot_ramp_up_interval() +#+end_src + +#+caption: Ramp-up interval at the beginning of the $OX$ axis of the realisation. +#+RESULTS: fig:ramp-up-interval +[[file:build/ramp-up-interval.pdf]] + *** Velocity potential normalisation formulae :PROPERTIES: :CUSTOM_ID: sec:compute-delta