Outflow b.c. for shallow water riemann solver
So, the deal is I've developed a shallow water solver to look at a problem in the emergence of complexity. It's a conservative finite volume code with cell centered variables (h, uh, vh) on an unstructured triangular mesh and uses MPI and OpenMP to scale. There is also variable bottom topography and bottom friction. This is basically looking at flow in a channel so the problem is cartesian. So far, I am not using any ghost cells at boundaries, though I do have halo cells for communications between MPI tasks. The code seems to work well and the side wall boundary conditions are working fine. I'm really looking at a problem where the flow is subcritical. The one thing that I haven't been able to get right is the outflow boundary condition.
For one thing, there is no 'reference state' outside of the boundary. In fact, I start the problem with a completely dry state and , in general, at any time there may even be dry regions on the boundary (the Roe solver handles the dry regions just fine). Can anyboy point me at a paper that describes how to implement something like this? Most of the time, I run into things that either aren't relevant to my problem or are vague enough to be confusing. I'm just not seeing how to relate this business about Riemann invariants to something I can set in my algorithm.... Ok, there. I've confessed my brain fart to the world. ;) 
Is your question simply How to impose the boundary conditions on the Riemann Invariants (charateristics of the flow) rather than on the primitive variables (h, u, v) ? and are you still interested in an answer?

Quote:

So you are looking at an incompressible fluid, flowing in two dimension with a thickness h, with velocities u and v.
You have to take the system of the 3 equations you are solving for h, u and v and make a transformation to that system to obtain the chatacteristics of the flow. That is the very first step, it is to find that transformation. If the velocities are u and v, they belong to the x and y dimensions ? and what are the "crossing" bondaries through which you want to impose the boundary conditions ? If for example you want to consider the bondaries y=0 and y=L (e.g.) as the fluid flows in the x direction through these boundaries, then in order to find the transformation to the system you have to ignore the derivatives in the Y dimension (each dimension perpandicular to the boundaries are treated separately). These are the very first steps to follow. If you want you can write down the basic equations you have and we can try to start from there, or I can give you some references. The process to find the Riemann invariants is to linearized the equations and make a transformation to obtain the eigen vectors associated with the eigen values v, v+c, vc (in one dimension) and u, u+c, uc (in the other dimension). Once you found the Riemann invariants for your flow, then you will have to use them and that transformation to impose the boundary conditions, this will make sure that the boundaries are nonreflective. 
as to references, if you do have access to journals through your institution (otherwise you have to pay per view...) here are a couple of articles:
Abarbanel et al. 1991, Journal of Fluid Mechanics, n.225, p.557, that treats some non reflective boundary conditions. Givoli, D. 1991, Journal of Computational Physics, n. 94, p.1, this is a review paper on non reflecting boundary conditions. Or also have a look at Wasberg & Andreassen, Computer Methods in Applied Mechanics and Engineering, 1990, n.80, p.459. also you can look here... http://www.cfdonline.com/Forums/mai...invariant.html for some prehistoric post. 
All times are GMT 4. The time now is 10:28. 