Last data update: 2014.03.03
R: Hydrodynamic model output (getm) of Sylt-Romo Bight
Sylt data set R Documentation
Hydrodynamic model output (getm) of Sylt-Romo Bight
Description
3D Sylt-tidal simulation model output generated by the GETM model version 2.2.2.
The Sylt-Romo bight is a Wadden Sea embayment in the North Sea, between
the Danish island Romo and the German island Sylt at about 55 dg N and 8 dg E,
an area of approximately 300 km^2.
Sylttran
contains (x, sigma, time) data from
an E-W transect.
Syltsurf
contains 2-D surface data, at 5 time intervals.
Sylt3D
contains 3-D (x, y, z) data, at 2 time intervals.
Usage
data(Sylttran)
data(Syltsurf)
data(Sylt3D)
Format
Sylttran
is a data.frame
with (x, sigma, time) data from an E-W transect
(8.1 - 17.9 km) taken at km 18.5. There are 50 x-values, 21 sigma levels and 21 model output times.
It contains:
x, y
, the positions in km, of length 50 and 1 respectively.
time
, the model output time in hours, of length 21.
visc
, the viscosity (getm variable num
), (50 x 21 x 21), m2/s.
tke
, the turbulent kinetic energy (getm variable tke
), (50 x 21 x 21), m2/s2.
u, v
, the zonal and meridional velocity, (50 x 21 x 21), m/s.
sigma
, the depth of the sigma coordinates (50 x 21 x 21), metres.
Syltsurf
contains 2-D surface data of the entire model domain,
at 5 time intervals (hour 24.7 to 37.1).
It is a data.frame
with:
x, y
, the positions in km, of length 135 and 160 respectively.
time
, the output time in hours, of length 5.
u, v
, the vertically averaged zonal and meridional velocity (135 x 160 x 5), m/s.
elev
, tidal elevation (135 x 160 x 5), metres.
depth
, the bathymetry (135 x 160), metres.
Sylt3D
contains 3-D (x, y, z) data, at 2 time intervals (hour 0 and 9.94).
The box extends from x inbetween [12.1, 14.9] and from y inbetween [12.7 - 16.3];
there are 21 sigma levels.
It is a data.frame
with:
x, y
, the positions in km, of length 15 and 19 respectively.
time
, the output time in hours, of length 2.
visc
, the viscosity (getm model variable num), (55 x 19 x 21 x 2), m2/s.
sigma
, the sigma depth levels, (55 x 19 x 21 x 2), m2/s. metres.
depth
, the bathymetry (15 x 19), metres.
Author(s)
Karline Soetaert <karline.soetaert@nioz.nl>
References
Hans Burchard and Karsten Bolding, 2002. GETM, A General Estuarine Transport
Model, Scientific Documentation. EUR 20253 EN.
http://www.getm.eu
See Also
image2D for plotting images, package plot3D
.
ImageOcean for an image of the ocean's bathymetry, package plot3D
.
scatter2D for making scatterplots, package plot3D
.
Oxsat for a 3-D data set, package plot3D
.
Examples
# save plotting parameters
pm <- par("mfrow")
mar <- par("mar")
## =============================================================================
## Show position of transect and 3D box in bathymetry
## =============================================================================
par(mfrow = c(2, 2))
par(mar = c(4, 4, 4, 4))
x <- Syltsurf$x ; y <- Syltsurf$y ; depth <- Syltsurf$depth
image2D(z = depth, x = x, y = y, clab = c("depth", "m"))
# position of transect
with (Sylttran, points (x, rep(y, length(x)),
pch = 16, col = "grey"))
# position of 3-D area
with (Sylt3D, rect(x[1], y[1], x[length(x)], y[length(y)], lwd = 3))
image2D(z = depth, x = x, y = y, clab = c("depth", "m"), log = "z")
# sigma coordinates of the transect (at time = 10)
matplot(Sylttran$x, Sylttran$sigma[,,10], type = "l",
main = "sigma", ylim = c(25, -2), col = "black", lty = 1)
# perspective view - reduce resolution for speed
ix <- seq(1, length(x), by = 3)
iy <- seq(1, length(y), by = 3)
par(mar = c(1, 1, 1, 2))
persp3D(z = -depth[ix, iy], x = x[ix], y = y[iy],
scale = FALSE, expand = 0.2, ticktype = "detailed",
col = "grey", shade = 0.6, bty = "f",
plot = FALSE)
# add 3-D region; small amount added to z so that it is visible in rgl
persp3D(z = -Sylt3D$depth + 1e-3, x = Sylt3D$x, y = Sylt3D$y,
col = alpha.col("red", alpha = 0.4), add = TRUE,
plot = FALSE)
# transect
with (Sylttran, points3D(x = x, y = rep(y, length(x)),
z = rep(0, length(x)), pch = 16, add = TRUE, colkey = FALSE))
## Not run:
plotrgl()
plotrgl(lighting = TRUE, new = FALSE, smooth = TRUE)
## End(Not run)
## =============================================================================
## Data Syltsurf: Surface elevation
## =============================================================================
par(mfrow = c(2, 2), mar = c(0, 0, 1, 0))
# reduce resolution for speed
ix <- seq(1, length(x), by = 3)
iy <- seq(1, length(y), by = 3)
clim <- range(Syltsurf$elev, na.rm = TRUE)
for (i in 1:3)
persp3D(z = -depth[ix, iy], colvar = Syltsurf$elev[ix,iy,i],
x = x[ix], y = y[iy], clim = clim, inttype = 2, d = 2,
scale = FALSE, expand = 0.1, colkey = FALSE, shade = 0.5,
main = paste(format(Syltsurf$time[i], digits = 3), " hr"))
par(mar = c(3, 3, 3, 3))
colkey(clim = clim, clab = c("elevation", "m"))
# can also be done using shaded image2D plots, faster
par(mfrow = c(2, 2), mar = c(3, 3, 3, 3))
clim <- range(Syltsurf$elev, na.rm = TRUE)
for (i in 1:3)
image2D(z = -depth[ix, iy], colvar = Syltsurf$elev[ix,iy,i],
x = x[ix], y = y[iy], clim = clim,
colkey = FALSE, shade = 0.3, resfac = 2,
main = paste(format(Syltsurf$time[i], digits = 3), " hr"))
colkey(clim = clim, clab = c("elevation", "m"))
## =============================================================================
## Data Syltsurf: Surface currents
## =============================================================================
par(mfrow = c(1, 1))
Speed <- sqrt(Syltsurf$u[,,2]^2 + Syltsurf$v[,,2]^2)
with (Syltsurf,
quiver2D(x = x, y = y, u = u[,,2], v = v[,,2], col = gg.col(100),
xlim = c(5, 20), ylim = c(10, 25), by = 3,
colvar = Speed, clab = c("speed", "m/s"),
main = paste(formatC(time[1]), " hr"), scale = 1.5,
image = list(z = depth, x = x, y = y, col = "white", #background
NAcol = "darkblue"),
contour = list(z = depth, x = x, y = y, col = "black",#depth
lwd = 2)
)
)
## =============================================================================
## Data Sylttran: plot a transect
## =============================================================================
par(mfrow = c(1, 1), mar = c(4, 4, 4, 2))
D <- seq(-1, 20, by = 0.02)
visc <- mapsigma (Sylttran$visc [ , ,1], x = Sylttran$x,
sigma = Sylttran$sigma[ , ,1], depth = D, resfac = 2)
image2D(visc$var, x = visc$x, y = -visc$depth, ylim = c(-20, 1),
main = "eddy viscosity", ylab = "m", xlab = "hour",
clab = "m2/s")
# show position of timeseries in next example
abline(v = visc$x[45])
## =============================================================================
## Data Sylttran: plot a time-series
## =============================================================================
par(mfrow = c(1, 1), mar = c(5, 4, 4, 3))
ix <- 45
visct <- Sylttran$visc [ix, ,]
sig <- Sylttran$sigma [ix, ,]
# sigma coordinates are first dimension (signr)
visc <- mapsigma(visct, sigma = sig, signr = 1,
x = Sylttran$time, numdepth = 100, resfac = 3)
D <- -visc$depth
image2D(t(visc$var), x = visc$x, y = D, NAcol = "black",
ylim = range(D), main = "eddy viscosity",
ylab = "m", xlab = "hour", clab = "m2/s")
## =============================================================================
## Data Sylt3D: increase resolution and map from sigma to depth
## =============================================================================
# select a time series point
it <- 1
par(mfrow = c(1, 1))
sigma <- Sylt3D$sigma[,,,it]
visc <- Sylt3D$visc [,,,it]
(D <- dim(sigma)) # x, y, z
# remap the data from sigma coordinates to depth coordinates
# depth from max in first box to max in last box
depth <- seq(max(sigma[,,D[3]], na.rm = TRUE),
max(sigma[,,1 ], na.rm = TRUE), length.out = 20)
# Step-bystep mapping, increasing the resolution
z <- 1:21
x <- Sylt3D$x
y <- Sylt3D$y
xto <- seq(min(x), max(x), length.out = 30)
yto <- seq(min(y), max(y), length.out = 30)
# higher resolution
Sigma <- remap(sigma, x, y, z, xto, yto, zto = z)$var
Visc <- remap(visc, x, y, z, xto, yto, zto = z)$var
# viscosity in sigma coordinates
visc_sig <- mapsigma(Visc, sigma = Sigma, depth = depth)
## =============================================================================
## The 3-D data set - plotted as slices
## =============================================================================
slice3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var,
scale = FALSE, expand = 0.1, NAcol = "transparent",
ys = yto[seq(1, length(yto), length.out = 10)], plot = FALSE,
colkey = list(side = 1))
persp3D(x = x, y = y, z = -Sylt3D$depth, add = TRUE,
border = "black", facets = NA, colkey = FALSE)
# visualise it in rgl window
plotrgl()
## the same, as a movie
persp3Drgl(x = x, y = y, z = -Sylt3D$depth, smooth = TRUE,
col = "grey", lighting = TRUE)
movieslice3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var,
add = TRUE, ys = yto)
# in order to wait inbetween slice drawings until a key is hit:
## Not run:
persp3Drgl(x = x, y = y, z = -Sylt3D$depth, smooth = TRUE,
col = "grey", lighting = TRUE)
movieslice3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var, add = TRUE,
ask = TRUE, ys = yto)
## End(Not run)
## =============================================================================
## The 3-D data set - plotted as isosurfaces
## =============================================================================
isosurf3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var,
level = c(0.005, 0.01, 0.015), col = c("red", "blue", "green"),
scale = FALSE, expand = 0.1, ticktype = "detailed",
main = "viscosity", clab = "m2/s",
plot = FALSE, colkey = list(side = 1))
persp3D(x = x, y = y, z = -Sylt3D$depth, border = "black",
col = "white", add = TRUE, plot = FALSE)
## Not run:
plotdev(alpha = 0.3, phi = 30) # this is slow
## End(Not run)
plotrgl(alpha = 0.3)
# reset plotting parameters
par(mar = mar)
par(mfrow = pm)
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(OceanView)
Loading required package: plot3D
Loading required package: plot3Drgl
Loading required package: rgl
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/OceanView/Sylt.Rd_%03d_medium.png", width=480, height=480)
> ### Name: Sylt data set
> ### Title: Hydrodynamic model output (getm) of Sylt-Romo Bight
> ### Aliases: Syltsurf Sylttran Sylt3D
> ### Keywords: datasets
>
> ### ** Examples
>
> # save plotting parameters
> pm <- par("mfrow")
> mar <- par("mar")
>
> ## =============================================================================
> ## Show position of transect and 3D box in bathymetry
> ## =============================================================================
>
> par(mfrow = c(2, 2))
> par(mar = c(4, 4, 4, 4))
>
> x <- Syltsurf$x ; y <- Syltsurf$y ; depth <- Syltsurf$depth
> image2D(z = depth, x = x, y = y, clab = c("depth", "m"))
>
> # position of transect
> with (Sylttran, points (x, rep(y, length(x)),
+ pch = 16, col = "grey"))
> # position of 3-D area
> with (Sylt3D, rect(x[1], y[1], x[length(x)], y[length(y)], lwd = 3))
>
> image2D(z = depth, x = x, y = y, clab = c("depth", "m"), log = "z")
Warning message:
In log(z) : NaNs produced
>
> # sigma coordinates of the transect (at time = 10)
> matplot(Sylttran$x, Sylttran$sigma[,,10], type = "l",
+ main = "sigma", ylim = c(25, -2), col = "black", lty = 1)
>
> # perspective view - reduce resolution for speed
> ix <- seq(1, length(x), by = 3)
> iy <- seq(1, length(y), by = 3)
>
> par(mar = c(1, 1, 1, 2))
> persp3D(z = -depth[ix, iy], x = x[ix], y = y[iy],
+ scale = FALSE, expand = 0.2, ticktype = "detailed",
+ col = "grey", shade = 0.6, bty = "f",
+ plot = FALSE)
>
> # add 3-D region; small amount added to z so that it is visible in rgl
> persp3D(z = -Sylt3D$depth + 1e-3, x = Sylt3D$x, y = Sylt3D$y,
+ col = alpha.col("red", alpha = 0.4), add = TRUE,
+ plot = FALSE)
>
> # transect
> with (Sylttran, points3D(x = x, y = rep(y, length(x)),
+ z = rep(0, length(x)), pch = 16, add = TRUE, colkey = FALSE))
>
> ## Not run:
> ##D plotrgl()
> ##D plotrgl(lighting = TRUE, new = FALSE, smooth = TRUE)
> ## End(Not run)
>
> ## =============================================================================
> ## Data Syltsurf: Surface elevation
> ## =============================================================================
>
> par(mfrow = c(2, 2), mar = c(0, 0, 1, 0))
> # reduce resolution for speed
> ix <- seq(1, length(x), by = 3)
> iy <- seq(1, length(y), by = 3)
>
> clim <- range(Syltsurf$elev, na.rm = TRUE)
> for (i in 1:3)
+ persp3D(z = -depth[ix, iy], colvar = Syltsurf$elev[ix,iy,i],
+ x = x[ix], y = y[iy], clim = clim, inttype = 2, d = 2,
+ scale = FALSE, expand = 0.1, colkey = FALSE, shade = 0.5,
+ main = paste(format(Syltsurf$time[i], digits = 3), " hr"))
> par(mar = c(3, 3, 3, 3))
> colkey(clim = clim, clab = c("elevation", "m"))
>
> # can also be done using shaded image2D plots, faster
> par(mfrow = c(2, 2), mar = c(3, 3, 3, 3))
> clim <- range(Syltsurf$elev, na.rm = TRUE)
> for (i in 1:3)
+ image2D(z = -depth[ix, iy], colvar = Syltsurf$elev[ix,iy,i],
+ x = x[ix], y = y[iy], clim = clim,
+ colkey = FALSE, shade = 0.3, resfac = 2,
+ main = paste(format(Syltsurf$time[i], digits = 3), " hr"))
> colkey(clim = clim, clab = c("elevation", "m"))
>
> ## =============================================================================
> ## Data Syltsurf: Surface currents
> ## =============================================================================
>
> par(mfrow = c(1, 1))
> Speed <- sqrt(Syltsurf$u[,,2]^2 + Syltsurf$v[,,2]^2)
>
> with (Syltsurf,
+ quiver2D(x = x, y = y, u = u[,,2], v = v[,,2], col = gg.col(100),
+ xlim = c(5, 20), ylim = c(10, 25), by = 3,
+ colvar = Speed, clab = c("speed", "m/s"),
+ main = paste(formatC(time[1]), " hr"), scale = 1.5,
+ image = list(z = depth, x = x, y = y, col = "white", #background
+ NAcol = "darkblue"),
+ contour = list(z = depth, x = x, y = y, col = "black",#depth
+ lwd = 2)
+ )
+ )
>
> ## =============================================================================
> ## Data Sylttran: plot a transect
> ## =============================================================================
>
> par(mfrow = c(1, 1), mar = c(4, 4, 4, 2))
> D <- seq(-1, 20, by = 0.02)
>
> visc <- mapsigma (Sylttran$visc [ , ,1], x = Sylttran$x,
+ sigma = Sylttran$sigma[ , ,1], depth = D, resfac = 2)
>
> image2D(visc$var, x = visc$x, y = -visc$depth, ylim = c(-20, 1),
+ main = "eddy viscosity", ylab = "m", xlab = "hour",
+ clab = "m2/s")
>
> # show position of timeseries in next example
> abline(v = visc$x[45])
>
> ## =============================================================================
> ## Data Sylttran: plot a time-series
> ## =============================================================================
>
> par(mfrow = c(1, 1), mar = c(5, 4, 4, 3))
> ix <- 45
>
> visct <- Sylttran$visc [ix, ,]
> sig <- Sylttran$sigma [ix, ,]
>
> # sigma coordinates are first dimension (signr)
> visc <- mapsigma(visct, sigma = sig, signr = 1,
+ x = Sylttran$time, numdepth = 100, resfac = 3)
> D <- -visc$depth
>
> image2D(t(visc$var), x = visc$x, y = D, NAcol = "black",
+ ylim = range(D), main = "eddy viscosity",
+ ylab = "m", xlab = "hour", clab = "m2/s")
>
> ## =============================================================================
> ## Data Sylt3D: increase resolution and map from sigma to depth
> ## =============================================================================
>
> # select a time series point
> it <- 1
> par(mfrow = c(1, 1))
> sigma <- Sylt3D$sigma[,,,it]
> visc <- Sylt3D$visc [,,,it]
> (D <- dim(sigma)) # x, y, z
[1] 15 19 21
>
> # remap the data from sigma coordinates to depth coordinates
> # depth from max in first box to max in last box
> depth <- seq(max(sigma[,,D[3]], na.rm = TRUE),
+ max(sigma[,,1 ], na.rm = TRUE), length.out = 20)
>
> # Step-bystep mapping, increasing the resolution
> z <- 1:21
> x <- Sylt3D$x
> y <- Sylt3D$y
>
> xto <- seq(min(x), max(x), length.out = 30)
> yto <- seq(min(y), max(y), length.out = 30)
>
> # higher resolution
> Sigma <- remap(sigma, x, y, z, xto, yto, zto = z)$var
> Visc <- remap(visc, x, y, z, xto, yto, zto = z)$var
>
> # viscosity in sigma coordinates
> visc_sig <- mapsigma(Visc, sigma = Sigma, depth = depth)
>
> ## =============================================================================
> ## The 3-D data set - plotted as slices
> ## =============================================================================
>
> slice3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var,
+ scale = FALSE, expand = 0.1, NAcol = "transparent",
+ ys = yto[seq(1, length(yto), length.out = 10)], plot = FALSE,
+ colkey = list(side = 1))
> persp3D(x = x, y = y, z = -Sylt3D$depth, add = TRUE,
+ border = "black", facets = NA, colkey = FALSE)
>
> # visualise it in rgl window
> plotrgl()
>
> ## the same, as a movie
>
> persp3Drgl(x = x, y = y, z = -Sylt3D$depth, smooth = TRUE,
+ col = "grey", lighting = TRUE)
>
> movieslice3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var,
+ add = TRUE, ys = yto)
>
> # in order to wait inbetween slice drawings until a key is hit:
> ## Not run:
> ##D persp3Drgl(x = x, y = y, z = -Sylt3D$depth, smooth = TRUE,
> ##D col = "grey", lighting = TRUE)
> ##D movieslice3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var, add = TRUE,
> ##D ask = TRUE, ys = yto)
> ## End(Not run)
>
> ## =============================================================================
> ## The 3-D data set - plotted as isosurfaces
> ## =============================================================================
>
> isosurf3D(xto, yto, -visc_sig$depth, colvar = visc_sig$var,
+ level = c(0.005, 0.01, 0.015), col = c("red", "blue", "green"),
+ scale = FALSE, expand = 0.1, ticktype = "detailed",
+ main = "viscosity", clab = "m2/s",
+ plot = FALSE, colkey = list(side = 1))
> persp3D(x = x, y = y, z = -Sylt3D$depth, border = "black",
+ col = "white", add = TRUE, plot = FALSE)
>
>
> ## Not run:
> ##D plotdev(alpha = 0.3, phi = 30) # this is slow
> ## End(Not run)
> plotrgl(alpha = 0.3)
>
> # reset plotting parameters
> par(mar = mar)
> par(mfrow = pm)
>
>
>
>
>
> dev.off()
null device
1
>