CrankNicolsonDdtScheme: Changed ddtCorr from a basic Euler scheme to include the Crank-Nicolson correction

Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1468
This commit is contained in:
Henry
2014-12-28 12:53:56 +00:00
parent cd405fd369
commit c39f95b361
6 changed files with 316 additions and 485 deletions

View File

@ -598,13 +598,6 @@ CoEulerDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT())); const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
fluxFieldType phiCorr fluxFieldType phiCorr
@ -616,7 +609,12 @@ CoEulerDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
U.oldTime(), U.oldTime(),
@ -637,13 +635,6 @@ CoEulerDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT())); const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
fluxFieldType phiCorr fluxFieldType phiCorr
@ -655,7 +646,12 @@ CoEulerDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -672,21 +668,14 @@ CoEulerDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& Uf.dimensions() == dimDensity*dimVelocity && Uf.dimensions() == dimDensity*dimVelocity
) )
{ {
const surfaceScalarField rDeltaT(fvc::interpolate(CorDeltaT()));
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -701,7 +690,13 @@ CoEulerDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
rhoU0, rhoU0,
@ -718,25 +713,7 @@ CoEulerDdtScheme<Type>::fvcDdtUfCorr
&& Uf.dimensions() == dimDensity*dimVelocity && Uf.dimensions() == dimDensity*dimVelocity
) )
{ {
fluxFieldType phiCorr return fvcDdtUfCorr(U, Uf);
(
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff
(
U.oldTime(),
mesh().Sf() & Uf.oldTime(),
phiCorr
)
*rDeltaT*phiCorr
)
);
} }
else else
{ {
@ -760,21 +737,14 @@ CoEulerDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -789,7 +759,13 @@ CoEulerDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -801,20 +777,7 @@ CoEulerDdtScheme<Type>::fvcDdtPhiCorr
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
fluxFieldType phiCorr return fvcDdtPhiCorr(U, phi);
(
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr
)
);
} }
else else
{ {

View File

@ -1130,32 +1130,47 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr
U.dimensions() U.dimensions()
); );
dimensionedScalar rDeltaT = rDtCoef_(ddt0); DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh> >& dUfdt0 =
ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh> >
IOobject ddtIOobject
( (
"ddtCorr(" + U.name() + ',' + Uf.name() + ')', "ddt0(" + Uf.name() + ')',
mesh().time().timeName(), Uf.dimensions()
mesh()
); );
fluxFieldType phiCorr dimensionedScalar rDtCoef = rDtCoef_(ddt0);
(
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime())) if (evaluate(ddt0))
); {
ddt0 =
rDtCoef0_(ddt0)*(U.oldTime() - U.oldTime().oldTime())
- offCentre_(ddt0());
}
if (evaluate(dUfdt0))
{
dUfdt0 =
rDtCoef0_(dUfdt0)*(Uf.oldTime() - Uf.oldTime().oldTime())
- offCentre_(dUfdt0());
}
return tmp<fluxFieldType> return tmp<fluxFieldType>
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
this->fvcDdtPhiCoeff
( (
U.oldTime(), "ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().Sf() & Uf.oldTime(), mesh().time().timeName(),
phiCorr mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), mesh().Sf() & Uf.oldTime())
*(
mesh().Sf()
& (
(rDtCoef*Uf.oldTime() + offCentre_(dUfdt0()))
- fvc::interpolate(rDtCoef*U.oldTime() + offCentre_(ddt0()))
)
) )
*rDeltaT*phiCorr
) )
); );
} }
@ -1176,27 +1191,47 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
U.dimensions() U.dimensions()
); );
dimensionedScalar rDeltaT = rDtCoef_(ddt0); DDt0Field<fluxFieldType>& dphidt0 =
ddt0_<fluxFieldType>
IOobject ddtIOobject
( (
"ddtCorr(" + U.name() + ',' + phi.name() + ')', "ddt0(" + phi.name() + ')',
mesh().time().timeName(), phi.dimensions()
mesh()
); );
fluxFieldType phiCorr dimensionedScalar rDtCoef = rDtCoef_(ddt0);
(
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime())) if (evaluate(ddt0))
); {
ddt0 =
rDtCoef0_(ddt0)*(U.oldTime() - U.oldTime().oldTime())
- offCentre_(ddt0());
}
if (evaluate(dphidt0))
{
dphidt0 =
rDtCoef0_(dphidt0)*(phi.oldTime() - phi.oldTime().oldTime())
- offCentre_(dphidt0());
}
return tmp<fluxFieldType> return tmp<fluxFieldType>
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr) (
*rDeltaT*phiCorr "ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime())
*(
(rDtCoef*phi.oldTime() + offCentre_(dphidt0()))
- (
mesh().Sf()
& fvc::interpolate(rDtCoef*U.oldTime() + offCentre_(ddt0()))
)
)
) )
); );
} }
@ -1211,13 +1246,6 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
@ -1231,30 +1259,55 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr
U.dimensions() U.dimensions()
); );
dimensionedScalar rDeltaT = rDtCoef_(ddt0); DDt0Field<GeometricField<Type, fvsPatchField, surfaceMesh> >& dUfdt0 =
ddt0_<GeometricField<Type, fvsPatchField, surfaceMesh> >
(
"ddt0(" + Uf.name() + ')',
Uf.dimensions()
);
dimensionedScalar rDtCoef = rDtCoef_(ddt0);
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
); );
fluxFieldType phiCorr if (evaluate(ddt0))
( {
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(rhoU0)) ddt0 =
); rDtCoef0_(ddt0)
*(rhoU0 - rho.oldTime().oldTime()*U.oldTime().oldTime())
- offCentre_(ddt0());
}
if (evaluate(dUfdt0))
{
dUfdt0 =
rDtCoef0_(dUfdt0)
*(Uf.oldTime() - Uf.oldTime().oldTime())
- offCentre_(dUfdt0());
}
tmp<fluxFieldType> ddtCorr tmp<fluxFieldType> ddtCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
this->fvcDdtPhiCoeff
( (
rhoU0, "ddtCorr("
mesh().Sf() & Uf.oldTime(), + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
phiCorr mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, mesh().Sf() & Uf.oldTime())
*(
mesh().Sf()
& (
(rDtCoef*Uf.oldTime() + offCentre_(dUfdt0()))
- fvc::interpolate(rDtCoef*rhoU0 + offCentre_(ddt0()))
)
) )
*rDeltaT*phiCorr
) )
); );
@ -1266,36 +1319,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr
&& Uf.dimensions() == rho.dimensions()*dimVelocity && Uf.dimensions() == rho.dimensions()*dimVelocity
) )
{ {
DDt0Field<GeometricField<Type, fvPatchField, volMesh> >& ddt0 = return fvcDdtUfCorr(U, Uf);
ddt0_<GeometricField<Type, fvPatchField, volMesh> >
(
"ddt0(" + U.name() + ')',
U.dimensions()
);
dimensionedScalar rDeltaT = rDtCoef_(ddt0);
fluxFieldType phiCorr
(
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
);
tmp<fluxFieldType> ddtCorr
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff
(
U.oldTime(),
mesh().Sf() & Uf.oldTime(),
phiCorr
)
*rDeltaT*phiCorr
)
);
return ddtCorr;
} }
else else
{ {
@ -1319,13 +1343,6 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
@ -1339,25 +1356,55 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
U.dimensions() U.dimensions()
); );
dimensionedScalar rDeltaT = rDtCoef_(ddt0); DDt0Field<fluxFieldType>& dphidt0 =
ddt0_<fluxFieldType>
(
"ddt0(" + phi.name() + ')',
phi.dimensions()
);
dimensionedScalar rDtCoef = rDtCoef_(ddt0);
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
); );
fluxFieldType phiCorr if (evaluate(ddt0))
( {
phi.oldTime() - (mesh().Sf() & fvc::interpolate(rhoU0)) ddt0 =
); rDtCoef0_(ddt0)
*(rhoU0 - rho.oldTime().oldTime()*U.oldTime().oldTime())
- offCentre_(ddt0());
}
if (evaluate(dphidt0))
{
dphidt0 =
rDtCoef0_(dphidt0)
*(phi.oldTime() - phi.oldTime().oldTime())
- offCentre_(dphidt0());
}
tmp<fluxFieldType> ddtCorr tmp<fluxFieldType> ddtCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr) (
*rDeltaT*phiCorr "ddtCorr("
+ rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime())
*(
(rDtCoef*phi.oldTime() + offCentre_(dphidt0()))
- (
mesh().Sf()
& fvc::interpolate(rDtCoef*rhoU0 + offCentre_(ddt0()))
)
)
) )
); );
@ -1369,31 +1416,7 @@ CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
DDt0Field<GeometricField<Type, fvPatchField, volMesh> >& ddt0 = return fvcDdtPhiCorr(U, phi);
ddt0_<GeometricField<Type, fvPatchField, volMesh> >
(
"ddt0(" + U.name() + ')',
U.dimensions()
);
dimensionedScalar rDeltaT = rDtCoef_(ddt0);
fluxFieldType phiCorr
(
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
);
tmp<fluxFieldType> ddtCorr
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr
)
);
return ddtCorr;
} }
else else
{ {

View File

@ -489,13 +489,6 @@ EulerDdtScheme<Type>::fvcDdtUfCorr
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
fluxFieldType phiCorr fluxFieldType phiCorr
( (
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime())) mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
@ -505,7 +498,12 @@ EulerDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
U.oldTime(), U.oldTime(),
@ -528,13 +526,6 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
fluxFieldType phiCorr fluxFieldType phiCorr
( (
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime())) phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
@ -544,7 +535,12 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -561,21 +557,14 @@ EulerDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& Uf.dimensions() == rho.dimensions()*dimVelocity && Uf.dimensions() == rho.dimensions()*dimVelocity
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -590,7 +579,13 @@ EulerDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
rhoU0, rhoU0,
@ -607,25 +602,7 @@ EulerDdtScheme<Type>::fvcDdtUfCorr
&& Uf.dimensions() == rho.dimensions()*dimVelocity && Uf.dimensions() == rho.dimensions()*dimVelocity
) )
{ {
fluxFieldType phiCorr return fvcDdtUfCorr(U, Uf);
(
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff
(
U.oldTime(),
mesh().Sf() & Uf.oldTime(),
phiCorr
)
*rDeltaT*phiCorr
)
);
} }
else else
{ {
@ -649,21 +626,14 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -678,7 +648,13 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -690,20 +666,7 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
fluxFieldType phiCorr return fvcDdtPhiCorr(U, phi);
(
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr
)
);
} }
else else
{ {

View File

@ -600,13 +600,6 @@ SLTSDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(SLrDeltaT())); const surfaceScalarField rDeltaT(fvc::interpolate(SLrDeltaT()));
fluxFieldType phiCorr fluxFieldType phiCorr
@ -618,7 +611,12 @@ SLTSDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
U.oldTime(), U.oldTime(),
@ -639,13 +637,6 @@ SLTSDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(SLrDeltaT())); const surfaceScalarField rDeltaT(fvc::interpolate(SLrDeltaT()));
fluxFieldType phiCorr fluxFieldType phiCorr
@ -657,7 +648,12 @@ SLTSDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -674,21 +670,14 @@ SLTSDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(SLrDeltaT()));
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& Uf.dimensions() == dimDensity*dimVelocity && Uf.dimensions() == dimDensity*dimVelocity
) )
{ {
const surfaceScalarField rDeltaT(fvc::interpolate(SLrDeltaT()));
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -703,7 +692,13 @@ SLTSDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
rhoU0, rhoU0,
@ -720,25 +715,7 @@ SLTSDdtScheme<Type>::fvcDdtUfCorr
&& Uf.dimensions() == dimDensity*dimVelocity && Uf.dimensions() == dimDensity*dimVelocity
) )
{ {
fluxFieldType phiCorr return fvcDdtUfCorr(U, Uf);
(
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff
(
U.oldTime(),
mesh().Sf() & Uf.oldTime(),
phiCorr
)
*rDeltaT*phiCorr
)
);
} }
else else
{ {
@ -762,21 +739,14 @@ SLTSDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -791,7 +761,13 @@ SLTSDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -803,20 +779,7 @@ SLTSDdtScheme<Type>::fvcDdtPhiCorr
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
fluxFieldType phiCorr return fvcDdtPhiCorr(U, phi);
(
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr
)
);
} }
else else
{ {

View File

@ -683,13 +683,6 @@ backwardDdtScheme<Type>::fvcDdtUfCorr
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
scalar deltaT = deltaT_(); scalar deltaT = deltaT_();
scalar deltaT0 = deltaT0_(U); scalar deltaT0 = deltaT0_(U);
@ -701,7 +694,12 @@ backwardDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), (mesh().Sf() & Uf.oldTime())) this->fvcDdtPhiCoeff(U.oldTime(), (mesh().Sf() & Uf.oldTime()))
*rDeltaT *rDeltaT
*( *(
@ -729,13 +727,6 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
scalar deltaT = deltaT_(); scalar deltaT = deltaT_();
scalar deltaT0 = deltaT0_(U); scalar deltaT0 = deltaT0_(U);
@ -747,7 +738,12 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime()) this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime())
*rDeltaT *rDeltaT
*( *(
@ -774,14 +770,13 @@ backwardDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); if
IOobject ddtIOobject
( (
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + Uf.name() + ')', U.dimensions() == dimVelocity
mesh().time().timeName(), && Uf.dimensions() == rho.dimensions()*dimVelocity
mesh() )
); {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
scalar deltaT = deltaT_(); scalar deltaT = deltaT_();
scalar deltaT0 = deltaT0_(U); scalar deltaT0 = deltaT0_(U);
@ -790,12 +785,6 @@ backwardDdtScheme<Type>::fvcDdtUfCorr
scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0)); scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
scalar coefft0 = coefft + coefft00; scalar coefft0 = coefft + coefft00;
if
(
U.dimensions() == dimVelocity
&& Uf.dimensions() == rho.dimensions()*dimVelocity
)
{
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -810,7 +799,13 @@ backwardDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, mesh().Sf() & Uf.oldTime()) this->fvcDdtPhiCoeff(rhoU0, mesh().Sf() & Uf.oldTime())
*rDeltaT *rDeltaT
*( *(
@ -829,26 +824,7 @@ backwardDdtScheme<Type>::fvcDdtUfCorr
&& Uf.dimensions() == rho.dimensions()*dimVelocity && Uf.dimensions() == rho.dimensions()*dimVelocity
) )
{ {
return fvcDdtUfCorr(U, Uf);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), mesh().Sf() & Uf.oldTime())
*rDeltaT
*(
mesh().Sf()
& (
(coefft0*Uf.oldTime() - coefft00*Uf.oldTime().oldTime())
- fvc::interpolate
(
coefft0*U.oldTime() - coefft00*U.oldTime().oldTime()
)
)
)
)
);
} }
else else
{ {
@ -872,14 +848,13 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); if
IOobject ddtIOobject
( (
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + phi.name() + ')', U.dimensions() == dimVelocity
mesh().time().timeName(), && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
mesh() )
); {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
scalar deltaT = deltaT_(); scalar deltaT = deltaT_();
scalar deltaT0 = deltaT0_(U); scalar deltaT0 = deltaT0_(U);
@ -888,12 +863,6 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0)); scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0));
scalar coefft0 = coefft + coefft00; scalar coefft0 = coefft + coefft00;
if
(
U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
)
{
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -908,7 +877,13 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime()) this->fvcDdtPhiCoeff(rhoU0, phi.oldTime())
*rDeltaT *rDeltaT
*( *(
@ -927,26 +902,7 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
return fvcDdtPhiCorr(U, phi);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime())
*rDeltaT
*(
(coefft0*phi.oldTime() - coefft00*phi.oldTime().oldTime())
- (
mesh().Sf()
& fvc::interpolate
(
coefft0*U.oldTime() - coefft00*U.oldTime().oldTime()
)
)
)
)
);
} }
else else
{ {

View File

@ -495,13 +495,6 @@ localEulerDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(localRDeltaT())); const surfaceScalarField rDeltaT(fvc::interpolate(localRDeltaT()));
fluxFieldType phiCorr fluxFieldType phiCorr
@ -513,7 +506,12 @@ localEulerDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
U.oldTime(), U.oldTime(),
@ -534,13 +532,6 @@ localEulerDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(localRDeltaT())); const surfaceScalarField rDeltaT(fvc::interpolate(localRDeltaT()));
fluxFieldType phiCorr fluxFieldType phiCorr
@ -552,7 +543,12 @@ localEulerDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr(" + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -569,21 +565,14 @@ localEulerDdtScheme<Type>::fvcDdtUfCorr
const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf const GeometricField<Type, fvsPatchField, surfaceMesh>& Uf
) )
{ {
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
);
const surfaceScalarField rDeltaT(fvc::interpolate(localRDeltaT()));
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& Uf.dimensions() == dimDensity*dimVelocity && Uf.dimensions() == dimDensity*dimVelocity
) )
{ {
const surfaceScalarField rDeltaT(fvc::interpolate(localRDeltaT()));
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -598,7 +587,13 @@ localEulerDdtScheme<Type>::fvcDdtUfCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + Uf.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff this->fvcDdtPhiCoeff
( (
rhoU0, rhoU0,
@ -615,25 +610,7 @@ localEulerDdtScheme<Type>::fvcDdtUfCorr
&& Uf.dimensions() == dimDensity*dimVelocity && Uf.dimensions() == dimDensity*dimVelocity
) )
{ {
fluxFieldType phiCorr return fvcDdtUfCorr(U, Uf);
(
mesh().Sf() & (Uf.oldTime() - fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff
(
U.oldTime(),
mesh().Sf() & Uf.oldTime(),
phiCorr
)
*rDeltaT*phiCorr
)
);
} }
else else
{ {
@ -657,21 +634,14 @@ localEulerDdtScheme<Type>::fvcDdtPhiCorr
const fluxFieldType& phi const fluxFieldType& phi
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtCorr(" + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
);
if if
( (
U.dimensions() == dimVelocity U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
GeometricField<Type, fvPatchField, volMesh> rhoU0 GeometricField<Type, fvPatchField, volMesh> rhoU0
( (
rho.oldTime()*U.oldTime() rho.oldTime()*U.oldTime()
@ -686,7 +656,13 @@ localEulerDdtScheme<Type>::fvcDdtPhiCorr
( (
new fluxFieldType new fluxFieldType
( (
ddtIOobject, IOobject
(
"ddtCorr("
+ rho.name() + ',' + U.name() + ',' + phi.name() + ')',
mesh().time().timeName(),
mesh()
),
this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr) this->fvcDdtPhiCoeff(rhoU0, phi.oldTime(), phiCorr)
*rDeltaT*phiCorr *rDeltaT*phiCorr
) )
@ -698,20 +674,7 @@ localEulerDdtScheme<Type>::fvcDdtPhiCorr
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea && phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
) )
{ {
fluxFieldType phiCorr return fvcDdtPhiCorr(U, phi);
(
phi.oldTime() - (mesh().Sf() & fvc::interpolate(U.oldTime()))
);
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
this->fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr)
*rDeltaT*phiCorr
)
);
} }
else else
{ {