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:
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