diff --git a/applications/solvers/multiphase/cavitatingFoam/CourantNo.H b/applications/solvers/multiphase/cavitatingFoam/CourantNo.H deleted file mode 100644 index 2483733daf..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/CourantNo.H +++ /dev/null @@ -1,57 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Global - CourantNo - -Description - Calculates and outputs the mean and maximum Courant Numbers. - -\*---------------------------------------------------------------------------*/ - -scalar CoNum = 0; -scalar acousticCoNum = 0; - -{ - const scalarField sumPhi(fvc::surfaceSum(mag(phi))().primitiveField()); - - CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue(); - - const scalar meanCoNum = - 0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue(); - - acousticCoNum = 0.5*gMax - ( - fvc::surfaceSum - ( - fvc::interpolate(scalar(1)/sqrt(mixture.psi()))*mesh.magSf() - )().primitiveField()/mesh.V().field() - )*runTime.deltaTValue(); - - Info<< "phi Courant Number mean: " << meanCoNum - << " max: " << CoNum - << " acoustic max: " << acousticCoNum - << endl; -} - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/cavitatingFoam/Make/files b/applications/solvers/multiphase/cavitatingFoam/Make/files deleted file mode 100644 index 19df056aef..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/Make/files +++ /dev/null @@ -1,4 +0,0 @@ -cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.C -cavitatingFoam.C - -EXE = $(FOAM_APPBIN)/cavitatingFoam diff --git a/applications/solvers/multiphase/cavitatingFoam/Make/options b/applications/solvers/multiphase/cavitatingFoam/Make/options deleted file mode 100644 index cacb35e2b8..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/Make/options +++ /dev/null @@ -1,21 +0,0 @@ -EXE_INC = \ - -IcavitatingTwoPhaseMixture \ - -I$(LIB_SRC)/physicalProperties/lnInclude \ - -I$(LIB_SRC)/twoPhaseModels/VoF \ - -I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/barotropicCompressibilityModel/lnInclude \ - -I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \ - -I$(LIB_SRC)/MomentumTransportModels/incompressible/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude - -EXE_LIBS = \ - -lphysicalProperties \ - -ltwoPhaseMixture \ - -lbarotropicCompressibilityModel \ - -lmomentumTransportModels \ - -lincompressibleMomentumTransportModels \ - -lfiniteVolume \ - -lmeshTools \ - -lfvModels \ - -lfvConstraints diff --git a/applications/solvers/multiphase/cavitatingFoam/UEqn.H b/applications/solvers/multiphase/cavitatingFoam/UEqn.H deleted file mode 100644 index 8469b869cf..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/UEqn.H +++ /dev/null @@ -1,15 +0,0 @@ - fvVectorMatrix UEqn - ( - fvm::ddt(rho, U) - + fvm::div(rhoPhi, U) - + turbulence->divDevTau(rho, U) - ); - - UEqn.relax(); - - if (pimple.momentumPredictor()) - { - solve(UEqn == -fvc::grad(p)); - } - - Info<< "max(U) " << max(mag(U)).value() << endl; diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C deleted file mode 100644 index 88a066c158..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C +++ /dev/null @@ -1,142 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Application - cavitatingFoam - -Description - Transient cavitation code based on the homogeneous equilibrium model - from which the compressibility of the liquid/vapour "mixture" is obtained, - with optional mesh motion and mesh topology changes. - - Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected. - -\*---------------------------------------------------------------------------*/ - -#include "argList.H" -#include "timeSelector.H" -#include "cavitatingTwoPhaseMixture.H" -#include "incompressibleMomentumTransportModels.H" -#include "fvCorrectPhi.H" -#include "pimpleControl.H" -#include "fixedValueFvPatchFields.H" -#include "zeroGradientFvPatchFields.H" -#include "constrainHbyA.H" - -#include "fvcDdt.H" -#include "fvcSnGrad.H" -#include "fvcFlux.H" -#include "fvcMeshPhi.H" - -#include "fvmDdt.H" -#include "fvmDiv.H" -#include "fvmLaplacian.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - #include "postProcess.H" - - #include "setRootCaseLists.H" - #include "createTime.H" - #include "createMesh.H" - #include "createControls.H" - #include "createFields.H" - #include "createUfIfPresent.H" - #include "createPcorrTypes.H" - #include "CourantNo.H" - #include "setInitialDeltaT.H" - - turbulence->validate(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - Info<< "\nStarting time loop\n" << endl; - - while (pimple.run(runTime)) - { - #include "readControls.H" - - { - #include "CourantNo.H" - #include "setDeltaT.H" - - // Update the mesh for topology change, mesh to mesh mapping - mesh.update(); - - runTime++; - - Info<< "Time = " << runTime.userTimeName() << nl << endl; - - // Move the mesh - mesh.move(); - - if (mesh.changing() && correctPhi) - { - #include "correctPhi.H" - } - } - - // --- Pressure-velocity PIMPLE corrector loop - while (pimple.loop()) - { - #include "rhoEqn.H" - - mixture.correct(); - - if (pimple.predictTransport()) - { - turbulence->predict(); - } - - #include "UEqn.H" - - // --- Pressure corrector loop - while (pimple.correct()) - { - #include "pEqn.H" - } - - if (pimple.correctTransport()) - { - turbulence->correct(); - } - } - - runTime.write(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.C deleted file mode 100644 index 5a25de4f05..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.C +++ /dev/null @@ -1,247 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -\*---------------------------------------------------------------------------*/ - -#include "cavitatingTwoPhaseMixture.H" -#include "barotropicCompressibilityModel.H" - - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTypeNameAndDebug(cavitatingTwoPhaseMixture, 0); -} - - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::cavitatingTwoPhaseMixture::cavitatingTwoPhaseMixture -( - const fvMesh& mesh -) -: - twoPhaseMixture(mesh), - - alphav_(alpha1()), - alphal_(alpha2()), - - nuModelv_(viscosityModel::New(mesh, phase1Name())), - nuModell_(viscosityModel::New(mesh, phase2Name())), - - rhov_("rho", dimDensity, nuModelv_()), - rhol_("rho", dimDensity, nuModell_()), - - nu_ - ( - IOobject - ( - "nu", - mesh.time().name(), - mesh - ), - mesh, - dimensionedScalar(dimViscosity, 0), - calculatedFvPatchScalarField::typeName - ), - - thermodynamicProperties_ - ( - IOobject - ( - "thermodynamicProperties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ), - - psil_ - ( - "psil", - dimCompressibility, - thermodynamicProperties_ - ), - - rholSat_ - ( - "rholSat", - dimDensity, - thermodynamicProperties_ - ), - - psiv_ - ( - "psiv", - dimCompressibility, - thermodynamicProperties_ - ), - - pSat_ - ( - "pSat", - dimPressure, - thermodynamicProperties_ - ), - - rhovSat_("rhovSat", psiv_*pSat_), - - rhol0_("rhol0", rholSat_ - pSat_*psil_), - - rhoMin_ - ( - "rhoMin", - dimDensity, - thermodynamicProperties_ - ), - - p_ - ( - IOobject - ( - "p", - mesh.time().name(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ), - - psiModel_ - ( - barotropicCompressibilityModel::New - ( - thermodynamicProperties_, - alphav_ - ) - ), - - psi_(psiModel_->psi()), - - rho_ - ( - IOobject - ( - "rho", - mesh.time().name(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ) -{ - alphav_.oldTime(); - - rho_ = max - ( - psi_*p_ - + alphal_*rhol0_ - + ((alphav_*psiv_ + alphal_*psil_) - psi_)*pSat_, - rhoMin_ - ); - - correct(); -} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::cavitatingTwoPhaseMixture::~cavitatingTwoPhaseMixture() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -bool Foam::cavitatingTwoPhaseMixture::read() -{ - if (twoPhaseMixture::read()) - { - nuModelv_->lookup("rho") >> rhov_; - nuModell_->lookup("rho") >> rhol_; - - return true; - } - else - { - return false; - } -} - - -void Foam::cavitatingTwoPhaseMixture::correctPressure() -{ - p_ = - ( - rho_ - - alphal_*rhol0_ - - ((alphav_*psiv_ + alphal_*psil_) - psi_)*pSat_ - )/psi_; - - p_.correctBoundaryConditions(); -} - - -void Foam::cavitatingTwoPhaseMixture::correct() -{ - rho_ == max(rho_, rhoMin_); - - alphav_ = - max - ( - min - ( - (rho_ - rholSat_)/(rhovSat_ - rholSat_), - scalar(1) - ), - scalar(0) - ); - alphal_ = 1.0 - alphav_; - - Info<< "max-min alphav: " << max(alphav_).value() - << " " << min(alphav_).value() << endl; - - psiModel_->correct(); - - nuModelv_->correct(); - nuModell_->correct(); - - const volScalarField limitedAlphav - ( - "limitedAlphav", - min(max(alphav_, scalar(0)), scalar(1)) - ); - - // Mixture kinematic viscosity calculated from mixture dynamic viscosity - nu_ = - ( - limitedAlphav*rhov_*nuModelv_->nu() - + (scalar(1) - limitedAlphav)*rhol_*nuModell_->nu() - )/(limitedAlphav*rhov_ + (scalar(1) - limitedAlphav)*rhol_); -} - - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.H b/applications/solvers/multiphase/cavitatingFoam/cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.H deleted file mode 100644 index 963cdae0cb..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/cavitatingTwoPhaseMixture/cavitatingTwoPhaseMixture.H +++ /dev/null @@ -1,188 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Class - Foam::cavitatingTwoPhaseMixture - -Description - Class to represent a mixture of two constant density phases - -SourceFiles - cavitatingTwoPhaseMixture.C - -\*---------------------------------------------------------------------------*/ - -#ifndef cavitatingTwoPhaseMixture_H -#define cavitatingTwoPhaseMixture_H - -#include "twoPhaseMixture.H" -#include "viscosityModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -class barotropicCompressibilityModel; - -/*---------------------------------------------------------------------------*\ - Class cavitatingTwoPhaseMixture Declaration -\*---------------------------------------------------------------------------*/ - -class cavitatingTwoPhaseMixture -: - public twoPhaseMixture, - public viscosity -{ - // Private Data - - //- Vapour phase fraction reference (alpha1 from twoPhaseMixture) - volScalarField& alphav_; - - //- liquid phase fraction reference (alpha2 from twoPhaseMixture) - volScalarField& alphal_; - - //- Vapour viscosity model - autoPtr nuModelv_; - - //- Liquid viscosity model - autoPtr nuModell_; - - //- Constant vapour density - dimensionedScalar rhov_; - - //- Constant liquid density - dimensionedScalar rhol_; - - //- Mixture viscosity - volScalarField nu_; - - //- Thermophysical properties dictionary - IOdictionary thermodynamicProperties_; - - //- Liquid compressibility - dimensionedScalar psil_; - - //- Saturation liquid density - dimensionedScalar rholSat_; - - //- Vapour compressibility - dimensionedScalar psiv_; - - //- Saturation pressure - dimensionedScalar pSat_; - - //- Saturation vapour density - dimensionedScalar rhovSat_; - - //- rholSat_ - pSat_*psil_ - dimensionedScalar rhol0_; - - //- Minimum density for numerical stability - dimensionedScalar rhoMin_; - - //- Static pressure field - volScalarField p_; - - autoPtr psiModel_; - - //- Reference to the mixture compressibility field - const volScalarField& psi_; - - //- Mixture density field - volScalarField rho_; - - -public: - - TypeName("cavitatingTwoPhaseMixture"); - - - // Constructors - - //- Construct from a mesh - cavitatingTwoPhaseMixture(const fvMesh& mesh); - - - //- Destructor - virtual ~cavitatingTwoPhaseMixture(); - - - // Member Functions - - //- Return the static pressure field - volScalarField& p() - { - return p_; - } - - //- Return the mixture density field - virtual const volScalarField& rho() const - { - return rho_; - } - - //- Return the mixture density field - volScalarField& rho() - { - return rho_; - } - - //- Return the mixture compressibility - const volScalarField& psi() const - { - return psi_; - } - - //- Return the kinematic laminar viscosity - virtual tmp nu() const - { - return nu_; - } - - //- Return the laminar viscosity for patch - virtual tmp nu(const label patchi) const - { - return nu_.boundaryField()[patchi]; - } - - //- Correct the pressure from mixture density - void correctPressure(); - - //- Correct the mixture density and laminar viscosity - virtual void correct(); - - //- Read base phaseProperties dictionary - virtual bool read(); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/cavitatingFoam/correctPhi.H b/applications/solvers/multiphase/cavitatingFoam/correctPhi.H deleted file mode 100644 index 64e93a1b28..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/correctPhi.H +++ /dev/null @@ -1,44 +0,0 @@ -// Calculate absolute flux from the mapped surface velocity -phi = mesh.Sf() & Uf(); - -correctUphiBCs(U, phi, true); - -{ - volScalarField pcorr - ( - IOobject - ( - "pcorr", - runTime.name(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionedScalar(p.dimensions(), 0), - pcorrTypes - ); - - surfaceScalarField rhof(fvc::interpolate(rho, "div(phi,rho)")); - dimensionedScalar rAUf("rAUf", dimTime, 1.0); - - mesh.schemes().setFluxRequired(pcorr.name()); - - while (pimple.correctNonOrthogonal()) - { - fvScalarMatrix pcorrEqn - ( - fvm::laplacian(rAUf, pcorr) == fvc::ddt(rho) + fvc::div(phi*rhof) - ); - - pcorrEqn.solve(); - - if (pimple.finalNonOrthogonalIter()) - { - phi -= pcorrEqn.flux()/rhof; - } - } -} - -// Make the flux relative to the mesh motion -fvc::makeRelative(phi, U); diff --git a/applications/solvers/multiphase/cavitatingFoam/createControls.H b/applications/solvers/multiphase/cavitatingFoam/createControls.H deleted file mode 100644 index 7874c0e87d..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/createControls.H +++ /dev/null @@ -1,6 +0,0 @@ -#include "createDyMControls.H" - -scalar maxAcousticCo -( - runTime.controlDict().lookup("maxAcousticCo") -); diff --git a/applications/solvers/multiphase/cavitatingFoam/createFields.H b/applications/solvers/multiphase/cavitatingFoam/createFields.H deleted file mode 100644 index bc037e0763..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/createFields.H +++ /dev/null @@ -1,47 +0,0 @@ -Info<< "Reading phaseProperties\n" << endl; - -cavitatingTwoPhaseMixture mixture(mesh); - -volScalarField& p(mixture.p()); -volScalarField& rho(mixture.rho()); - -Info<< "Reading field U\n" << endl; -volVectorField U -( - IOobject - ( - "U", - runTime.name(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh -); - -#include "createPhi.H" - -mesh.schemes().setFluxRequired(p.name()); - -// Mass flux (corrected by rhoEqn.H) -surfaceScalarField rhoPhi -( - IOobject - ( - "rhoPhi", - runTime.name(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - fvc::interpolate(rho)*phi -); - -mesh.schemes().setFluxRequired(p.name()); -mesh.schemes().setFluxRequired(rho.name()); - -// Create incompressible turbulence model -autoPtr turbulence -( - incompressible::momentumTransportModel::New(U, phi, mixture) -); diff --git a/applications/solvers/multiphase/cavitatingFoam/createPcorrTypes.H b/applications/solvers/multiphase/cavitatingFoam/createPcorrTypes.H deleted file mode 100644 index a602fd4843..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/createPcorrTypes.H +++ /dev/null @@ -1,13 +0,0 @@ - wordList pcorrTypes - ( - p.boundaryField().size(), - zeroGradientFvPatchScalarField::typeName - ); - - for (label i=0; i. - -Global - createUfIfPresent - -Description - Creates and initialises the velocity field Uf if required. - -\*---------------------------------------------------------------------------*/ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -autoPtr Uf; - -if (mesh.dynamic()) -{ - Info<< "Constructing face velocity Uf\n" << endl; - - Uf = new surfaceVectorField - ( - IOobject - ( - "Uf", - runTime.name(), - mesh, - IOobject::READ_IF_PRESENT, - IOobject::AUTO_WRITE - ), - fvc::interpolate(U) - ); -} - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/cavitatingFoam/pEqn.H b/applications/solvers/multiphase/cavitatingFoam/pEqn.H deleted file mode 100644 index 60ccf0031a..0000000000 --- a/applications/solvers/multiphase/cavitatingFoam/pEqn.H +++ /dev/null @@ -1,72 +0,0 @@ -{ - if (pimple.nCorr() == 1) - { - mixture.correctPressure(); - } - - surfaceScalarField rhof("rhof", fvc::interpolate(rho)); - - volScalarField rAU(1.0/UEqn.A()); - surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); - volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p)); - - phi = fvc::flux(HbyA) + rhorAUf*fvc::ddtCorr(U, phi, Uf); - fvc::makeRelative(phi, U); - - surfaceScalarField phiGradp(rhorAUf*mesh.magSf()*fvc::snGrad(p)); - - phi -= phiGradp/rhof; - - const volScalarField rho0(rho - mixture.psi()*p); - - while (pimple.correctNonOrthogonal()) - { - fvScalarMatrix pEqn - ( - fvc::ddt(rho) - + mixture.psi()*correction(fvm::ddt(p)) - + fvc::div(phi, rho) - + fvc::div(phiGradp) - - fvm::laplacian(rhorAUf, p) - ); - - pEqn.solve(); - - if (pimple.finalNonOrthogonalIter()) - { - phi += (phiGradp + pEqn.flux())/rhof; - } - } - - Info<< "Predicted p max-min : " << max(p).value() - << " " << min(p).value() << endl; - - rho == rho0 + mixture.psi()*p; - - mixture.correct(); - - mixture.correctPressure(); - - Info<< "Phase-change corrected p max-min : " << max(p).value() - << " " << min(p).value() << endl; - - // Correct velocity - - U = HbyA - rAU*fvc::grad(p); - - // Remove the swirl component of velocity for "wedge" cases - if (pimple.dict().found("removeSwirl")) - { - label swirlCmpt(pimple.dict().lookup