# RiverVortexTest

### From Gerris

Revision as of 01:14, 18 May 2011Gjrickard (Talk | contribs) ← Previous diff |
Revision as of 01:21, 18 May 2011Gjrickard (Talk | contribs) Next diff → |
||

Line 33: |
Line 33: | ||

should be pushing them to look at the (presumably) complex tidal interactions with coastline | should be pushing them to look at the (presumably) complex tidal interactions with coastline | ||

and in-situ structures. | and in-situ structures. | ||

+ | |||

+ | == River Tidal Turbine 2D Problem == | ||

+ | |||

+ | An analytic 1D heat flux solution compared with a Gerris2D run. | ||

+ | Run out to t=5, taking about half an hour of single processor time. | ||

+ | |||

+ | <source lang=gfs> | ||

+ | |||

+ | ## Domain of unit size in x and y | ||

+ | 1 0 GfsSimulation GfsBox GfsGEdge {y = 0.0 x = -0.5} { | ||

+ | |||

+ | ## Uniform refinement across the domain | ||

+ | Refine 7 | ||

+ | |||

+ | Time {end = 5.0 dtmax=0.001} | ||

+ | |||

+ | ## Initialise single tracer, no advection scheme | ||

+ | VariableTracer {} R {scheme = none} | ||

+ | |||

+ | ## Constant diffusion coefficient | ||

+ | SourceDiffusion {} R 0.02 | ||

+ | |||

+ | ## Initialise tracer to a constant value | ||

+ | Init {} {R = 34.45 } | ||

+ | |||

+ | ApproxProjectionParams { tolerance = 1e-6 } | ||

+ | ProjectionParams { tolerance = 1e-6 } | ||

+ | |||

+ | OutputTime { istep = 10 } stdout | ||

+ | OutputTiming { start = end } stdout | ||

+ | OutputProjectionStats { istep = 10 } stdout | ||

+ | OutputSimulation { step = 1.0 } outice_test2d_1-%9.7f.gfs | ||

+ | OutputSimulation { start = end } resice_test2d_1.gfs {} | ||

+ | |||

+ | ## Output at a number of points to compare with | ||

+ | ## analytic solution | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_01 { -0.999 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_02 { -0.949 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_03 { -0.899 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_04 { -0.849 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_05 { -0.799 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_06 { -0.749 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_07 { -0.699 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_08 { -0.649 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_09 { -0.599 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_10 { -0.549 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_11 { -0.499 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_12 { -0.449 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_13 { -0.399 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_14 { -0.349 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_15 { -0.299 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_16 { -0.249 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_17 { -0.199 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_18 { -0.149 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_19 { -0.099 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_20 { -0.049 0.0 -0.5 } | ||

+ | GfsOutputLocation { istep = 10 } c1_1dhf_21 { -0.001 0.0 -0.5 } | ||

+ | |||

+ | } | ||

+ | |||

+ | GfsBox { | ||

+ | # Gradient condition value is (Flux/Diff Coeff). | ||

+ | # | ||

+ | # If positive value, gradient increases along outward normal | ||

+ | # and implied heat flux is inwards counter to outward normal. | ||

+ | # If negative value, gradient decreases along outward normal | ||

+ | # and implied heat flux is outwards along outward normal. | ||

+ | # | ||

+ | left = Boundary { BcNeumann R (0.0063/0.02) } | ||

+ | right = Boundary { BcNeumann R (0.0) } | ||

+ | } | ||

+ | |||

+ | </source> | ||

+ | |||

+ | Top frame compares space-time solution from Gerris2D (the red dashes) and from the | ||

+ | analytic Laplace transform solution. | ||

+ | |||

+ | Green crosses indicate x-positions of sampled output. | ||

+ | |||

+ | Lower frame plots changes in concentration as a function of time at the indicated | ||

+ | x-positions. The dashed lines are from Gerris2D on top of the Laplace Transform | ||

+ | solutions. | ||

+ | |||

+ | {| align="center" | ||

+ | |+ Comparison of 1D Heat Flux solutions. | ||

+ | |- | ||

+ | | [[Image:Plot_1dhf.png|thumb|500px|center|Gerris]] | ||

+ | |} |

## Revision as of 01:21, 18 May 2011

Testing the River version of Gerris. In particular interested in the possibility of tidal turbine like simulations in support of Tim Divett's thesis.

The basic issue is that we note in both the Linear Free Surface and Nonlinear Free Surface versions of Gerris that vortices generated from wakes caused by localised regions of high bottom friction (mimicing the presence of a turbine, say) can sometimes become unstable, i.e., the vortex continues to spin up as it moves downstream leading to (presumably) unphysical magnitudes of flow and fluid height. In the linear free surface version, such vortices persist and can be seen moving with the background flow. In the nonlinear free surface version, these vortices become tighter and more intense, and eventually grind the simulation to a halt via excessive magnitudes of flow and amplitude.

This issue is also relevant to a whole series of linear free surface tidal simulations around headlands and bays around New Zealand. In these simulations an increase in spatial resolution reveals the generation of many eddies that appear to be shed in a physical way via interactions with the coastline. As above, these eddies persist in the background tidal flow. They do not appear to be unstable (ie the runs keep going), but the question remains about the fidelity and actuality of these eddies (and to test this we need more field observations, and perhaps some more thought about the model).

Both models have been tested against the cases present by Signell and Geyer (1991) and both seem to do a good job of reproducing many of the features seen. Thus the underlying schemes seem to be correct, at least for the scales of interest in these tests.

Perhaps it's not surprising that these features arise. After all the models in question here are solving shallow water variants of reality, so that the likely possibility of 3D processes in the water column influencing the vortex behaviour is absent. For the shallow water the only explicit damping is via a bottom friction term, and the only implicit damping is through truncation terms in the advection scheme; these may be missing important physics that allow for a more complete representation of the vortex behaviour.

So, here show some examples of the unstable vortex behaviour in the River code. This can perhaps lead to a better understanding of the limitations of the shallow water models, and how far we should be pushing them to look at the (presumably) complex tidal interactions with coastline and in-situ structures.

## River Tidal Turbine 2D Problem

An analytic 1D heat flux solution compared with a Gerris2D run. Run out to t=5, taking about half an hour of single processor time.

## Domain of unit size in x and y

1 0 GfsSimulation GfsBox GfsGEdge {y = 0.0 x = -0.5} {

## Uniform refinement across the domain

Refine 7

Time {end = 5.0 dtmax=0.001}

## Initialise single tracer, no advection scheme

VariableTracer {} R {scheme = none}

## Constant diffusion coefficient

SourceDiffusion {} R 0.02

## Initialise tracer to a constant value

Init {} {R = 34.45 }

ApproxProjectionParams { tolerance = 1e-6 }

ProjectionParams { tolerance = 1e-6 }

OutputTime { istep = 10 } stdout

OutputTiming { start = end } stdout

OutputProjectionStats { istep = 10 } stdout

OutputSimulation { step = 1.0 } outice_test2d_1-%9.7f.gfs

OutputSimulation { start = end } resice_test2d_1.gfs {}

## Output at a number of points to compare with

## analytic solution

GfsOutputLocation { istep = 10 } c1_1dhf_01 { -0.999 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_02 { -0.949 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_03 { -0.899 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_04 { -0.849 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_05 { -0.799 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_06 { -0.749 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_07 { -0.699 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_08 { -0.649 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_09 { -0.599 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_10 { -0.549 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_11 { -0.499 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_12 { -0.449 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_13 { -0.399 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_14 { -0.349 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_15 { -0.299 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_16 { -0.249 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_17 { -0.199 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_18 { -0.149 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_19 { -0.099 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_20 { -0.049 0.0 -0.5 }

GfsOutputLocation { istep = 10 } c1_1dhf_21 { -0.001 0.0 -0.5 }

}

GfsBox {

# Gradient condition value is (Flux/Diff Coeff).

#

# If positive value, gradient increases along outward normal

# and implied heat flux is inwards counter to outward normal.

# If negative value, gradient decreases along outward normal

# and implied heat flux is outwards along outward normal.

#

left = Boundary { BcNeumann R (0.0063/0.02) }

right = Boundary { BcNeumann R (0.0) }

}

Top frame compares space-time solution from Gerris2D (the red dashes) and from the analytic Laplace transform solution.

Green crosses indicate x-positions of sampled output.

Lower frame plots changes in concentration as a function of time at the indicated x-positions. The dashed lines are from Gerris2D on top of the Laplace Transform solutions.