From 00cb37652f64b330137b7eaa61747fb7d210ecdf Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Wed, 17 May 2023 14:31:11 +0100 Subject: [PATCH] foamRun,foamMultiRun: fvModels are now corrected directly This ensures that all fvModels in all regions are updated before continuity is predicted in any region so that inter-region mass transfers are included in the region continuity equations. --- applications/solvers/foamMultiRun/foamMultiRun.C | 5 +++++ applications/solvers/foamRun/foamRun.C | 1 + applications/solvers/modules/VoFSolver/VoFSolver.C | 4 +--- applications/solvers/modules/film/film.C | 11 ----------- applications/solvers/modules/film/film.H | 3 --- .../incompressibleDenseParticleFluid.C | 2 -- .../modules/incompressibleFluid/incompressibleFluid.C | 2 -- .../solvers/modules/isothermalFilm/Make/files | 2 +- .../{predictAlpha.C => continuityPredictor.C} | 2 +- .../solvers/modules/isothermalFilm/isothermalFilm.H | 8 ++++---- .../solvers/modules/isothermalFilm/prePredictor.C | 6 +----- .../solvers/modules/isothermalFluid/prePredictor.C | 4 +--- .../multiphaseEuler/multiphaseEuler/multiphaseEuler.C | 5 ----- .../solvers/modules/shockFluid/prePredictor.C | 2 -- 14 files changed, 15 insertions(+), 42 deletions(-) rename applications/solvers/modules/isothermalFilm/{predictAlpha.C => continuityPredictor.C} (97%) diff --git a/applications/solvers/foamMultiRun/foamMultiRun.C b/applications/solvers/foamMultiRun/foamMultiRun.C index 8285df69d0..ae009fcbf0 100644 --- a/applications/solvers/foamMultiRun/foamMultiRun.C +++ b/applications/solvers/foamMultiRun/foamMultiRun.C @@ -134,6 +134,11 @@ int main(int argc, char *argv[]) solvers[i].moveMesh(); } + forAll(solvers, i) + { + solvers[i].fvModels().correct(); + } + forAll(solvers, i) { solvers[i].prePredictor(); diff --git a/applications/solvers/foamRun/foamRun.C b/applications/solvers/foamRun/foamRun.C index 0857d21a6a..65b993d57e 100644 --- a/applications/solvers/foamRun/foamRun.C +++ b/applications/solvers/foamRun/foamRun.C @@ -136,6 +136,7 @@ int main(int argc, char *argv[]) while (pimple.loop()) { solver.moveMesh(); + solver.fvModels().correct(); solver.prePredictor(); solver.momentumPredictor(); solver.thermophysicalPredictor(); diff --git a/applications/solvers/modules/VoFSolver/VoFSolver.C b/applications/solvers/modules/VoFSolver/VoFSolver.C index ed1384d490..97b2b9bce7 100644 --- a/applications/solvers/modules/VoFSolver/VoFSolver.C +++ b/applications/solvers/modules/VoFSolver/VoFSolver.C @@ -251,9 +251,7 @@ void Foam::solvers::VoFSolver::preSolve() void Foam::solvers::VoFSolver::prePredictor() -{ - fvModels().correct(); -} +{} void Foam::solvers::VoFSolver::postSolve() diff --git a/applications/solvers/modules/film/film.C b/applications/solvers/modules/film/film.C index 77438f245f..090becf958 100644 --- a/applications/solvers/modules/film/film.C +++ b/applications/solvers/modules/film/film.C @@ -65,17 +65,6 @@ Foam::solvers::film::~film() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -void Foam::solvers::film::prePredictor() -{ - isothermalFilm::prePredictor(); - - if (pimple.predictTransport()) - { - thermophysicalTransport->predict(); - } -} - - void Foam::solvers::film::postCorrector() { isothermalFilm::postCorrector(); diff --git a/applications/solvers/modules/film/film.H b/applications/solvers/modules/film/film.H index 73f028831d..26d54906ef 100644 --- a/applications/solvers/modules/film/film.H +++ b/applications/solvers/modules/film/film.H @@ -92,9 +92,6 @@ public: // Member Functions - //- Called at the start of the PIMPLE loop - virtual void prePredictor(); - //- Construct and solve the energy equation, // convert to temperature // and update thermophysical and transport properties diff --git a/applications/solvers/modules/incompressibleDenseParticleFluid/incompressibleDenseParticleFluid.C b/applications/solvers/modules/incompressibleDenseParticleFluid/incompressibleDenseParticleFluid.C index 8bb542a752..b225510a34 100644 --- a/applications/solvers/modules/incompressibleDenseParticleFluid/incompressibleDenseParticleFluid.C +++ b/applications/solvers/modules/incompressibleDenseParticleFluid/incompressibleDenseParticleFluid.C @@ -344,8 +344,6 @@ void Foam::solvers::incompressibleDenseParticleFluid::prePredictor() ).ptr(); } - fvModels().correct(); - if (pimple.predictTransport()) { momentumTransport->predict(); diff --git a/applications/solvers/modules/incompressibleFluid/incompressibleFluid.C b/applications/solvers/modules/incompressibleFluid/incompressibleFluid.C index 1ce0b2f92f..3aaa9b424f 100644 --- a/applications/solvers/modules/incompressibleFluid/incompressibleFluid.C +++ b/applications/solvers/modules/incompressibleFluid/incompressibleFluid.C @@ -204,8 +204,6 @@ void Foam::solvers::incompressibleFluid::preSolve() void Foam::solvers::incompressibleFluid::prePredictor() { - fvModels().correct(); - if (pimple.predictTransport()) { momentumTransport->predict(); diff --git a/applications/solvers/modules/isothermalFilm/Make/files b/applications/solvers/modules/isothermalFilm/Make/files index 1e08d75d2f..c6ca9f5e52 100644 --- a/applications/solvers/modules/isothermalFilm/Make/files +++ b/applications/solvers/modules/isothermalFilm/Make/files @@ -24,9 +24,9 @@ derivedFvPatchFields/filmSurfaceVelocity/filmSurfaceVelocityFvPatchVectorField.C filmGaussGrad/filmGaussGrads.C contactForce.C +continuityPredictor.C prePredictor.C momentumPredictor.C -predictAlpha.C correctAlpha.C isothermalFilm.C diff --git a/applications/solvers/modules/isothermalFilm/predictAlpha.C b/applications/solvers/modules/isothermalFilm/continuityPredictor.C similarity index 97% rename from applications/solvers/modules/isothermalFilm/predictAlpha.C rename to applications/solvers/modules/isothermalFilm/continuityPredictor.C index 4680c79f0f..9bfe80ef67 100644 --- a/applications/solvers/modules/isothermalFilm/predictAlpha.C +++ b/applications/solvers/modules/isothermalFilm/continuityPredictor.C @@ -30,7 +30,7 @@ License // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -void Foam::solvers::isothermalFilm::predictAlpha() +void Foam::solvers::isothermalFilm::continuityPredictor() { // Update delta and alpha BCs for time-varying inlets etc. delta_.correctBoundaryConditions(); diff --git a/applications/solvers/modules/isothermalFilm/isothermalFilm.H b/applications/solvers/modules/isothermalFilm/isothermalFilm.H index f91595e944..f258d19742 100644 --- a/applications/solvers/modules/isothermalFilm/isothermalFilm.H +++ b/applications/solvers/modules/isothermalFilm/isothermalFilm.H @@ -203,16 +203,16 @@ private: //- Correct the cached Courant number void correctCoNum(); + // Solve the explicit continuity equation for the film volume-fraction + // to predict the film thickness + void continuityPredictor(); + // Calculate the continuity error caused by limiting alpha void correctContinuityError(); //- Print the continuity errors void continuityErrors(); - //- Construct the explicit film volume-fraction prediction equation - // and predict the film thickness - void predictAlpha(); - //- Update film thickness delta from the film volume-fraction void correctDelta(); diff --git a/applications/solvers/modules/isothermalFilm/prePredictor.C b/applications/solvers/modules/isothermalFilm/prePredictor.C index 79dd016273..6b1c25d62b 100644 --- a/applications/solvers/modules/isothermalFilm/prePredictor.C +++ b/applications/solvers/modules/isothermalFilm/prePredictor.C @@ -29,11 +29,7 @@ License void Foam::solvers::isothermalFilm::prePredictor() { - predictAlpha(); - - fvModels().correct(); - - predictAlpha(); + continuityPredictor(); if (pimple.predictTransport()) { diff --git a/applications/solvers/modules/isothermalFluid/prePredictor.C b/applications/solvers/modules/isothermalFluid/prePredictor.C index b9d3c11b8a..a8ecca0916 100644 --- a/applications/solvers/modules/isothermalFluid/prePredictor.C +++ b/applications/solvers/modules/isothermalFluid/prePredictor.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2022-2023 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,8 +39,6 @@ void Foam::solvers::isothermalFluid::prePredictor() correctDensity(); } - fvModels().correct(); - if (pimple.predictTransport()) { momentumTransport->predict(); diff --git a/applications/solvers/modules/multiphaseEuler/multiphaseEuler/multiphaseEuler.C b/applications/solvers/modules/multiphaseEuler/multiphaseEuler/multiphaseEuler.C index 47327d6486..78d50ff8d9 100644 --- a/applications/solvers/modules/multiphaseEuler/multiphaseEuler/multiphaseEuler.C +++ b/applications/solvers/modules/multiphaseEuler/multiphaseEuler/multiphaseEuler.C @@ -242,11 +242,6 @@ void Foam::solvers::multiphaseEuler::preSolve() void Foam::solvers::multiphaseEuler::prePredictor() { - if (pimple.models()) - { - fvModels().correct(); - } - if (pimple.thermophysics() || pimple.flow()) { fluid_.solve(rAUs, rAUfs); diff --git a/applications/solvers/modules/shockFluid/prePredictor.C b/applications/solvers/modules/shockFluid/prePredictor.C index 764b09dd21..bf09cd720d 100644 --- a/applications/solvers/modules/shockFluid/prePredictor.C +++ b/applications/solvers/modules/shockFluid/prePredictor.C @@ -33,8 +33,6 @@ void Foam::solvers::shockFluid::prePredictor() correctDensity(); - fvModels().correct(); - if (!inviscid && pimple.predictTransport()) { momentumTransport->predict();