GfsOcean
From Gerris
Examples
- Lunar tides in Cook Strait, New Zealand
- Geostrophic adjustment
- Geostrophic adjustment on a beta-plane
- Coastally-trapped waves
- Coastally-trapped waves with adaptive refinement
- Gravity waves in a realistic ocean basin
1 0 GfsOcean GfsBox GfsGEdge {} {
# Set the timestep to sthg small compared to the tidal period
Time { dtmax = 100. }
# Set the box size to 500 km
PhysicalParams { L = 500e3 }
# Use cartographic projection module
GModule map
# Use a Lambert conformal conic projection centered on 174 degrees
# longitude and -40.8 degrees latitude. Rotate the domain 40
# degrees counter-clockwise.
MapProjection { lon = 174 lat = -40.8 angle = 40 }
# Refine to six levels
Refine 6
# We want more accuracy in the projection than the default 1e-3
ApproxProjectionParams { tolerance = 1e-6 nitermax = 10 }
# Initialise tidal amplitudes
Init {} {
A_amp = AM2.gts
B_amp = BM2.gts
}
# Bathymetry
Solid bath.gts
# Refine the coastline to 10 levels
RefineSurface 10 bath.gts { twod = 1 }
# Acceleration of gravity
PhysicalParams { g = 9.81 }
# Add Coriolis source term
SourceCoriolis -1e-4
# Bottom friction parameterisation:
# Quadratic drag with friction coefficient of 4e-4.
Init { istep = 1 } {
U = U/(1. + dt*Velocity*4e-4/H)
V = V/(1. + dt*Velocity*4e-4/H)
}
# Weak exponential filtering of the velocity field
# EventFilter { istep = 1 } U 40000
# EventFilter { istep = 1 } V 40000
# After t=100000, starts on-the-fly harmonic decomposition of the pressure field...
EventHarmonic { start = 100000 istep = 10 } P A B Z EP M2F
# ... and of the velocity field
EventHarmonic { start = 100000 istep = 10 } U AU BU ZU EU M2F
EventHarmonic { start = 100000 istep = 10 } V AV BV ZV EV M2F
# After t=100000, stops the simulation if the variations of the A0
# harmonic component are less than 0.025 in 100 timesteps.
EventStop { start = 100000 istep = 100 } A0 0.025
OutputTime { istep = 1 } stderr
OutputProjectionStats { istep = 1 } stderr
# Output solution on standard output every 20 timesteps
# for on-the-fly visualisation with GfsView.
# Do not include the GTS file for the embedded surface to save bandwidth.
OutputSimulation { istep = 20 } stdout { solid = 0 }
# Output solution in file 'end.gfs' at the end of the simulation
OutputSimulation { start = end } end.gfs
# Output curves using gnuplot
EventScript { start = end } {
cat <<EOF | gnuplot
set term postscript eps lw 3 solid 20 colour
set output 'pv.eps'
set xlabel 'Time (days)'
set ylabel 'Elevation (metres) or Velocity (metres/s)'
plot 'p' u (\$3/86400.):(\$9/9.81) w l t "Elevation", \
'u' u (\$3/86400.):9 w l t "Velocity"
set output 'a0.eps'
set ylabel 'Maximum harmonic elevation (metres)'
plot [1:]'a0' u (\$3/86400.):(\$9/9.81) w l t ""
EOF
}
OutputScalarNorm { istep = 1 } p { v = P }
OutputScalarNorm { istep = 1 } u { v = Velocity }
OutputScalarNorm { istep = 10 } a0 { v = sqrt(A0*A0 + B0*B0) }
}
1 0 GfsOcean GfsBox GfsGEdge {} {
# dt = 1000 s
Time { iend = 1580 dtmax = 0.10285 }
Refine 6
# Lx = Ly = 1000 km
# H0 = 1000 m
# g = 0.01 m/s^2
PhysicalParams { g = 9.4534734306584e-4 }
AdvectionParams { scheme = none }
ApproxProjectionParams { tolerance = 1e-6 }
Init {} {
# e-folding radius = 100 km
# umax = 0.5 m/s = sqrt(200)*exp(-1/2)
U = (5.667583815e-4*200.*y*exp (-100.*(x*x + y*y)))
V = (- 5.667583815e-4*200.*x*exp (-100.*(x*x + y*y)))
P = (5.667583815e-4*exp (-100.*(x*x + y*y)))
H = 1
}
# f0 = 1.0285e-4 s-1
SourceCoriolis {} 1
OutputErrorNorm { istep = 1 } { awk '{print $3/1.0285e-4/3600./24. " " $9*1000e6*1.0285e-4*1.0285e-4/0.01;}' > e } { v = P } {
s = (5.667583815e-4*exp (-100.*(x*x + y*y)))
unbiased = 1
v = E
}
OutputSimulation { istart = 100 iend = 500 istep = 100 } stdout
EventScript { istart = 100 iend = 500 istep = 100 } { echo "Save error-$GfsIter.eps { format = EPS }"}
OutputSimulation { istart = 1500 } stdout
EventScript { istart = 1500 } { echo "Save error-$GfsIter.eps { format = EPS }"}
EventScript { start = end } {
cat <<EOF | gnuplot
set term postscript eps lw 3 color solid 20
set output 'geo_error.eps'
set xlabel 'Time (days)'
set ylabel 'Maximum error on surface height (cm)'
plot 'e.ref' u 1:(\$2*100.) t '' w l, 'e' u 1:(\$2*100.) t 'ref' w l
EOF
}
}
GfsBox {
front = Boundary
}
1 0 GfsOcean GfsBox GfsGEdge {} {
# dt = 1000 s
Time { iend = 1580 dtmax = 0.10285 }
Refine 6
# Lx = Ly = 1000 km
# H0 = 1000 m
# g = 0.01 m/s^2
PhysicalParams { g = 9.4534734306584e-4 }
ApproxProjectionParams { tolerance = 1e-6 }
Init {} {
# e-folding radius = 100 km
# umax = 0.5 m/s = sqrt(200)*exp(-1/2)
U = (5.667583815e-4*200.*y*exp (-100.*(x*x + y*y)))
V = (- 5.667583815e-4*200.*x*exp (-100.*(x*x + y*y)))
P = (5.667583815e-4*exp (-100.*(x*x + y*y)))
H = 1
}
# f0 = 1.0285e-4 s-1
# beta = 1.607e-11 m-1s-1
SourceCoriolis {} (1. + 0.156246961595*(y + 0.5))
OutputScalarSum { istep = 150 } { awk '{print $3/1.0285e-4/3600./24. " " $5/6.34646e-06}' > energy } { v = (Velocity2 + P*P/9.4534734306584e-4) }
}
1 0 GfsOcean GfsBox GfsGEdge {} {
Time { end = 37.80501984 dtmax = 0.1 }
PhysicalParams { g = 5.87060327757e-3 }
Global {
#include <gsl/gsl_sf_bessel.h>
@link -lgsl -lgslcblas
#define Ik(k,r,D) (gsl_sf_bessel_Inu ((k) - 1., (r)/(D))/(D)\
- (k)/(r)*gsl_sf_bessel_Inu ((k), (r)/(D)))
static double D = 8.83906519983e-2;
static double k = 3.;
static double sigma = 0.4986;
static double a = 1./2555510.;
static double pwave (double x, double y, double angle) {
double theta = atan2 (y, x) + angle*M_PI/180.;
double r = sqrt (x*x + y*y);
return a*cos (k*theta)*gsl_sf_bessel_Inu (k, r/D);
}
static double ur (double theta, double r) {
return -a*D*D/5.87060327757e-3*sin (k*theta)*(sigma*Ik (k, r, D) -
k/r*gsl_sf_bessel_Inu (k, r/D));
}
static double vt (double theta, double r) {
return a*D*D/5.87060327757e-3*cos (k*theta)*(Ik (k, r, D) -
k*sigma/r*gsl_sf_bessel_Inu (k, r/D));
}
static double uwave (double x, double y) {
double theta = atan2 (y, x);
double r = sqrt (x*x + y*y);
return ur (theta, r)*cos (theta) - vt (theta, r)*sin (theta);
}
static double vwave (double x, double y) {
double theta = atan2 (y, x);
double r = sqrt (x*x + y*y);
return ur (theta, r)*sin (theta) + vt (theta, r)*cos (theta);
}
}
Init {} {
P = pwave(cx, cy, 0)
U = uwave(x, y)
V = vwave(x, y)
H = 1
}
Refine LEVEL
Solid (- ellipse (0, 0, 0.25, 0.25)) { scale = 1.999 }
AdvectionParams { scheme = none }
ApproxProjectionParams { tolerance = 1e-9 weighted = 0 }
SourceCoriolis {} 1.
EventFilter { istep = 1 } U 4
EventFilter { istep = 1 } V 4
EventScript { start = end } { echo -n "-30 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -30)
unbiased = 1
}
EventScript { start = end } { echo -n "-29 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -29)
unbiased = 1
}
EventScript { start = end } { echo -n "-28 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -28)
unbiased = 1
}
EventScript { start = end } { echo -n "-27 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -27)
unbiased = 1
}
EventScript { start = end } { echo -n "-26 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -26)
unbiased = 1
}
EventScript { start = end } { echo -n "-25 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -25)
unbiased = 1
}
EventScript { start = end } { echo -n "-24 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -24)
unbiased = 1
}
EventScript { start = end } { echo -n "-23 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -23)
unbiased = 1
}
EventScript { start = end } { echo -n "-22 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -22)
unbiased = 1
}
EventScript { start = end } { echo -n "-21 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -21)
unbiased = 1
}
EventScript { start = end } { echo -n "-20 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -20)
unbiased = 1
}
EventScript { start = end } { echo -n "-19 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -19)
unbiased = 1
}
EventScript { start = end } { echo -n "-18 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -18)
unbiased = 1
}
EventScript { start = end } { echo -n "-17 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -17)
unbiased = 1
}
EventScript { start = end } { echo -n "-16 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -16)
unbiased = 1
}
EventScript { start = end } { echo -n "-15 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -15)
unbiased = 1
}
EventScript { start = end } { echo -n "-14 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -14)
unbiased = 1
}
EventScript { start = end } { echo -n "-13 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -13)
unbiased = 1
}
EventScript { start = end } { echo -n "-12 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -12)
unbiased = 1
}
EventScript { start = end } { echo -n "-11 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -11)
unbiased = 1
}
EventScript { start = end } { echo -n "-10 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -10)
unbiased = 1
}
EventScript { start = end } { echo -n "-9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -9)
unbiased = 1
}
EventScript { start = end } { echo -n "-8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -8)
unbiased = 1
}
EventScript { start = end } { echo -n "-7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -7)
unbiased = 1
}
EventScript { start = end } { echo -n "-6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -6)
unbiased = 1
}
EventScript { start = end } { echo -n "-5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -5)
unbiased = 1
}
EventScript { start = end } { echo -n "-4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -4)
unbiased = 1
}
EventScript { start = end } { echo -n "-3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -3)
unbiased = 1
}
EventScript { start = end } { echo -n "-2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -2)
unbiased = 1
}
EventScript { start = end } { echo -n "-1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -1)
unbiased = 1
}
EventScript { start = end } { echo -n "0 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0)
unbiased = 1
}
EventScript { start = end } { echo -n "0.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.1)
unbiased = 1
}
EventScript { start = end } { echo -n "0.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.2)
unbiased = 1
}
EventScript { start = end } { echo -n "0.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.3)
unbiased = 1
}
EventScript { start = end } { echo -n "0.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.4)
unbiased = 1
}
EventScript { start = end } { echo -n "0.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.5)
unbiased = 1
}
EventScript { start = end } { echo -n "0.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.6)
unbiased = 1
}
EventScript { start = end } { echo -n "0.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.7)
unbiased = 1
}
EventScript { start = end } { echo -n "0.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.8)
unbiased = 1
}
EventScript { start = end } { echo -n "0.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.9)
unbiased = 1
}
EventScript { start = end } { echo -n "1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1)
unbiased = 1
}
EventScript { start = end } { echo -n "1.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.1)
unbiased = 1
}
EventScript { start = end } { echo -n "1.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.2)
unbiased = 1
}
EventScript { start = end } { echo -n "1.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.3)
unbiased = 1
}
EventScript { start = end } { echo -n "1.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.4)
unbiased = 1
}
EventScript { start = end } { echo -n "1.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.5)
unbiased = 1
}
EventScript { start = end } { echo -n "1.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.6)
unbiased = 1
}
EventScript { start = end } { echo -n "1.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.7)
unbiased = 1
}
EventScript { start = end } { echo -n "1.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.8)
unbiased = 1
}
EventScript { start = end } { echo -n "1.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.9)
unbiased = 1
}
EventScript { start = end } { echo -n "2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2)
unbiased = 1
}
EventScript { start = end } { echo -n "2.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.1)
unbiased = 1
}
EventScript { start = end } { echo -n "2.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.2)
unbiased = 1
}
EventScript { start = end } { echo -n "2.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.3)
unbiased = 1
}
EventScript { start = end } { echo -n "2.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.4)
unbiased = 1
}
EventScript { start = end } { echo -n "2.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.5)
unbiased = 1
}
EventScript { start = end } { echo -n "2.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.6)
unbiased = 1
}
EventScript { start = end } { echo -n "2.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.7)
unbiased = 1
}
EventScript { start = end } { echo -n "2.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.8)
unbiased = 1
}
EventScript { start = end } { echo -n "2.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.9)
unbiased = 1
}
EventScript { start = end } { echo -n "3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3)
unbiased = 1
}
EventScript { start = end } { echo -n "3.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.1)
unbiased = 1
}
EventScript { start = end } { echo -n "3.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.2)
unbiased = 1
}
EventScript { start = end } { echo -n "3.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.3)
unbiased = 1
}
EventScript { start = end } { echo -n "3.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.4)
unbiased = 1
}
EventScript { start = end } { echo -n "3.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.5)
unbiased = 1
}
EventScript { start = end } { echo -n "3.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.6)
unbiased = 1
}
EventScript { start = end } { echo -n "3.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.7)
unbiased = 1
}
EventScript { start = end } { echo -n "3.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.8)
unbiased = 1
}
EventScript { start = end } { echo -n "3.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.9)
unbiased = 1
}
EventScript { start = end } { echo -n "4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4)
unbiased = 1
}
EventScript { start = end } { echo -n "4.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.1)
unbiased = 1
}
EventScript { start = end } { echo -n "4.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.2)
unbiased = 1
}
EventScript { start = end } { echo -n "4.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.3)
unbiased = 1
}
EventScript { start = end } { echo -n "4.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.4)
unbiased = 1
}
EventScript { start = end } { echo -n "4.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.5)
unbiased = 1
}
EventScript { start = end } { echo -n "4.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.6)
unbiased = 1
}
EventScript { start = end } { echo -n "4.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.7)
unbiased = 1
}
EventScript { start = end } { echo -n "4.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.8)
unbiased = 1
}
EventScript { start = end } { echo -n "4.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.9)
unbiased = 1
}
EventScript { start = end } { echo -n "5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 5)
unbiased = 1
}
EventScript { start = end } { echo -n "6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 6)
unbiased = 1
}
EventScript { start = end } { echo -n "7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 7)
unbiased = 1
}
EventScript { start = end } { echo -n "8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 8)
unbiased = 1
}
EventScript { start = end } { echo -n "9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 9)
unbiased = 1
}
EventScript { start = end } { echo -n "10 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 10)
unbiased = 1
}
EventScript { start = end } { echo -n "11 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 11)
unbiased = 1
}
EventScript { start = end } { echo -n "12 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 12)
unbiased = 1
}
EventScript { start = end } { echo -n "13 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 13)
unbiased = 1
}
EventScript { start = end } { echo -n "14 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 14)
unbiased = 1
}
EventScript { start = end } { echo -n "15 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 15)
unbiased = 1
}
EventScript { start = end } { echo -n "16 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 16)
unbiased = 1
}
EventScript { start = end } { echo -n "17 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 17)
unbiased = 1
}
EventScript { start = end } { echo -n "18 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 18)
unbiased = 1
}
EventScript { start = end } { echo -n "19 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 19)
unbiased = 1
}
EventScript { start = end } { echo -n "20 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 20)
unbiased = 1
}
EventScript { start = end } { echo -n "21 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 21)
unbiased = 1
}
EventScript { start = end } { echo -n "22 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 22)
unbiased = 1
}
EventScript { start = end } { echo -n "23 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 23)
unbiased = 1
}
EventScript { start = end } { echo -n "24 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 24)
unbiased = 1
}
EventScript { start = end } { echo -n "25 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 25)
unbiased = 1
}
EventScript { start = end } { echo -n "26 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 26)
unbiased = 1
}
EventScript { start = end } { echo -n "27 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 27)
unbiased = 1
}
EventScript { start = end } { echo -n "28 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 28)
unbiased = 1
}
EventScript { start = end } { echo -n "29 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 29)
unbiased = 1
}
EventScript { start = end } { echo -n "30 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 30)
unbiased = 1
}
OutputSimulation { start = end } sim-LEVEL
}
1 0 GfsOcean GfsBox GfsGEdge {} {
Time { end = 37.80501984 dtmax = 0.1 }
PhysicalParams { g = 5.87060327757e-3 }
Global {
#include <gsl/gsl_sf_bessel.h>
@link -lgsl -lgslcblas
#define Ik(k,r,D) (gsl_sf_bessel_Inu ((k) - 1., (r)/(D))/(D)\
- (k)/(r)*gsl_sf_bessel_Inu ((k), (r)/(D)))
static double D = 8.83906519983e-2;
static double k = 3.;
static double sigma = 0.4986;
static double a = 1./2555510.;
static double pwave (double x, double y, double angle) {
double theta = atan2 (y, x) + angle*M_PI/180.;
double r = sqrt (x*x + y*y);
return a*cos (k*theta)*gsl_sf_bessel_Inu (k, r/D);
}
static double ur (double theta, double r) {
return -a*D*D/5.87060327757e-3*sin (k*theta)*(sigma*Ik (k, r, D) -
k/r*gsl_sf_bessel_Inu (k, r/D));
}
static double vt (double theta, double r) {
return a*D*D/5.87060327757e-3*cos (k*theta)*(Ik (k, r, D) -
k*sigma/r*gsl_sf_bessel_Inu (k, r/D));
}
static double uwave (double x, double y) {
double theta = atan2 (y, x);
double r = sqrt (x*x + y*y);
return ur (theta, r)*cos (theta) - vt (theta, r)*sin (theta);
}
static double vwave (double x, double y) {
double theta = atan2 (y, x);
double r = sqrt (x*x + y*y);
return ur (theta, r)*sin (theta) + vt (theta, r)*cos (theta);
}
}
Init {} {
P = pwave(cx, cy, 0)
U = uwave(x, y)
V = vwave(x, y)
H = 1
}
Refine LEVEL
AdaptVorticity { istep = 1 } { cmax = 5e-2 maxlevel = LEVEL }
Solid (- ellipse (0, 0, 0.25, 0.25)) { scale = 1.999 }
AdvectionParams { scheme = none }
ApproxProjectionParams { tolerance = 1e-9 weighted = 0 }
SourceCoriolis {} 1.
EventFilter { istep = 1 } U 4
EventFilter { istep = 1 } V 4
EventScript { start = end } { echo -n "-30 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -30)
unbiased = 1
}
EventScript { start = end } { echo -n "-29 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -29)
unbiased = 1
}
EventScript { start = end } { echo -n "-28 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -28)
unbiased = 1
}
EventScript { start = end } { echo -n "-27 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -27)
unbiased = 1
}
EventScript { start = end } { echo -n "-26 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -26)
unbiased = 1
}
EventScript { start = end } { echo -n "-25 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -25)
unbiased = 1
}
EventScript { start = end } { echo -n "-24 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -24)
unbiased = 1
}
EventScript { start = end } { echo -n "-23 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -23)
unbiased = 1
}
EventScript { start = end } { echo -n "-22 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -22)
unbiased = 1
}
EventScript { start = end } { echo -n "-21 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -21)
unbiased = 1
}
EventScript { start = end } { echo -n "-20 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -20)
unbiased = 1
}
EventScript { start = end } { echo -n "-19 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -19)
unbiased = 1
}
EventScript { start = end } { echo -n "-18 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -18)
unbiased = 1
}
EventScript { start = end } { echo -n "-17 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -17)
unbiased = 1
}
EventScript { start = end } { echo -n "-16 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -16)
unbiased = 1
}
EventScript { start = end } { echo -n "-15 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -15)
unbiased = 1
}
EventScript { start = end } { echo -n "-14 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -14)
unbiased = 1
}
EventScript { start = end } { echo -n "-13 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -13)
unbiased = 1
}
EventScript { start = end } { echo -n "-12 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -12)
unbiased = 1
}
EventScript { start = end } { echo -n "-11 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -11)
unbiased = 1
}
EventScript { start = end } { echo -n "-10 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -10)
unbiased = 1
}
EventScript { start = end } { echo -n "-9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -9)
unbiased = 1
}
EventScript { start = end } { echo -n "-8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -8)
unbiased = 1
}
EventScript { start = end } { echo -n "-7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -7)
unbiased = 1
}
EventScript { start = end } { echo -n "-6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -6)
unbiased = 1
}
EventScript { start = end } { echo -n "-5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -5)
unbiased = 1
}
EventScript { start = end } { echo -n "-4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -4)
unbiased = 1
}
EventScript { start = end } { echo -n "-3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -3)
unbiased = 1
}
EventScript { start = end } { echo -n "-2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -2)
unbiased = 1
}
EventScript { start = end } { echo -n "-1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, -1)
unbiased = 1
}
EventScript { start = end } { echo -n "0 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0)
unbiased = 1
}
EventScript { start = end } { echo -n "0.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.1)
unbiased = 1
}
EventScript { start = end } { echo -n "0.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.2)
unbiased = 1
}
EventScript { start = end } { echo -n "0.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.3)
unbiased = 1
}
EventScript { start = end } { echo -n "0.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.4)
unbiased = 1
}
EventScript { start = end } { echo -n "0.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.5)
unbiased = 1
}
EventScript { start = end } { echo -n "0.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.6)
unbiased = 1
}
EventScript { start = end } { echo -n "0.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.7)
unbiased = 1
}
EventScript { start = end } { echo -n "0.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.8)
unbiased = 1
}
EventScript { start = end } { echo -n "0.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 0.9)
unbiased = 1
}
EventScript { start = end } { echo -n "1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1)
unbiased = 1
}
EventScript { start = end } { echo -n "1.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.1)
unbiased = 1
}
EventScript { start = end } { echo -n "1.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.2)
unbiased = 1
}
EventScript { start = end } { echo -n "1.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.3)
unbiased = 1
}
EventScript { start = end } { echo -n "1.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.4)
unbiased = 1
}
EventScript { start = end } { echo -n "1.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.5)
unbiased = 1
}
EventScript { start = end } { echo -n "1.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.6)
unbiased = 1
}
EventScript { start = end } { echo -n "1.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.7)
unbiased = 1
}
EventScript { start = end } { echo -n "1.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.8)
unbiased = 1
}
EventScript { start = end } { echo -n "1.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 1.9)
unbiased = 1
}
EventScript { start = end } { echo -n "2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2)
unbiased = 1
}
EventScript { start = end } { echo -n "2.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.1)
unbiased = 1
}
EventScript { start = end } { echo -n "2.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.2)
unbiased = 1
}
EventScript { start = end } { echo -n "2.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.3)
unbiased = 1
}
EventScript { start = end } { echo -n "2.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.4)
unbiased = 1
}
EventScript { start = end } { echo -n "2.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.5)
unbiased = 1
}
EventScript { start = end } { echo -n "2.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.6)
unbiased = 1
}
EventScript { start = end } { echo -n "2.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.7)
unbiased = 1
}
EventScript { start = end } { echo -n "2.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.8)
unbiased = 1
}
EventScript { start = end } { echo -n "2.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 2.9)
unbiased = 1
}
EventScript { start = end } { echo -n "3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3)
unbiased = 1
}
EventScript { start = end } { echo -n "3.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.1)
unbiased = 1
}
EventScript { start = end } { echo -n "3.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.2)
unbiased = 1
}
EventScript { start = end } { echo -n "3.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.3)
unbiased = 1
}
EventScript { start = end } { echo -n "3.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.4)
unbiased = 1
}
EventScript { start = end } { echo -n "3.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.5)
unbiased = 1
}
EventScript { start = end } { echo -n "3.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.6)
unbiased = 1
}
EventScript { start = end } { echo -n "3.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.7)
unbiased = 1
}
EventScript { start = end } { echo -n "3.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.8)
unbiased = 1
}
EventScript { start = end } { echo -n "3.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 3.9)
unbiased = 1
}
EventScript { start = end } { echo -n "4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4)
unbiased = 1
}
EventScript { start = end } { echo -n "4.1 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.1)
unbiased = 1
}
EventScript { start = end } { echo -n "4.2 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.2)
unbiased = 1
}
EventScript { start = end } { echo -n "4.3 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.3)
unbiased = 1
}
EventScript { start = end } { echo -n "4.4 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.4)
unbiased = 1
}
EventScript { start = end } { echo -n "4.5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.5)
unbiased = 1
}
EventScript { start = end } { echo -n "4.6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.6)
unbiased = 1
}
EventScript { start = end } { echo -n "4.7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.7)
unbiased = 1
}
EventScript { start = end } { echo -n "4.8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.8)
unbiased = 1
}
EventScript { start = end } { echo -n "4.9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 4.9)
unbiased = 1
}
EventScript { start = end } { echo -n "5 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 5)
unbiased = 1
}
EventScript { start = end } { echo -n "6 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 6)
unbiased = 1
}
EventScript { start = end } { echo -n "7 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 7)
unbiased = 1
}
EventScript { start = end } { echo -n "8 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 8)
unbiased = 1
}
EventScript { start = end } { echo -n "9 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 9)
unbiased = 1
}
EventScript { start = end } { echo -n "10 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 10)
unbiased = 1
}
EventScript { start = end } { echo -n "11 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 11)
unbiased = 1
}
EventScript { start = end } { echo -n "12 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 12)
unbiased = 1
}
EventScript { start = end } { echo -n "13 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 13)
unbiased = 1
}
EventScript { start = end } { echo -n "14 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 14)
unbiased = 1
}
EventScript { start = end } { echo -n "15 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 15)
unbiased = 1
}
EventScript { start = end } { echo -n "16 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 16)
unbiased = 1
}
EventScript { start = end } { echo -n "17 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 17)
unbiased = 1
}
EventScript { start = end } { echo -n "18 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 18)
unbiased = 1
}
EventScript { start = end } { echo -n "19 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 19)
unbiased = 1
}
EventScript { start = end } { echo -n "20 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 20)
unbiased = 1
}
EventScript { start = end } { echo -n "21 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 21)
unbiased = 1
}
EventScript { start = end } { echo -n "22 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 22)
unbiased = 1
}
EventScript { start = end } { echo -n "23 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 23)
unbiased = 1
}
EventScript { start = end } { echo -n "24 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 24)
unbiased = 1
}
EventScript { start = end } { echo -n "25 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 25)
unbiased = 1
}
EventScript { start = end } { echo -n "26 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 26)
unbiased = 1
}
EventScript { start = end } { echo -n "27 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 27)
unbiased = 1
}
EventScript { start = end } { echo -n "28 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 28)
unbiased = 1
}
EventScript { start = end } { echo -n "29 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 29)
unbiased = 1
}
EventScript { start = end } { echo -n "30 " }
OutputCorrelation { start = end } stdout { v = P } {
s = pwave(cx, cy, 30)
unbiased = 1
}
OutputSimulation { start = end } sim-LEVEL
}
1 0 GfsOcean GfsBox GfsGEdge {} {
# Set the timestep to sthg small compared to the tidal period
Time { dtmax = 1e-2 end = 28.5 }
# Refine to six levels
Refine 6
# We want more accuracy in the projection than the default 1e-3
ApproxProjectionParams { tolerance = 1e-6 nitermax = 10 }
AdvectionParams { scheme = none }
Init {} { P = 1e-2*x }
# Bathymetry
Solid bath.gts
# Refine the coastline to 7 levels
RefineSurface 7 bath.gts { twod = 1 }
# Non-dimensional gravity
PhysicalParams { g = 19.62 }
OutputPPM { start = 2 } { convert ppm:- p.eps } { v = P min = -5e-3 max = 5e-3 }
OutputScalarSum { istep = 10 } k { v = Velocity2 }
EventScript { start = end } {
gnuplot <<EOF
set term postscript eps color lw 3 solid 20
set output 'k.eps'
set xlabel 'Time'
set ylabel 'Kinetic energy'
set grid
plot 'k' u 3:5 w l t ''
EOF
if awk '{if ($5 > 4e-7) exit (1);}' < k ; then
return 0;
else
return $GFS_STOP;
fi
}
}

