mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
New Courant number now implemented in most solvers
CHT solvers still to do
This commit is contained in:
@ -34,17 +34,14 @@ Description
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
surfaceScalarField SfUfbyDelta =
|
||||
mesh.surfaceInterpolation::deltaCoeffs()
|
||||
*mag(phiSt/fvc::interpolate(rho));
|
||||
scalarField sumPhi =
|
||||
fvc::surfaceSum(mag(phiSt))().internalField()
|
||||
/rho.internalField();
|
||||
|
||||
StCoNum =
|
||||
max(SfUfbyDelta/mesh.magSf()).value()
|
||||
*runTime.deltaTValue();
|
||||
StCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanStCoNum =
|
||||
(sum(SfUfbyDelta)/sum(mesh.magSf())).value()
|
||||
*runTime.deltaTValue();
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "St courant Number mean: " << meanStCoNum
|
||||
|
||||
@ -30,10 +30,10 @@ Description
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
{
|
||||
scalar sumLocalContErr = runTime.deltaT().value()*
|
||||
scalar sumLocalContErr = runTime.deltaTValue()*
|
||||
mag(fvc::div(phia))().weightedAverage(mesh.V()).value();
|
||||
|
||||
scalar globalContErr = runTime.deltaT().value()*
|
||||
scalar globalContErr = runTime.deltaTValue()*
|
||||
fvc::div(phia)().weightedAverage(mesh.V()).value();
|
||||
cumulativeContErr += globalContErr;
|
||||
|
||||
|
||||
@ -36,23 +36,23 @@ scalar waveCoNum = 0.0;
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
surfaceScalarField SfUfbyDelta =
|
||||
mesh.surfaceInterpolation::deltaCoeffs()
|
||||
*mag(phi)/fvc::interpolate(h);
|
||||
scalarField sumPhi =
|
||||
fvc::surfaceSum(mag(phi))().internalField()
|
||||
/h.internalField();
|
||||
|
||||
CoNum = max(SfUfbyDelta/mesh.magSf())
|
||||
.value()*runTime.deltaTValue();
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf()))
|
||||
.value()*runTime.deltaTValue();
|
||||
meanCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
|
||||
// Gravity wave Courant number
|
||||
waveCoNum =
|
||||
0.5*max
|
||||
waveCoNum = 0.25*gMax
|
||||
(
|
||||
fvc::surfaceSum
|
||||
(
|
||||
mesh.surfaceInterpolation::deltaCoeffs()
|
||||
*sqrt(fvc::interpolate(h))
|
||||
).value()*sqrt(magg).value()*runTime.deltaTValue();
|
||||
fvc::interpolate(sqrt(h))*mesh.magSf()
|
||||
)().internalField()/mesh.V().field()
|
||||
)*sqrt(magg).value()*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Courant number mean: " << meanCoNum
|
||||
|
||||
@ -35,19 +35,21 @@ scalar acousticCoNum = 0.0;
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
surfaceScalarField SfUfbyDelta =
|
||||
mesh.surfaceInterpolation::deltaCoeffs()*mag(phiv);
|
||||
scalarField sumPhi =
|
||||
fvc::surfaceSum(mag(phiv))().internalField();
|
||||
|
||||
CoNum = max(SfUfbyDelta/mesh.magSf())
|
||||
.value()*runTime.deltaTValue();
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf()))
|
||||
.value()*runTime.deltaTValue();
|
||||
meanCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
|
||||
acousticCoNum = max
|
||||
acousticCoNum = 0.5*gMax
|
||||
(
|
||||
mesh.surfaceInterpolation::deltaCoeffs()/sqrt(fvc::interpolate(psi))
|
||||
).value()*runTime.deltaTValue();
|
||||
fvc::surfaceSum
|
||||
(
|
||||
fvc::interpolate(scalar(1)/sqrt(psi))*mesh.magSf()
|
||||
)().internalField()/mesh.V().field()
|
||||
)*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "phiv Courant Number mean: " << meanCoNum
|
||||
|
||||
@ -43,10 +43,10 @@ if (mesh.nInternalFaces())
|
||||
pos(alpha1 - 0.01)*pos(0.99 - alpha1)
|
||||
*fvc::surfaceSum(mag(phi))().internalField();
|
||||
|
||||
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaT().value();
|
||||
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanAlphaCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaT().value();
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Interface Courant Number mean: " << meanAlphaCoNum
|
||||
|
||||
@ -42,12 +42,12 @@ if (adjustTimeStep)
|
||||
(
|
||||
min
|
||||
(
|
||||
deltaTFact*runTime.deltaT().value(),
|
||||
deltaTFact*runTime.deltaTValue(),
|
||||
maxDeltaT
|
||||
)
|
||||
);
|
||||
|
||||
Info<< "deltaT = " << runTime.deltaT().value() << endl;
|
||||
Info<< "deltaT = " << runTime.deltaTValue() << endl;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -39,20 +39,16 @@ scalar meanAlphaCoNum = 0.0;
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
surfaceScalarField alpha1f = fvc::interpolate(alpha1);
|
||||
surfaceScalarField alpha2f = fvc::interpolate(alpha2);
|
||||
|
||||
surfaceScalarField SfUfbyDelta = max
|
||||
scalarField sumPhi = max
|
||||
(
|
||||
pos(alpha1f - 0.01)*pos(0.99 - alpha1f),
|
||||
pos(alpha2f - 0.01)*pos(0.99 - alpha2f)
|
||||
)*mesh.surfaceInterpolation::deltaCoeffs()*mag(phi);
|
||||
pos(alpha1 - 0.01)*pos(0.99 - alpha1),
|
||||
pos(alpha2 - 0.01)*pos(0.99 - alpha2)
|
||||
)*fvc::surfaceSum(mag(phi))().internalField();
|
||||
|
||||
alphaCoNum = max(SfUfbyDelta/mesh.magSf())
|
||||
.value()*runTime.deltaT().value();
|
||||
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanAlphaCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf()))
|
||||
.value()*runTime.deltaT().value();
|
||||
meanAlphaCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Interface Courant Number mean: " << meanAlphaCoNum
|
||||
|
||||
@ -39,15 +39,14 @@ scalar meanAlphaCoNum = 0.0;
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
surfaceScalarField SfUfbyDelta =
|
||||
mixture.nearInterface()
|
||||
*mesh.surfaceInterpolation::deltaCoeffs()*mag(phi);
|
||||
scalarField sumPhi =
|
||||
mixture.nearInterface()().internalField()
|
||||
*fvc::surfaceSum(mag(phi))().internalField();
|
||||
|
||||
alphaCoNum = max(SfUfbyDelta/mesh.magSf())
|
||||
.value()*runTime.deltaT().value();
|
||||
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanAlphaCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf()))
|
||||
.value()*runTime.deltaT().value();
|
||||
meanAlphaCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Interface Courant Number mean: " << meanAlphaCoNum
|
||||
|
||||
@ -457,12 +457,12 @@ Foam::tmp<Foam::volScalarField> Foam::multiphaseMixture::K
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::surfaceScalarField>
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::multiphaseMixture::nearInterface() const
|
||||
{
|
||||
tmp<surfaceScalarField> tnearInt
|
||||
tmp<volScalarField> tnearInt
|
||||
(
|
||||
new surfaceScalarField
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
@ -477,8 +477,7 @@ Foam::multiphaseMixture::nearInterface() const
|
||||
|
||||
forAllConstIter(PtrDictionary<phase>, phases_, iter)
|
||||
{
|
||||
surfaceScalarField alphaf = fvc::interpolate(iter());
|
||||
tnearInt() = max(tnearInt(), pos(alphaf - 0.01)*pos(0.99 - alphaf));
|
||||
tnearInt() = max(tnearInt(), pos(iter() - 0.01)*pos(0.99 - iter()));
|
||||
}
|
||||
|
||||
return tnearInt;
|
||||
|
||||
@ -258,7 +258,7 @@ public:
|
||||
|
||||
//- Indicator of the proximity of the interface
|
||||
// Field values are 1 near and 0 away for the interface.
|
||||
tmp<surfaceScalarField> nearInterface() const;
|
||||
tmp<volScalarField> nearInterface() const;
|
||||
|
||||
//- Solve for the mixture phase-fractions
|
||||
void solve();
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
# include "CourantNo.H"
|
||||
|
||||
{
|
||||
scalar UrCoNum = max
|
||||
scalar UrCoNum = 0.5*gMax
|
||||
(
|
||||
mesh.surfaceInterpolation::deltaCoeffs()*mag(phia - phib)
|
||||
/mesh.magSf()
|
||||
).value()*runTime.deltaT().value();
|
||||
fvc::surfaceSum(mag(phia - phib))().internalField()/mesh.V().field()
|
||||
)*runTime.deltaTValue();
|
||||
|
||||
Info<< "Max Ur Courant Number = " << UrCoNum << endl;
|
||||
|
||||
|
||||
@ -34,14 +34,13 @@ scalar meanMeshCoNum = 0.0;
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
surfaceScalarField SfUfbyDelta =
|
||||
mesh.surfaceInterpolation::deltaCoeffs()*mag(mesh.phi());
|
||||
scalarField sumPhi =
|
||||
fvc::surfaceSum(mag(mesh.phi()))().internalField();
|
||||
|
||||
meshCoNum = max(SfUfbyDelta/mesh.magSf())
|
||||
.value()*runTime.deltaTValue();
|
||||
meshCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanMeshCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf()))
|
||||
.value()*runTime.deltaTValue();
|
||||
meanMeshCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Mesh Courant Number mean: " << meanMeshCoNum
|
||||
|
||||
@ -38,10 +38,10 @@ if (mesh.nInternalFaces())
|
||||
fvc::surfaceSum(mag(phi))().internalField()
|
||||
/rho.internalField();
|
||||
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaT().value();
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanCoNum =
|
||||
0.5*(gSum(sumPhi)/sum(mesh.V().field()))*runTime.deltaT().value();
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Courant Number mean: " << meanCoNum
|
||||
|
||||
@ -37,10 +37,10 @@ if (mesh.nInternalFaces())
|
||||
scalarField sumPhi =
|
||||
fvc::surfaceSum(mag(phi))().internalField();
|
||||
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaT().value();
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanCoNum =
|
||||
0.5*(gSum(sumPhi)/sum(mesh.V().field()))*runTime.deltaT().value();
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Courant Number mean: " << meanCoNum
|
||||
|
||||
Reference in New Issue
Block a user