CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   Grid stretching to achieve non-reflecting BCs (

lost.identity November 27, 2009 15:04

Grid stretching to achieve non-reflecting BCs

I'm trying to analyse acoustic waves inside a duct. For this I need a non-reflecting boundary condition (NRBC) at the outlet.

Unfortunately the code I'm using does not have a correct implementation of such a NRBC, therefore I've resorted to grid stretching to absorb the sound waves by the coarser grid so nothing reflects.

I've tried extending the geometry and stretching the grids but I'm still unable to achieve non-reflection. Is this a commonly used method or has anyone tried this before?


harishg November 27, 2009 22:32

When you stretch the grid, the resolved wavenumber reduces and all the energy gets deposited at high wave numbers. The high wave number components can cause aliasing errors if they are not removed. The high wave number components have to be removed. There are two ways of doing it (i) Upwinded high order schemes/ Other upwind high order schemes and (ii) Central high order schemes with low pass filtering (low order schemes will dissipate the waves). Look for papers by Visbal and Gaitonde. They have performed a lot of studies on low pass filtering. I used their method, Energy transfer and annhiliation to perform aeroacoustic simulations and obtained really good results.

lost.identity December 1, 2009 10:04

Thanks for the reply.

See I'm confused. I was told to just expand the grid as long as I can and it will cause the acoustic energy to be absorbed. But I was never able to do that just by grid stretching. I always had some reflection coming back. (surprising the people who suggested this are apparently the top in turbomachinery CFD).

I've read a paper where like you said, they suggested using grid stretching with filtering to achieve non-reflection. But this would mean that I would have to modify the CFD code which is actually a massive industrial code.

I think what I want is some sort of reference where I can explain that grid stretching alone is not sufficient to prevent reflections and you need filtering as well.

harishg December 1, 2009 12:49

There are other ways of implementing non reflecting BC too. How much can you modify in the code? The simplest case is the use of charateristic BC suggested by Poinsot and Lele, JCP (1991-1992). Other option is to add artificial viscosity and convection (Du/dt+U_arti (del U) = -gradp + Viscous + artificial viscous term. Another commonly used approach is the perfectly matched layer of berenger.

If the code uses a lower order scheme, you can try switching from central to upwind to reduce the reflections. The same can be said of high order central schemes. They can be replaced by upwind schemes of high order. Another option is to formulate the convection term in Skew symmetric form (often employed for DNS) to avoid the aliasing errors due to grid stretching.

lost.identity December 1, 2009 15:35

Thanks for the reply.

I tried to use Poinsot & Lele's characteristic based NRBC's awhile ago but was not able to implement it correctly in the code. The code itself is fairly huge and I've been told that it's notoriously difficult to modify since it was written by mathematicians.

Part of the problem is the code already has Giles' NRBCs but it produces the same results as the reflecting BCs.

The time constraints would now not allow me to modify the code. I was just hoping whether a modification of grid alone would be sufficient and I know that it's not. I'd give references to one the papers you suggested that filtering is required to for grid stretching to produce non-reflecting BCs. I just wasn't sure whether that was the case.


All times are GMT -4. The time now is 08:43.