CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   Help with basic finite difference doubt. (

Guillermo Marraco March 7, 2007 19:00

Help with basic finite difference doubt.
Hello. I have a doubt on incompressible flow (free surface).

As I understand, doing forward difference (in time) in a finite timestep, lead to a unstable scheme when the timestep is Ax<=At.v . (A meaning Delta greek letter: Ax=delta x; At=delta t, v=x_speed )

I have read some "proof" based on fourier series, but still don't get it.

I suspect that the source of unstability is that incompresibility (zero divergence for vector speed v) is not granted (on a forward difference), for the next time step. And I suspect that on a implicit scheme (like a backward difference) ensures uncompresibility on the future timestep, and simultaneoulsy ensures the backward partial derivative of speed, being this the source of stability. (I think that it is the foundation for SIMPLE/SIMPLER methods, but texts on the matter are some way obscure)

Is this right?

Is there a forward difference scheme (explicit) that, altough painfully slow, is stable for Ax=>At.v ? (maybe it can be accelerated with repeated fast convolutions)

I have read a lot, but have not found a hint on it.

Harish March 8, 2007 00:11

Re: Help with basic finite difference doubt.
There are some stability theories based on what are referred to as matrix methods.You might want to have a look at it too.Implicit or explict schemes become unstable at low speeds when you solve it using compressible N-S solver unless you have preconditioning or very small time step.This has got more to do with the change of the pde type and not usually dependent on the numerical discretization.

ag March 8, 2007 08:48

Re: Help with basic finite difference doubt.
Forward differencing leads to instabilities when it violates the direction of information flow dictated by the original PDEs. If you have a fluid flow from left to right, and the flow is governed by a hyperbolic equation, then you would want to difference in the "windward" direction, i.e. using the point i and the point to the left of i. The reason is because information is moving from the left to the right along characteristics and you want the differencing scheme to capture this fundamental behavior.

Paolo Lampitella March 8, 2007 14:23

Re: Help with basic finite difference doubt.
Implicit or explicit schemes refers to the time at which the spatial derivatives are evaluated and so, while using an implicit scheme needs the solution of a system of equations per each time step, the explicit scheme doesn't need such a long procedure and is faster than the implicit one.

When you discretize the time derivative you have

1)Backward: df/dt = ( f(n) - f(n-1) ) / dt

2)Forward: df/dt = ( f(n+1) - f(n) ) / dt

3)Central: df/dt = ( f(n+1) - f(n-1) ) / 2dt

and how many finite difference schemes you want to build. Note that the instability comes out from the combination of time and space derivatives together; usually it comes out from a 2nd order derivative of the truncation error multiplying a negative coefficient. However (maybe i'm not been so clear) this nothing has to do with the compressibility, in fact you have to note that:

1)if you're using an incompressible solver it will have a pressure equation from which derive a pressure field which will drive the velocity field to be incompressible (with machine accuracy). So, whatever kind of time advancement you will utilize, the velocity field will be always not divergence-free without the pressure correction.

2)If you have a compressible solver the pressure will be trated as a thermodynamic variable and instead of the pressure equation you have to solve the energy and the continuity equations with a state equation (p=density*R*T) all coupled.

About the second point it is important to note that you have to use a Mach number (M) bigger than 0 when using a compressible solver or there will be instability. the reason for this can be mathematically explained considering the eigenvalues of a matrix (See Tannehill, Anderson, Pletcher) or most phisically considering that M=0 means a(sound velocity)=Infinity and to exactly capture the pressure variations (becamed instantaneous) you need an inifinitely small time step...and this will never be the case.

Guillermo Marraco March 9, 2007 19:04

Re: Help with basic finite difference doubt.
The doubt arises because in forward difference the calculus start from a divergence zero granted condition, but this not garantize that the next step velocity is divergence free (div(v)=0 in incompressible flow).

In forward difference, (in schemes I know), the partial derivative of speed is calculated with momentum equation (av/at=momentum other terms). from this, V(n+1)= V(n)+av/at*At (A uppercase meaning delta, and a lowercase meaning partial derivative). This scheme do not have any guarantee that V(n+1) is divergence(V(n+1))=0 -incompressible-. Then I suposse that a little timestep do not change to much the divergence, and this is reated with the limit At<Ax/v, that mean that the flow originate only from neighbor cells.

If after V(n+1) is calculated, and then is make a presure correction, no more agree with momentum equation.

Instead, implicit schemes iterate in time t(n+1) until V(n+1) agree with divergence free and momentum equation.

I want to make a incompressible, finite difference, free surface solver, with implicit scheme, (and suspect that it can be solved in O(N.log2(N)) time with a direct matrix-divide and conquer solver). But also would like to try a forward difference solver. Note that if you take out the nonlinear a(vē)/ax terms, the forward difference is only a convolution, that in laplace o fourier space converts to a product. Then, multiple iterated timesteps are a simple product with a integer power of the convolution. Trouble arises with the nonlinear term. But it transform from a product in to a convolution in laplace of fourier space. In one space, the derivatives are convolutions, and the trouble is the vē term. In another space derivatives are products, and the trouble is the transform of vē because is now a convolution. Then, I have search for a intermediate transform that converts derivatives and products in the same mathematic thing, and I have found that exist the half fourier transform, doing exactly this, and being only a wavelet transform. Then, probably it can be used for calculating in one step n little timesteps of a finite difference forward scheme. But to explore this scheme (restricted with periodic boundaries), I need to understand better how is that forward difference guarantee incompresibility.

Paolo Lampitella March 10, 2007 06:38

Re: Help with basic finite difference doubt.
Forward or backward are just terms that describe the stencil used to approximate a derivative. Explicit or implicit respectively means that you can or not express the solution at the next time step just knowing that at the previous time step. All this stuff nothing has to do with the satisfaction of the divergence free condition of the velocity at the next time step. In fact the iterations made in implicit schemes are due to the nonlinearity and/or coupling of the system of equations, that is you have to change iteratively the coefficients of a linearized system. What will give you the condition in an incompressible solver is always the pressure correction, whose solution is nested in the iterative process.

I don't really understand well what you say about transforms in other spaces. That is, if you makes a Fourier transform (a formal one because you're using periodic boundary conditions) of the N.S. equations you obtain the spectral N.S. in which the condition can be directly inserted in the mom.eqn. leaving just one eqn. This is right and yes maybe the number of operations per time-step required with a fast-solver should be O(NlogN) but i don't think that a spectral solver has never been applied to free surface flows. Maybe utilizing different basis function in different space directions could help but such a kind of effort is justified if you have to make a DNS. Otherwise i think that the classical approach is that in physical space with a pressure correction.

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