CrankNicolsonDdtScheme, backwardDdtScheme: Ensure the V00 field is cached

This commit is contained in:
Henry Weller
2017-03-03 22:03:29 +00:00
parent 0d4b7cbab1
commit e36a294de2
3 changed files with 43 additions and 31 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -200,11 +200,11 @@ scalar CrankNicolsonDdtScheme<Type>::coef_
{ {
if (mesh().time().timeIndex() - ddt0.startTimeIndex() > 0) if (mesh().time().timeIndex() - ddt0.startTimeIndex() > 0)
{ {
return 1.0 + ocCoeff_; return 1 + ocCoeff_;
} }
else else
{ {
return 1.0; return 1;
} }
} }
@ -218,11 +218,11 @@ scalar CrankNicolsonDdtScheme<Type>::coef0_
{ {
if (mesh().time().timeIndex() - ddt0.startTimeIndex() > 1) if (mesh().time().timeIndex() - ddt0.startTimeIndex() > 1)
{ {
return 1.0 + ocCoeff_; return 1 + ocCoeff_;
} }
else else
{ {
return 1.0; return 1;
} }
} }
@ -256,7 +256,7 @@ tmp<GeoField> CrankNicolsonDdtScheme<Type>::offCentre_
const GeoField& ddt0 const GeoField& ddt0
) const ) const
{ {
if (ocCoeff_ < 1.0) if (ocCoeff_ < 1)
{ {
return ocCoeff_*ddt0; return ocCoeff_*ddt0;
} }
@ -368,7 +368,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -456,7 +456,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -546,7 +546,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -647,7 +647,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -773,7 +773,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
fvMatrix<Type>& fvm = tfvm.ref(); fvMatrix<Type>& fvm = tfvm.ref();
scalar rDtCoef = rDtCoef_(ddt0).value(); const scalar rDtCoef = rDtCoef_(ddt0).value();
fvm.diag() = rDtCoef*mesh().V(); fvm.diag() = rDtCoef*mesh().V();
vf.oldTime().oldTime(); vf.oldTime().oldTime();
@ -782,7 +782,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -855,7 +855,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
); );
fvMatrix<Type>& fvm = tfvm.ref(); fvMatrix<Type>& fvm = tfvm.ref();
scalar rDtCoef = rDtCoef_(ddt0).value(); const scalar rDtCoef = rDtCoef_(ddt0).value();
fvm.diag() = rDtCoef*rho.value()*mesh().V(); fvm.diag() = rDtCoef*rho.value()*mesh().V();
vf.oldTime().oldTime(); vf.oldTime().oldTime();
@ -864,7 +864,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -937,7 +937,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
); );
fvMatrix<Type>& fvm = tfvm.ref(); fvMatrix<Type>& fvm = tfvm.ref();
scalar rDtCoef = rDtCoef_(ddt0).value(); const scalar rDtCoef = rDtCoef_(ddt0).value();
fvm.diag() = rDtCoef*rho.primitiveField()*mesh().V(); fvm.diag() = rDtCoef*rho.primitiveField()*mesh().V();
vf.oldTime().oldTime(); vf.oldTime().oldTime();
@ -947,7 +947,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -1028,7 +1028,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
); );
fvMatrix<Type>& fvm = tfvm.ref(); fvMatrix<Type>& fvm = tfvm.ref();
scalar rDtCoef = rDtCoef_(ddt0).value(); const scalar rDtCoef = rDtCoef_(ddt0).value();
fvm.diag() = rDtCoef*alpha.primitiveField()*rho.primitiveField()*mesh().V(); fvm.diag() = rDtCoef*alpha.primitiveField()*rho.primitiveField()*mesh().V();
vf.oldTime().oldTime(); vf.oldTime().oldTime();
@ -1039,7 +1039,7 @@ CrankNicolsonDdtScheme<Type>::fvmDdt
{ {
if (evaluate(ddt0)) if (evaluate(ddt0))
{ {
scalar rDtCoef0 = rDtCoef0_(ddt0).value(); const scalar rDtCoef0 = rDtCoef0_(ddt0).value();
ddt0.primitiveFieldRef() = ddt0.primitiveFieldRef() =
( (
@ -1124,14 +1124,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr
DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 =
ddt0_<GeometricField<Type, fvPatchField, volMesh>> ddt0_<GeometricField<Type, fvPatchField, volMesh>>
( (
"ddt0(" + U.name() + ')', "ddtCorrDdt0(" + U.name() + ')',
U.dimensions() U.dimensions()
); );
DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh>>& dUfdt0 = DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh>>& dUfdt0 =
ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh>> ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh>>
( (
"ddt0(" + Uf.name() + ')', "ddtCorrDdt0(" + Uf.name() + ')',
Uf.dimensions() Uf.dimensions()
); );
@ -1185,14 +1185,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 =
ddt0_<GeometricField<Type, fvPatchField, volMesh>> ddt0_<GeometricField<Type, fvPatchField, volMesh>>
( (
"ddt0(" + U.name() + ')', "ddtCorrDdt0(" + U.name() + ')',
U.dimensions() U.dimensions()
); );
DDt0Field<fluxFieldType>& dphidt0 = DDt0Field<fluxFieldType>& dphidt0 =
ddt0_<fluxFieldType> ddt0_<fluxFieldType>
( (
"ddt0(" + phi.name() + ')', "ddtCorrDdt0(" + phi.name() + ')',
phi.dimensions() phi.dimensions()
); );
@ -1254,14 +1254,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr
DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 =
ddt0_<GeometricField<Type, fvPatchField, volMesh>> ddt0_<GeometricField<Type, fvPatchField, volMesh>>
( (
"ddt0(" + rho.name() + ',' + U.name() + ')', "ddtCorrDdt0(" + rho.name() + ',' + U.name() + ')',
U.dimensions() U.dimensions()
); );
DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh>>& dUfdt0 = DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh>>& dUfdt0 =
ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh>> ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh>>
( (
"ddt0(" + Uf.name() + ')', "ddtCorrDdt0(" + Uf.name() + ')',
Uf.dimensions() Uf.dimensions()
); );
@ -1349,14 +1349,14 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 = DDt0Field<GeometricField<Type, fvPatchField, volMesh>>& ddt0 =
ddt0_<GeometricField<Type, fvPatchField, volMesh>> ddt0_<GeometricField<Type, fvPatchField, volMesh>>
( (
"ddt0(" + rho.name() + ',' + U.name() + ')', "ddtCorrDdt0(" + rho.name() + ',' + U.name() + ')',
U.dimensions() U.dimensions()
); );
DDt0Field<fluxFieldType>& dphidt0 = DDt0Field<fluxFieldType>& dphidt0 =
ddt0_<fluxFieldType> ddt0_<fluxFieldType>
( (
"ddt0(" + phi.name() + ')', "ddtCorrDdt0(" + phi.name() + ')',
phi.dimensions() phi.dimensions()
); );

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -198,7 +198,10 @@ public:
: :
ddtScheme<Type>(mesh), ddtScheme<Type>(mesh),
ocCoeff_(1.0) ocCoeff_(1.0)
{} {
// Ensure the old-old-time cell volumes are available
mesh.V00();
}
//- Construct from mesh and Istream //- Construct from mesh and Istream
CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is) CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is)
@ -215,6 +218,9 @@ public:
<< " should be >= 0 and <= 1" << " should be >= 0 and <= 1"
<< exit(FatalIOError); << exit(FatalIOError);
} }
// Ensure the old-old-time cell volumes are available
mesh.V00();
} }

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -89,13 +89,19 @@ public:
backwardDdtScheme(const fvMesh& mesh) backwardDdtScheme(const fvMesh& mesh)
: :
ddtScheme<Type>(mesh) ddtScheme<Type>(mesh)
{} {
// Ensure the old-old-time cell volumes are available
mesh.V00();
}
//- Construct from mesh and Istream //- Construct from mesh and Istream
backwardDdtScheme(const fvMesh& mesh, Istream& is) backwardDdtScheme(const fvMesh& mesh, Istream& is)
: :
ddtScheme<Type>(mesh, is) ddtScheme<Type>(mesh, is)
{} {
// Ensure the old-old-time cell volumes are available
mesh.V00();
}
// Member Functions // Member Functions