CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   Crank-Nicolson scheme (

misakagan November 17, 2011 07:38

Crank-Nicolson scheme
Hi Foamers,

I'm trying to implement a second order solver for incomresssible flows which uses Crank-Nicolson (CN) method for the diffusive term and Adams-Bashfort method for the convective term.

I am confused about how CN method is implemented in OpenFOAM, as I don't see any coefficient like 1/2 on the convective and viscous term. How can you apply CN scheme without using these coefficients? As far as I see it is only covered by ddt(U) term.



misakagan November 17, 2011 09:12

The intention for implementing a second order solver is that PisoFOAM is only FIRST order accurate in time whatever scheme you use for time discretization. The reason for this is the explicit treatment of the flux phi in the convective term. They limit the accuracy in time to first order and this is not preferred in turbulent flow simulations.

I don't understand why nobody cares about this, and I read a lot of papers Openfoam users claiming they have second order accuracy. It confuses me a lot. Am I missing something?

Fransje November 25, 2011 09:33

Dear Asim,

I don't think it's the explicit treatment of the flux in the convective terms which reduces the order of the pisoFoam algorithm. In fact, even by doing everything explicitly you should be able to retrieve second order accuracy. It will however impact stability as your time integration is no longer purely implicit.

But I think (and I've also heard via-via from developpers) that the main issue comes from the Rhie-Chow flux correction ddtPhiCorr in:

phi = (fvc::interpolate(U) & mesh.Sf())
    + fvc::ddtPhiCorr(rAU, U, phi);

Why nobody seems to care, I don't know.. I do! But apparently the fix of ddtPhiCorr is not trivial..
And as for the second order claim in papers.. Well.. A 'small' distortion of the truth perhaps? :p

Kind regards,


All times are GMT -4. The time now is 16:26.