# Shallow Water Equations: Roe Approximate Solver First-Order with Wetting-Drying

 User Name Remember Me Password
 Register Blogs Members List Search Today's Posts Mark Forums Read

 LinkBack Thread Tools Search this Thread Display Modes
 July 8, 2015, 13: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, 03: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, 13: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

 Thread Tools Search this Thread Search this Thread: Advanced Search Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are Off Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post MIT OpenFOAM Running, Solving & CFD 4 May 26, 2011 20:27 RicardoGoncalves Main CFD Forum 0 July 27, 2010 04:38 phdoofus Main CFD Forum 4 April 15, 2010 15:56 Kaira Main CFD Forum 15 August 3, 2006 00:31 mehdi Main CFD Forum 1 February 26, 2006 05:36

All times are GMT -4. The time now is 04:42.

 Contact Us - CFD Online - Privacy Statement - Top