CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   What is even-odd decoupling ? (https://www.cfd-online.com/Forums/main/150586-what-even-odd-decoupling.html)

Tommy Chen March 25, 2015 16:44

What is even-odd decoupling ?
 
Hi everyone

I am a CFD beginner currently reading as many books as I can.

A lot of books say that artificial dissipation has to be added to central difference scheme in order to avoid the odd-even decoupling.

could anyone explain to me a little bit what exactly the odd-even decoupling is ?
For instance , in the finite volume approach, if I use the JST scheme for inviscid flux without adding the artificial dissipation term, what would happen? what is the relationship between this consequence with the odd-even decoupling ?

Thanks !

FMDenaro March 25, 2015 16:55

Quote:

Originally Posted by Tommy Chen (Post 538215)
Hi everyone

I am a CFD beginner currently reading as many books as I can.

A lot of books say that artificial dissipation has to be added to central difference scheme in order to avoid the odd-even decoupling.

could anyone explain to me a little bit what exactly the odd-even decoupling is ?
For instance , in the finite volume approach, if I use the JST scheme for inviscid flux without adding the artificial dissipation term, what would happen? what is the relationship between this consequence with the odd-even decoupling ?

Thanks !


You can find this issue treated in many textbooks, odd-even decoupling can be seen also for the incompressible flows formulation.

Briefly, here an example: consider the case in which you want to compute on 1D grid a term like d/dx (df/dx). Using central discretization you have

(df/dx|i+1 - df/dx|i-1)/2h = (f(i+2) - 2f(i) + f(i-2))/4h^2

Such discretization, compared to the compact counterpart

(f(i+1) - 2f(i) + f(i-1))/h^2

show lack of data comunication between adjacent nodes. This aspect can produce spurious modes.

Details are explained for example in the Peric & Ferziger textbooks

Tommy Chen March 25, 2015 17:03

Quote:

Originally Posted by FMDenaro (Post 538217)
You can find this issue treated in many textbooks, odd-even decoupling can be seen also for the incompressible flows formulation.

Briefly, here an example: consider the case in which you want to compute on 1D grid a term like d/dx (df/dx). Using central discretization you have

(df/dx|i+1 - df/dx|i-1)/2h = (f(i+2) - 2f(i) + f(i-2))/4h^2

Such discretization, compared to the compact counterpart

(f(i+1) - 2f(i) + f(i-1))/h^2

show lack of data comunication between adjacent nodes. This aspect can produce spurious modes.

Details are explained for example in the Peric & Ferziger textbooks

Until the formula (f(i+1) - 2f(i) + f(i-1))/h^2 , I can understand it.

However , how to interpret or how to understand the " lack of communication between adjacent nodes " ? Isn't the i+1 and i-1 cell the adjacent cell of the i cell ?

FMDenaro March 25, 2015 17:09

when you write the equation at node i+1 you get

(f(i+3) - 2f(i+1) + f(i-1))/4h^2

and when you write at node i-1 you get

(f(i+1) - 2f(i-1) + f(i-3))/4h^2

Therefore, you formally have 2 indipendent grids over which solutions do not communicate each other.

Tommy Chen March 25, 2015 21:44

Quote:

Originally Posted by FMDenaro (Post 538225)
when you write the equation at node i+1 you get

(f(i+3) - 2f(i+1) + f(i-1))/4h^2

and when you write at node i-1 you get

(f(i+1) - 2f(i-1) + f(i-3))/4h^2

Therefore, you formally have 2 indipendent grids over which solutions do not communicate each other.

But does the concept ‘odd-even decoupling’ exist when using unstructured mesh ?

mprinkey March 26, 2015 11:41

Quote:

Originally Posted by Tommy Chen (Post 538270)
But does the concept ‘odd-even decoupling’ exist when using unstructured mesh ?

Yes, it does. If you write the grad(phi) for an unstructured cell, you will see that it generally does NOT involve the value of phi in the cell, only its neighbors. The same for div(). So, you can compute gradPhi = grad(phi) explicitly. Then, following the above example, take the divergence of gradPhi following the same technique used for grad. If you follow that through, you will find that div(gradPhi) ends up involving (mostly) neighbors of neighbors, just like the 4h^2 form in 1D. This is a general problem associated with "compositional" approaches to finite difference/finite volume calculations.

One variation does happen depending on grid tolopology...where a neighbor of neighbor actually maps back to a first-degree neighbor. But that is not guaranteed and it is, in practice, not enough connectivity to avoid even-odd decoupling

Tommy Chen March 26, 2015 11:47

Quote:

Originally Posted by mprinkey (Post 538418)
Yes, it does. If you write the grad(phi) for an unstructured cell, you will see that it generally does NOT involve the value of phi in the cell, only its neighbors. The same for div(). So, you can compute gradPhi = grad(phi) explicitly. Then, following the above example, take the divergence of gradPhi following the same technique used for grad. If you follow that through, you will find that div(gradPhi) ends up involving (mostly) neighbors of neighbors, just like the 4h^2 form in 1D.

One variation does happen depending on grid tolopology...where a neighbor of neighbor actually maps back to a first-degree neighbor. But that is not guaranteed and it is, in practice, not enough connectivity to avoid even-odd coupling

What I am implementing now in my code is a finite volume explicit time scheme.
In finite volume approach, the residual is basically the flux across the interface between to cells, taking unstructured mesh for examples, it is really hard for me to build an analogy from the structured mesh finite referencing to unstructured mesh finite volume on this concept.

mprinkey March 26, 2015 12:37

FV works with the volume integral of each cell. Gradient, Laplacian, and Div terms are converted to surface integrals by Green's/Stoke's/Divergence theorems. But the calculations end up being the same, with Area/Volume generally replacing dx. If you use the surface integrals to compute the vector field gradPhi = grad(phi) in all of the cells. And then use the surface integrals AGAIN to compute the div(gradPhi) to find the Laplacian, you will get the same neighbor-of-neighbor (4*h^2) form.

And, in fact, that is exactly how FV schemes compute the skew portion of face fluxes for diffusion terms. The "straight line" gradient at the face can be built using the cell and its neighbor, but that will not represent the normal flux on meshes were the line connecting the neighboring cell centroids is not parallel to the shared face normal. So, the resulting face gradient ends up being computed as a mixture of the straight line gradient (corrected for direction) and the average of the cell gradient fields in the neighboring cells. There is a good overview of this in the Ansys Fluent documentation if you have access to it.

shahrooz.omd March 27, 2015 09:03

When you use simple central difference scheme for a grid like below :

[1]----[2]----[3]----[4]----[5]----[6]

all equations on grid points with odd number involve data from grid points from even numbers and vice versa. as you can see it's like having 2 separate grids for a single equation. the solution on odd grid points becomes idependent / decoupled from even grid points and vice versa.


All times are GMT -4. The time now is 14:18.