diff --git a/applications/solvers/multiphase/interFoam/alphaCourantNo.H b/applications/solvers/multiphase/interFoam/alphaCourantNo.H index b970d4ce23..ffd039c77a 100644 --- a/applications/solvers/multiphase/interFoam/alphaCourantNo.H +++ b/applications/solvers/multiphase/interFoam/alphaCourantNo.H @@ -22,7 +22,7 @@ License along with OpenFOAM. If not, see . Global - CourantNo + alphaCourantNo Description Calculates and outputs the mean and maximum Courant Numbers. @@ -39,17 +39,14 @@ scalar meanAlphaCoNum = 0.0; if (mesh.nInternalFaces()) { - surfaceScalarField alphaf = fvc::interpolate(alpha1); + scalarField sumPhi = + pos(alpha1 - 0.01)*pos(0.99 - alpha1) + *fvc::surfaceSum(mag(phi))().internalField(); - surfaceScalarField SfUfbyDelta = - pos(alphaf - 0.01)*pos(0.99 - alphaf) - *mesh.surfaceInterpolation::deltaCoeffs()*mag(phi); + alphaCoNum = 0.5*max(sumPhi/mesh.V().field())*runTime.deltaT().value(); - alphaCoNum = max(SfUfbyDelta/mesh.magSf()) - .value()*runTime.deltaT().value(); - - meanAlphaCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf())) - .value()*runTime.deltaT().value(); + meanAlphaCoNum = + 0.5*(sum(sumPhi)/sum(mesh.V().field()))*runTime.deltaT().value(); } Info<< "Interface Courant Number mean: " << meanAlphaCoNum diff --git a/applications/utilities/postProcessing/velocityField/Co/Co.C b/applications/utilities/postProcessing/velocityField/Co/Co.C index c64ca9e2b1..73653e3726 100644 --- a/applications/utilities/postProcessing/velocityField/Co/Co.C +++ b/applications/utilities/postProcessing/velocityField/Co/Co.C @@ -25,7 +25,7 @@ Application Co Description - Calculates and writes the Co number as a surfaceScalarField obtained + Calculates and writes the Co number as a volScalarField obtained from field phi. The -noWrite option just outputs the max values without writing the @@ -38,52 +38,6 @@ Description // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - tmp Co(const surfaceScalarField& Cof) - { - const fvMesh& mesh = Cof.mesh(); - - tmp tCo - ( - new volScalarField - ( - IOobject - ( - "Co", - mesh.time().timeName(), - mesh - ), - mesh, - dimensionedScalar("0", Cof.dimensions(), 0) - ) - ); - - volScalarField& Co = tCo(); - - // Set local references to mesh data - const unallocLabelList& owner = mesh.owner(); - const unallocLabelList& neighbour = mesh.neighbour(); - - forAll(owner, facei) - { - label own = owner[facei]; - label nei = neighbour[facei]; - - Co[own] = max(Co[own], Cof[facei]); - Co[nei] = max(Co[nei], Cof[facei]); - } - - forAll(Co.boundaryField(), patchi) - { - Co.boundaryField()[patchi] = Cof.boundaryField()[patchi]; - } - - return tCo; - } -} - - void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) { bool writeResults = !args.optionFound("noWrite"); @@ -98,15 +52,28 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) if (phiHeader.headerOk()) { - autoPtr CoPtr; + volScalarField Co + ( + IOobject + ( + "Co", + runTime.timeName(), + mesh, + IOobject::NO_READ + ), + mesh, + dimensionedScalar("0", dimless, 0), + zeroGradientFvPatchScalarField::typeName + ); Info<< " Reading phi" << endl; surfaceScalarField phi(phiHeader, mesh); - Info<< " Calculating Co" << endl; if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0)) { - // compressible + Info<< " Calculating compressible Co" << endl; + + Info<< " Reading rho" << endl; volScalarField rho ( IOobject @@ -119,60 +86,34 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) mesh ); - CoPtr.set - ( - new surfaceScalarField - ( - IOobject - ( - "Cof", - runTime.timeName(), - mesh, - IOobject::NO_READ - ), - ( - mesh.surfaceInterpolation::deltaCoeffs() - * (mag(phi)/(fvc::interpolate(rho)*mesh.magSf())) - * runTime.deltaT() - ) - ) - ); + Co.dimensionedInternalField() = + (0.5*runTime.deltaT()) + *fvc::surfaceSum(mag(phi))().dimensionedInternalField() + /(rho*mesh.V()); + Co.correctBoundaryConditions(); } else if (phi.dimensions() == dimensionSet(0, 3, -1, 0, 0)) { - // incompressible - CoPtr.set - ( - new surfaceScalarField - ( - IOobject - ( - "Cof", - runTime.timeName(), - mesh, - IOobject::NO_READ - ), - ( - mesh.surfaceInterpolation::deltaCoeffs() - * (mag(phi)/mesh.magSf()) - * runTime.deltaT() - ) - ) - ); + Info<< " Calculating incompressible Co" << endl; + + Co.dimensionedInternalField() = + (0.5*runTime.deltaT()) + *fvc::surfaceSum(mag(phi))().dimensionedInternalField() + /mesh.V(); + Co.correctBoundaryConditions(); } else { FatalErrorIn(args.executable()) << "Incorrect dimensions of phi: " << phi.dimensions() - << abort(FatalError); + << abort(FatalError); } - Info<< "Co max : " << max(CoPtr()).value() << endl; + Info<< "Co max : " << max(Co).value() << endl; if (writeResults) { - CoPtr().write(); - Co(CoPtr())().write(); + Co.write(); } } else @@ -183,4 +124,5 @@ void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) Info<< "\nEnd\n" << endl; } + // ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/compressible/compressibleCourantNo.H b/src/finiteVolume/cfdTools/compressible/compressibleCourantNo.H index b618efbd0d..d8f7a6cbc0 100644 --- a/src/finiteVolume/cfdTools/compressible/compressibleCourantNo.H +++ b/src/finiteVolume/cfdTools/compressible/compressibleCourantNo.H @@ -34,14 +34,14 @@ scalar meanCoNum = 0.0; if (mesh.nInternalFaces()) { - surfaceScalarField SfUfbyDelta = - mesh.surfaceInterpolation::deltaCoeffs()*mag(phi)/fvc::interpolate(rho); + scalarField sumPhi = + fvc::surfaceSum(mag(phi))().internalField() + /rho.internalField(); - CoNum = max(SfUfbyDelta/mesh.magSf()) - .value()*runTime.deltaTValue(); + CoNum = 0.5*max(sumPhi/mesh.V().field())*runTime.deltaT().value(); - meanCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf())) - .value()*runTime.deltaTValue(); + meanCoNum = + 0.5*(sum(sumPhi)/sum(mesh.V().field()))*runTime.deltaT().value(); } Info<< "Courant Number mean: " << meanCoNum diff --git a/src/finiteVolume/cfdTools/incompressible/CourantNo.H b/src/finiteVolume/cfdTools/incompressible/CourantNo.H index 83bc8765ac..2d2e82ade1 100644 --- a/src/finiteVolume/cfdTools/incompressible/CourantNo.H +++ b/src/finiteVolume/cfdTools/incompressible/CourantNo.H @@ -34,14 +34,13 @@ scalar meanCoNum = 0.0; if (mesh.nInternalFaces()) { - surfaceScalarField SfUfbyDelta = - mesh.surfaceInterpolation::deltaCoeffs()*mag(phi); + scalarField sumPhi = + fvc::surfaceSum(mag(phi))().internalField(); - CoNum = max(SfUfbyDelta/mesh.magSf()) - .value()*runTime.deltaTValue(); + CoNum = 0.5*max(sumPhi/mesh.V().field())*runTime.deltaT().value(); - meanCoNum = (sum(SfUfbyDelta)/sum(mesh.magSf())) - .value()*runTime.deltaTValue(); + meanCoNum = + 0.5*(sum(sumPhi)/sum(mesh.V().field()))*runTime.deltaT().value(); } Info<< "Courant Number mean: " << meanCoNum