diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H index a021a55dda09090bf0173f1112a418040ca7909c..e1610dd2b3ef1fa1298719882568ed75a92381b9 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H @@ -25,9 +25,37 @@ Class Foam::fv::CrankNicolsonDdtScheme Description - Second-oder CrankNicolson implicit ddt using the current and + Second-oder Crank-Nicolson implicit ddt using the current and previous time-step fields as well as the previous time-step ddt. + The Crank-Nicolson scheme is often unstable for complex flows in complex + geometries and it is necessary to "off-centre" the scheme to stabilize it + while retaining greater temporal accuracy than the first-order + Euler-implicit scheme. Off-centering is specified via the mandatory + coefficient in the range [0,1] following the scheme name e.g. + \verbatim + ddtSchemes + { + default CrankNicolson 0.9; + } + \endverbatim + With a coefficient of 1 the scheme is fully centred and second-order, + with a coefficient of 0 the scheme is equivalent to Euler-implicit. + A coefficient of 0.9 has been found to be suitable for a range of cases for + which higher-order accuracy in time is needed and provides similar accuracy + and stability to the backward scheme. However, the backward scheme has + been found to be more robust and provides formal second-order accuracy in + time. + + The advantage of the Crank-Nicolson scheme over backward is that only the + new and old-time values are needed, the additional terms relating to the + fluxes and sources are evaluated at the mid-point of the time-step which + provides the opportunity to limit the fluxes in such a way as to ensure + boundedness while maintaining greater accuracy in time compared to the + Euler-implicit scheme. This approach is now used with MULES in the + interFoam family of solvers. Boundedness cannot be guaranteed with the + backward scheme. + SourceFiles CrankNicolsonDdtScheme.C @@ -173,7 +201,7 @@ public: ( "CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is)", is - ) << "coefficient = " << ocCoeff_ + ) << "Off-centreing coefficient = " << ocCoeff_ << " should be >= 0 and <= 1" << exit(FatalIOError); }