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

View File

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

View File

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

View File

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

View File

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

View File

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