Dispersion

From Gerris

(Difference between revisions)
Jump to: navigation, search
Revision as of 00:21, 18 June 2012
Popinet (Talk | contribs)

← Previous diff
Current revision
Popinet (Talk | contribs)

Line 6: Line 6:
| [[Image:hump-cgrid.png|thumb|left|300px|GfsAtmosphere, C-grid, BCG scheme, linearised]] | [[Image:hump-cgrid.png|thumb|left|300px|GfsAtmosphere, C-grid, BCG scheme, linearised]]
| [[Image:hump-agrid.png|thumb|left|300px|GfsAtmosphere, A-grid, BCG scheme, linearised]] | [[Image:hump-agrid.png|thumb|left|300px|GfsAtmosphere, A-grid, BCG scheme, linearised]]
 +|-
 +| [[Image:hump-ocean.png|thumb|left|300px|GfsOcean, implicit but using the same timestep]]
 +| [[Image:hump-ocean-implicit.png|thumb|left|300px|GfsOcean, implicit with timestep x 10]]
|- |-
| [[Image:hump-minmod.png|thumb|left|300px|GfsRiver, minmod limiter, non-linear]] | [[Image:hump-minmod.png|thumb|left|300px|GfsRiver, minmod limiter, non-linear]]
Line 15: Line 18:
| [[Image:hump-nolimiter-9.png|thumb|left|300px|GfsRiver, no limiter, non-linear, maxlevel = 9]] | [[Image:hump-nolimiter-9.png|thumb|left|300px|GfsRiver, no limiter, non-linear, maxlevel = 9]]
|} |}
- 
=== Parameter files === === Parameter files ===
Line 85: Line 87:
GModule gfsview GModule gfsview
OutputView { step = 2e-2 } { ppm2mpeg > hump.mpg } hump.gfv OutputView { step = 2e-2 } { ppm2mpeg > hump.mpg } hump.gfv
 +}
 +GfsBox {}
 +GfsBox {}
 +1 2 left
 +1 2 right
 +</source>
 +
 +and for GfsOcean
 +
 +<source lang=gfs>
 +2 2 GfsOcean GfsBox GfsGEdge { x = 0.5 y = 0.5 } {
 + Refine 8
 + Init {} {
 + # Parabolic hump
 + H = 1. - 0.8*exp(-5.*(x - 0.9)*(x - 0.9) - 50.*(y - 0.5)*(y - 0.5))
 + # Initial free surface and perturbation
 + P = 0.01*exp(-2000.*(x - 0.1)*(x - 0.1))
 + }
 + PhysicalParams { g = 1 }
 + Time { end = 1.8 dtmax = 2e-3 }
 + OutputTime { istep = 1 } stderr
 + OutputProjectionStats { istep = 1 } stderr
 + OutputSimulation { istep = 10 } stdout
 + OutputSimulation { start = 0.6 step = 0.3 } sim-%g.gfs
} }
GfsBox {} GfsBox {}

Current revision

This is a series of tests of dispersion properties using a variation of the hump example.

Final free surface (t = 1.8)
GfsAtmosphere, C-grid, BCG scheme, linearised
Enlarge
GfsAtmosphere, C-grid, BCG scheme, linearised
GfsAtmosphere, A-grid, BCG scheme, linearised
Enlarge
GfsAtmosphere, A-grid, BCG scheme, linearised
GfsOcean, implicit but using the same timestep
Enlarge
GfsOcean, implicit but using the same timestep
GfsOcean, implicit with timestep x 10
Enlarge
GfsOcean, implicit with timestep x 10
GfsRiver, minmod limiter, non-linear
Enlarge
GfsRiver, minmod limiter, non-linear
GfsRiver, Sweby limiter, non-linear
Enlarge
GfsRiver, Sweby limiter, non-linear
GfsRiver, no limiter, non-linear
Enlarge
GfsRiver, no limiter, non-linear
GfsRiver, no limiter, non-linear, cfl = 0.25
Enlarge
GfsRiver, no limiter, non-linear, cfl = 0.25
GfsRiver, no limiter, non-linear, maxlevel = 9
Enlarge
GfsRiver, no limiter, non-linear, maxlevel = 9

Parameter files

For GfsRiver

2 2 GfsRiver GfsBox GfsGEdge { x = 0.5 y = 0.5 } {
Refine 8
Init {} {
# Parabolic hump
Zb = 0.8*exp(-5.*(x - 0.9)*(x - 0.9) - 50.*(y - 0.5)*(y - 0.5))
# Initial free surface and perturbation
P = (1. + 0.01*exp(-2000.*(x - 0.1)*(x - 0.1)) - Zb)
}
PhysicalParams { g = 1 }
AdvectionParams { cfl = 0.5 }
AdaptGradient { istep = 1 } {
cmax = 1e-4
cfactor = 2
maxlevel = 8
minlevel = 6
} (P + Zb)
Time { end = 1.8 }
OutputTime { istep = 10 } stderr
OutputSimulation { istep = 10 } stdout
GModule gfsview
OutputView { step = 2e-2 } { ppm2mpeg > hump.mpg } hump.gfv
OutputSimulation { start = 0.6 step = 0.3 } sim-%g.gfs
EventScript { start = end } {
for i in 0.6 0.9 1.2 1.5 1.8; do
echo "Save stdout { format = EPS line_width = 0.2 }" | \
gfsview-batch2D sim-$i.gfs isolines.gfv > iso-$i.eps
echo "Save stdout { format = EPS line_width = 0.2 }" | \
gfsview-batch2D sim-$i.gfs cells.gfv > cells-$i.eps
done
echo "Save stdout { width = 1280 height = 960 }" | \
gfsview-batch2D sim-0.9.gfs hump.gfv | convert ppm:- hump.eps
}
}
GfsBox {
top = Boundary { BcNeumann V 0 }
bottom = Boundary { BcNeumann V 0 }
}
GfsBox {
top = Boundary { BcNeumann V 0 }
bottom = Boundary { BcNeumann V 0 }
}
1 2 left
1 2 right

and for GfsAtmosphere

2 2 GfsAtmosphere GfsBox GfsGEdge { x = 0.5 y = 0.5 } {
Refine 8
VariableTracer P { gradient = gfs_center_minmod_gradient }
Init {} {
# Parabolic hump
Zb = 0.8*exp(-5.*(x - 0.9)*(x - 0.9) - 50.*(y - 0.5)*(y - 0.5))
# Initial free surface and perturbation
P = (1. + 0.01*exp(-2000.*(x - 0.1)*(x - 0.1)) - Zb)
}
Time { end = 1.8 dtmax = 2e-3 }
OutputTime { istep = 1 } stderr
OutputSimulation { istep = 10 } stdout
OutputSimulation { start = 0.6 step = 0.3 } sim-%g.gfs
GModule gfsview
OutputView { step = 2e-2 } { ppm2mpeg > hump.mpg } hump.gfv
}
GfsBox {}
GfsBox {}
1 2 left
1 2 right

and for GfsOcean

2 2 GfsOcean GfsBox GfsGEdge { x = 0.5 y = 0.5 } {
Refine 8
Init {} {
# Parabolic hump
H = 1. - 0.8*exp(-5.*(x - 0.9)*(x - 0.9) - 50.*(y - 0.5)*(y - 0.5))
# Initial free surface and perturbation
P = 0.01*exp(-2000.*(x - 0.1)*(x - 0.1))
}
PhysicalParams { g = 1 }
Time { end = 1.8 dtmax = 2e-3 }
OutputTime { istep = 1 } stderr
OutputProjectionStats { istep = 1 } stderr
OutputSimulation { istep = 10 } stdout
OutputSimulation { start = 0.6 step = 0.3 } sim-%g.gfs
}
GfsBox {}
GfsBox {}
1 2 left
1 2 right
Personal tools
communication