|
[Sponsors] |
Shallow Water Equations: Roe Approximate Solver First-Order with Wetting-Drying |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
July 8, 2015, 14:13 |
Shallow Water Equations: Roe Approximate Solver First-Order with Wetting-Drying
|
#1 |
New Member
Michael Halls-Moore
Join Date: Jul 2015
Posts: 2
Rep Power: 0 |
Hi,
Firstly, I apologise for the length of this post, but it requires quite a bit of detail and explanation! Thanks in advance for any help you might provide... I'm currently writing a structured 2D solver using a Godunov-type Finite Volume Method (first-order, i.e. no slope-reconstruction) for the shallow water equations with variable bed slope and friction, in C++. The code uses the Roe approximate Riemann solver with incorporated bed slope flux, with friction solved in a point-wise manner. To date the solver works with all test cases I have tried where the water height h (h being the height above the bed) exceeds the height of the bed. I'm having some trouble with creating effective conditions for what is known as the "wetting-drying condition", which is essentially a moving boundary problem where the equations are solved at adjacent cells, one being "wet" and the other "dry". Dry is defined here as the water depth being less than a pre-specified tolerance value. I've spent a good bit of time looking at some papers ([1], [2]) but I'm finding it tricky to tease out the algorithm as to how a wetting-drying front is actually implemented. There is mention of a situation where the total surface height H = h + z, where z is the bed height, must have H_L >= H_R, otherwise a modification to the bed slope, z, is needed. My current algorithm for the Roe fluxes looks a bit like this: // Only showing x-direction, y-direction is similar Loop over i ----Loop over j --------set "left cell" and "right cell" --------if both cells are "dry" (i.e. h_L < tolerance && h_R < tolerance) ------------set all fluxes to zero --------else // at least one is dry ------------if it's left one and H_L < H_R ----------------// use correction as in [1] ----------------z_R = z_L - (h_R - h_L); ----------------// set u, v velocities to zero ------------if it's right one and H_R < H_L ----------------// use correction as in [1] ----------------z_L = z_R - (h_L - h_R); ----------------// set u, v velocities to zero --------// Do flux calculations (i.e. work out alpha, eigenvalues and eigenvectors) --------// for fluxes and bed slop terms Firstly, does anybody have any experience implementing an algorithm like this? I've been trying for the last couple of days with various modifications to the above algorithm and nothing seems to be working. I've -nearly- managed to replicate the periodic tidal case in [1], but this is only with setting a rather high tolerance (>0.05m). So my questions are: 1) Is my algorithm even correct? Do I need to set some flux terms to zero? Do I need to set more velocity terms to zero? 2) What is a good value to use as a tolerance? Most papers seem to ignore this, but it's an essential model parameter, so I'm left trying arbitrary/reasonable values! Please let me know if you need more detail in answering the question. I can provide the source code, if necessary. Thanks in advance for any help provided! Cheers, Mike. --------- [1] Brufau et al. - A numerical model for the flooding and drying of irregular domains - International Journal For Numerical Methods in Fluids, May 2002. [2] Brufau et al. - Zero mass error using unsteady wetting-drying conditions in shallow flows over dry irregular topography, International Journal For Numerical Methods in Fluids, August 2004. |
|
July 9, 2015, 04:40 |
Negative depth handling
|
#2 |
New Member
Michael Halls-Moore
Join Date: Jul 2015
Posts: 2
Rep Power: 0 |
I forgot to mention that I am handling negative depths, using a mass-displacement method, i.e. if a negative depth is encountered (such as near a wet/dry front), the mass is set to zero in this cell (the velocities are also set to zero) and the same mass is subtracted from the neighbouring cell with the highest mass.
However, for the particular test case I described in the first post, negative mass is not reached. The time-step simply becomes too small and the solution terminates. I believe this could be due to overly large wave velocities. The investigation continues! |
|
December 20, 2016, 14:50 |
hello
|
#3 |
New Member
ANONIMUS
Join Date: Dec 2016
Posts: 1
Rep Power: 0 |
hola amigo de igual manera estoy implementando un codigo para flujos en aguas poco profundas (shallow water) sobre lechos variables y mi problema de igual manera es el tratamiento de un elemento wet and dry, revise varios papers y no especifican lamanera de implementarlo, encontre una tesis donde explica la maera de como se debe tratar los frentes secos te envio el link, y si lograstes implementar esa parte prfavor me ayudarias en bastante gracias
lo que es para rotura de presa con aguas abajo si corre http://jryma.eshost.com.ar/?i=1 https://dspace.lboro.ac.uk/dspace-js...ndle/2134/7750 |
|
Tags |
godunov method, roe solver, shallow water equations |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Shallow water + VOF | MIT | OpenFOAM Running, Solving & CFD | 4 | May 26, 2011 21:27 |
Shallow water 2D on irregular bed | RicardoGoncalves | Main CFD Forum | 0 | July 27, 2010 05:38 |
Outflow b.c. for shallow water riemann solver | phdoofus | Main CFD Forum | 4 | April 15, 2010 16:56 |
Roe approximate riemann solver | Kaira | Main CFD Forum | 15 | August 3, 2006 01:31 |
roe solver with entropy fix | mehdi | Main CFD Forum | 1 | February 26, 2006 06:36 |