From 2bc91ecff08a14677dd8ba61f247cff57c192985 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Wed, 6 Dec 2023 12:39:34 +0000 Subject: [PATCH] phaseScalarTransport: Improved interface and documentation This function now looks up an alphaPhi field by default and exits with an error if the field cannot be found. In order to solve for alphaPhi a new 'solveAlphaPhi' switch has to be set. The documentation has been updated to reflect the fact that the VoF solvers now store all the alphaPhi fluxes necessary for a in-phase equation to be constructed. The phaseScalarTransport function has been added to the damBreakLaminar tutorial. --- .../phaseScalarTransport.C | 27 +++--- .../phaseScalarTransport.H | 30 +++---- .../damBreakLaminar/0/tracer.air.orig | 39 ++++++++ .../damBreakLaminar/0/tracer.water.orig | 39 ++++++++ .../damBreakLaminar/Allclean | 4 +- .../incompressibleVoF/damBreakLaminar/Allrun | 4 - .../constant/momentumTransport | 7 -- .../damBreakLaminar/system/controlDict | 62 +++++++++++++ .../damBreakLaminar/system/fvSchemes | 58 ++++++++++++ .../damBreakLaminar/system/fvSolution | 90 +++++++++++++++++++ .../damBreakLaminar/system/setFieldsDict | 53 +++++++++++ 11 files changed, 370 insertions(+), 43 deletions(-) create mode 100644 tutorials/incompressibleVoF/damBreakLaminar/0/tracer.air.orig create mode 100644 tutorials/incompressibleVoF/damBreakLaminar/0/tracer.water.orig create mode 100644 tutorials/incompressibleVoF/damBreakLaminar/system/controlDict create mode 100644 tutorials/incompressibleVoF/damBreakLaminar/system/fvSchemes create mode 100644 tutorials/incompressibleVoF/damBreakLaminar/system/fvSolution create mode 100644 tutorials/incompressibleVoF/damBreakLaminar/system/setFieldsDict diff --git a/src/functionObjects/solvers/phaseScalarTransport/phaseScalarTransport.C b/src/functionObjects/solvers/phaseScalarTransport/phaseScalarTransport.C index 83bd7be2dd..7d3eebc3e4 100644 --- a/src/functionObjects/solvers/phaseScalarTransport/phaseScalarTransport.C +++ b/src/functionObjects/solvers/phaseScalarTransport/phaseScalarTransport.C @@ -90,7 +90,7 @@ Foam::volScalarField& Foam::functionObjects::phaseScalarTransport::Phi() ( IOobject ( - "Phi" + s_.name(), + typedName(IOobject::groupName("Phi", phaseName_)), time_.name(), mesh_, IOobject::READ_IF_PRESENT, @@ -112,16 +112,11 @@ Foam::volScalarField& Foam::functionObjects::phaseScalarTransport::Phi() Foam::tmp Foam::functionObjects::phaseScalarTransport::alphaPhi() { - // If alphaPhi exists then return it - if (mesh_.foundObject(alphaPhiName_)) + if (!solveAlphaPhi_) { return mesh_.lookupObject(alphaPhiName_); } - // Otherwise generate it ... - Info<< type() << ": " << surfaceScalarField::typeName << " " - << alphaPhiName_ << " was not found, so generating it" << endl; - const volScalarField& alpha = mesh_.lookupObject(alphaName_); const surfaceScalarField& phi = @@ -288,8 +283,6 @@ Foam::functionObjects::phaseScalarTransport::phaseScalarTransport fvMeshFunctionObject(name, runTime, dict), fieldName_(dict.lookup("field")), phaseName_(IOobject::group(fieldName_)), - nCorr_(0), - residualAlpha_(rootSmall), s_ ( IOobject @@ -330,18 +323,20 @@ bool Foam::functionObjects::phaseScalarTransport::read(const dictionary& dict) { fvMeshFunctionObject::read(dict); + solveAlphaPhi_ = dict.lookupOrDefault("solveAlphaPhi", false); + alphaName_ = dict.lookupOrDefault ( "alpha", IOobject::groupName("alpha", phaseName_) ); + const word defaultAlphaPhiName = + IOobject::groupName("alphaPhi", phaseName_); alphaPhiName_ = - dict.lookupOrDefault - ( - "alphaPhi", - IOobject::groupName("alphaPhi", phaseName_) - ); + solveAlphaPhi_ + ? typedName(defaultAlphaPhiName) + : dict.lookupOrDefault("alphaPhi", defaultAlphaPhiName); phiName_ = dict.lookupOrDefault("phi", "phi"); rhoName_ = dict.lookupOrDefault @@ -356,8 +351,8 @@ bool Foam::functionObjects::phaseScalarTransport::read(const dictionary& dict) alphaD_ = dict.lookupOrDefault("alphaD", 1); alphaDt_ = dict.lookupOrDefault("alphaDt", 1); - dict.readIfPresent("nCorr", nCorr_); - dict.readIfPresent("residualAlpha", residualAlpha_); + nCorr_ = dict.lookupOrDefault