Sylt data set {OceanView} | R Documentation |
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.
data(Sylttran) data(Syltsurf) data(Sylt3D)
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.
Karline Soetaert <karline.soetaert@nioz.nl>
Hans Burchard and Karsten Bolding, 2002. GETM, A General Estuarine Transport Model, Scientific Documentation. EUR 20253 EN.
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
.
# 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)