|
From: Gareth D. <gar...@gm...> - 2019-05-06 08:52:25
|
Hi Rupal, Boundary conditions are a somewhat complex topic, where both mathematical and numerical issues interact. It's not actually correct to say that if you want outflow, then you can use either transmissive or dirichlet. Mathematically there are additional requirements. An example paper on the general topic is here, which might get you started on the issues: https://www.diva-portal.org/smash/get/diva2:616345/FULLTEXT01.pdf Conceptually, the problem is that in most situations one needs to have some information on the flow "outside of the model domain", because it inescapably influences the flow inside (the only exception is supercritical outflow). The amount of information that is required depends on whether the flow is supercritical or subcritical, and the flow is inward or outward from the domain. Note this is a fundamental physical issue -- not a matter of numerical implementation. If you don't provide enough boundary information, then it's hard to say what will happen -- maybe the flow will anyway be approximately correct, maybe not -- this will vary case-by-case depending on the flow situation, and numerical details of the implementation. I expect this is happening in your model, at least when using the "Transmissive" boundary condition -- unless you have supercritical outflow, there will be insufficient information. Another issue, separate again, is that boundary conditions can also be a source of instability, or spurious reflections, depending on the flow situation. And there is yet another issue; the method that ANUGA uses to impose boundary conditions will not in general "force" the flow to be equal to the boundary value for any quantity -- instead, ANUGA will use the boundary values to represent the flow on one "edge" for the flux computation. So there is a lot of potential for trouble with boundary conditions. That said, if you have a boundary where you expect outflow, and furthermore you think the flow is subcritical, then you might consider using one of these (see boundaries.py for documentation): Transmissive_n_momentum_zero_t_momentum_set_stage_boundary Transmissive_momentum_set_stage_boundary Time_stage_zero_momentum_boundary Characteristic_stage_boundary Flather_external_stage_zero_velocity_boundary Another good heuristic is to keep your boundary condition "suffiently far" from the flow region of interest so that any imperfections do not influence the important aspects of the flow. This is not always required, but is a good idea if you think you are having trouble at the boundary. Other random techniques -- for some problems you can do things like append a "large pond" or similar to trap the outflowing water without it causing issues for your domain. Or you can append a very coarse region around the boundary, to dissipate important waves. All this is very 'case-by-case' though. Good luck, Gareth. On 6/5/19 5:48 pm, rupal budhbhatti wrote: > Hello Sir, > > I want the flow out of my domain at the bottom boundary. Correct me If > I am wrong but Transmissive boundary is used for that right? Also, > Dirichlet boundary condition can be used as drainage using it with > parameters as [0,0,0] that is giving the stage value lower than the > lowest elevation. > > Sir I am confused between the use of Transmissive and the Dirchlet > Boundary condition fused as drainage to get the flow simply out from > the domain. I got more confused when I got different results using > this two boundary conditions when both are meant for the same purpose. > I request you to help me understand where I am wrong. > > Please guide me. > > Kind Regards, > Rupal > > > > > _______________________________________________ > Anuga-user mailing list > Anu...@li... > https://lists.sourceforge.net/lists/listinfo/anuga-user |