Merge branch 'master' of /home/noisy2/OpenFOAM/OpenFOAM-dev/

This commit is contained in:
andy
2008-05-09 13:04:42 +01:00
6 changed files with 253 additions and 312 deletions

View File

@ -75,6 +75,9 @@ int main(int argc, char *argv[])
# include "correctPhi.H"
}
// Keep the absolute fluxes for use in ddtPhiCorr
surfaceScalarField phiAbs("phiAbs", phi);
// Make the fluxes relative to the mesh motion
fvc::makeRelative(phi, U);
@ -95,7 +98,11 @@ int main(int argc, char *argv[])
U = rAU*UEqn.H();
phi = (fvc::interpolate(U) & mesh.Sf());
//+ fvc::ddtPhiCorr(rAU, U, phi);
if (ddtPhiCorr)
{
phi += fvc::ddtPhiCorr(rAU, U, phiAbs);
}
adjustPhi(phi, U, p);

View File

@ -74,7 +74,7 @@ int main(int argc, char *argv[])
Info<< "Time = " << runTime.timeName() << nl << endl;
// Make the fluxes absolute
if (mesh.changing() && correctPhi)
if (mesh.changing())
{
fvc::makeAbsolute(phi, U);
}
@ -99,8 +99,11 @@ int main(int argc, char *argv[])
#include "correctPhi.H"
}
// Keep the absolute fluxes for use in ddtPhiCorr
surfaceScalarField phiAbs("phiAbs", phi);
// Make the fluxes relative to the mesh motion
if (mesh.changing() && correctPhi)
if (mesh.changing())
{
fvc::makeRelative(phi, U);
}

View File

@ -5,12 +5,12 @@
volVectorField HU = UEqn.H();
U = rAU*HU;
surfaceScalarField phiU
(
"phiU",
(fvc::interpolate(U) & mesh.Sf())
//+ fvc::ddtPhiCorr(rAU, rho, U, phiAbs)
);
surfaceScalarField phiU("phiU", (fvc::interpolate(U) & mesh.Sf()));
if (ddtPhiCorr)
{
phiU += fvc::ddtPhiCorr(rAU, rho, U, phiAbs);
}
phi = phiU +
(

View File

@ -25,3 +25,9 @@
{
nOuterCorr = readInt(piso.lookup("nOuterCorrectors"));
}
bool ddtPhiCorr = false;
if (piso.found("ddtPhiCorr"))
{
ddtPhiCorr = Switch(piso.lookup("ddtPhiCorr"));
}

View File

@ -1,4 +1,4 @@
/*---------------------------------------------------------------------------*\
/*---------------------------------------------------------------------------* \
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
@ -375,50 +375,30 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
(
const volScalarField& rA,
const GeometricField<Type, fvPatchField, volMesh>& U,
const fluxFieldType& phi
const fluxFieldType& phiAbs
)
{
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
IOobject ddtIOobject
(
"ddtPhiCorr(" + rA.name() + ',' + U.name() + ',' + phi.name() + ')',
"ddtPhiCorr(" + rA.name() + ',' + U.name() + ',' + phiAbs.name() + ')',
mesh().time().timeName(),
mesh()
);
if (mesh().moving())
{
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
mesh(),
dimensioned<typename flux<Type>::type>
(
"0",
rDeltaT.dimensions()*rA.dimensions()*phi.dimensions(),
pTraits<typename flux<Type>::type>::zero
)
)
);
}
else
{
tmp<fluxFieldType> phiCorr =
phi.oldTime() - (fvc::interpolate(U.oldTime()) & mesh().Sf());
phiAbs.oldTime() - (fvc::interpolate(U.oldTime()) & mesh().Sf());
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
fvcDdtPhiCoeff(U.oldTime(), phi.oldTime(), phiCorr())
fvcDdtPhiCoeff(U.oldTime(), phiAbs.oldTime(), phiCorr())
*fvc::interpolate(rDeltaT*rA)*phiCorr
)
);
}
}
@ -429,7 +409,7 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
const volScalarField& rA,
const volScalarField& rho,
const GeometricField<Type, fvPatchField, volMesh>& U,
const fluxFieldType& phi
const fluxFieldType& phiAbs
)
{
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
@ -437,35 +417,18 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
IOobject ddtIOobject
(
"ddtPhiCorr("
+ rA.name() + ',' + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
+ rA.name() + ','
+ rho.name() + ','
+ U.name() + ','
+ phiAbs.name() + ')',
mesh().time().timeName(),
mesh()
);
if (mesh().moving())
{
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
mesh(),
dimensioned<typename flux<Type>::type>
(
"0",
rDeltaT.dimensions()*rA.dimensions()
*rho.dimensions()*phi.dimensions(),
pTraits<typename flux<Type>::type>::zero
)
)
);
}
else
{
if
(
U.dimensions() == dimVelocity
&& phi.dimensions() == dimVelocity*dimArea
&& phiAbs.dimensions() == dimVelocity*dimArea
)
{
return tmp<fluxFieldType>
@ -473,9 +436,10 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
new fluxFieldType
(
ddtIOobject,
rDeltaT*fvcDdtPhiCoeff(U.oldTime(), phi.oldTime())
rDeltaT
*fvcDdtPhiCoeff(U.oldTime(), phiAbs.oldTime())
*(
fvc::interpolate(rA*rho.oldTime())*phi.oldTime()
fvc::interpolate(rA*rho.oldTime())*phiAbs.oldTime()
- (fvc::interpolate(rA*rho.oldTime()*U.oldTime())
& mesh().Sf())
)
@ -485,7 +449,7 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
else if
(
U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
&& phiAbs.dimensions() == rho.dimensions()*dimVelocity*dimArea
)
{
return tmp<fluxFieldType>
@ -497,11 +461,11 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
*fvcDdtPhiCoeff
(
U.oldTime(),
phi.oldTime()/fvc::interpolate(rho.oldTime())
phiAbs.oldTime()/fvc::interpolate(rho.oldTime())
)
*(
fvc::interpolate(rA*rho.oldTime())
*phi.oldTime()/fvc::interpolate(rho.oldTime())
*phiAbs.oldTime()/fvc::interpolate(rho.oldTime())
- (
fvc::interpolate
(
@ -515,7 +479,7 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
else if
(
U.dimensions() == rho.dimensions()*dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
&& phiAbs.dimensions() == rho.dimensions()*dimVelocity*dimArea
)
{
return tmp<fluxFieldType>
@ -524,9 +488,9 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
(
ddtIOobject,
rDeltaT
*fvcDdtPhiCoeff(rho.oldTime(), U.oldTime(), phi.oldTime())
*fvcDdtPhiCoeff(rho.oldTime(), U.oldTime(), phiAbs.oldTime())
*(
fvc::interpolate(rA)*phi.oldTime()
fvc::interpolate(rA)*phiAbs.oldTime()
- (fvc::interpolate(rA*U.oldTime()) & mesh().Sf())
)
)
@ -537,12 +501,11 @@ EulerDdtScheme<Type>::fvcDdtPhiCorr
FatalErrorIn
(
"EulerDdtScheme<Type>::fvcDdtPhiCorr"
) << "dimensions of phi are not correct"
) << "dimensions of phiAbs are not correct"
<< abort(FatalError);
return fluxFieldType::null();
}
}
}

View File

@ -531,25 +531,6 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
mesh()
);
if (mesh().moving())
{
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
mesh(),
dimensioned<typename flux<Type>::type>
(
"0",
rDeltaT.dimensions()*rA.dimensions()*phi.dimensions(),
pTraits<typename flux<Type>::type>::zero
)
)
);
}
else
{
scalar deltaT = deltaT_();
scalar deltaT0 = deltaT0_(U);
@ -582,7 +563,6 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
)
)
);
}
}
@ -593,7 +573,7 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
const volScalarField& rA,
const volScalarField& rho,
const GeometricField<Type, fvPatchField, volMesh>& U,
const fluxFieldType& phi
const fluxFieldType& phiAbs
)
{
dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT();
@ -601,31 +581,14 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
IOobject ddtIOobject
(
"ddtPhiCorr("
+ rA.name() + ',' + rho.name() + ',' + U.name() + ',' + phi.name() + ')',
+ rA.name() + ','
+ rho.name() + ','
+ U.name() + ','
+ phiAbs.name() + ')',
mesh().time().timeName(),
mesh()
);
if (mesh().moving())
{
return tmp<fluxFieldType>
(
new fluxFieldType
(
ddtIOobject,
mesh(),
dimensioned<typename flux<Type>::type>
(
"0",
rDeltaT.dimensions()*rA.dimensions()
*rho.dimensions()*phi.dimensions(),
pTraits<typename flux<Type>::type>::zero
)
)
);
}
else
{
scalar deltaT = deltaT_();
scalar deltaT0 = deltaT0_(U);
@ -636,7 +599,7 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
if
(
U.dimensions() == dimVelocity
&& phi.dimensions() == dimVelocity*dimArea
&& phiAbs.dimensions() == dimVelocity*dimArea
)
{
return tmp<fluxFieldType>
@ -644,12 +607,12 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
new fluxFieldType
(
ddtIOobject,
rDeltaT*fvcDdtPhiCoeff(U.oldTime(), phi.oldTime())
rDeltaT*fvcDdtPhiCoeff(U.oldTime(), phiAbs.oldTime())
*(
coefft0*fvc::interpolate(rA*rho.oldTime())
*phi.oldTime()
*phiAbs.oldTime()
- coefft00*fvc::interpolate(rA*rho.oldTime().oldTime())
*phi.oldTime().oldTime()
*phiAbs.oldTime().oldTime()
- (
fvc::interpolate
(
@ -668,7 +631,7 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
else if
(
U.dimensions() == dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
&& phiAbs.dimensions() == rho.dimensions()*dimVelocity*dimArea
)
{
return tmp<fluxFieldType>
@ -680,14 +643,14 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
*fvcDdtPhiCoeff
(
U.oldTime(),
phi.oldTime()/fvc::interpolate(rho.oldTime())
phiAbs.oldTime()/fvc::interpolate(rho.oldTime())
)
*(
fvc::interpolate(rA*rho.oldTime())
*(
coefft0*phi.oldTime()
coefft0*phiAbs.oldTime()
/fvc::interpolate(rho.oldTime())
- coefft00*phi.oldTime().oldTime()
- coefft00*phiAbs.oldTime().oldTime()
/fvc::interpolate(rho.oldTime().oldTime())
)
- (
@ -707,7 +670,7 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
else if
(
U.dimensions() == rho.dimensions()*dimVelocity
&& phi.dimensions() == rho.dimensions()*dimVelocity*dimArea
&& phiAbs.dimensions() == rho.dimensions()*dimVelocity*dimArea
)
{
return tmp<fluxFieldType>
@ -716,12 +679,12 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
(
ddtIOobject,
rDeltaT
*fvcDdtPhiCoeff(rho.oldTime(), U.oldTime(), phi.oldTime())
*fvcDdtPhiCoeff(rho.oldTime(), U.oldTime(), phiAbs.oldTime())
*(
fvc::interpolate(rA)
*(
coefft0*phi.oldTime()
- coefft00*phi.oldTime().oldTime()
coefft0*phiAbs.oldTime()
- coefft00*phiAbs.oldTime().oldTime()
)
- (
fvc::interpolate
@ -742,12 +705,11 @@ backwardDdtScheme<Type>::fvcDdtPhiCorr
FatalErrorIn
(
"backwardDdtScheme<Type>::fvcDdtPhiCorr"
) << "dimensions of phi are not correct"
) << "dimensions of phiAbs are not correct"
<< abort(FatalError);
return fluxFieldType::null();
}
}
}