From cebc401534f4a936d12eab6699bee7b116a1c90d Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Thu, 14 Nov 2019 10:28:18 +0000 Subject: [PATCH] reacting*EulerFoam: populationBalanceModel: Improvements to updates of mass transfer rate and sources The update of mass transfer rates in the population balance system is now done at the same time as other source terms. This benefits synchronisation of the mass transfer rate and the source terms and prevents the system converging to an incorrect state. Patch contributed by VTT Technical Research Centre of Finland Ltd and Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR). --- .../sizeGroup/shapeModels/fractal/fractal.C | 2 ++ .../velocityGroup/velocityGroup.C | 2 ++ .../populationBalanceModel.C | 3 +- .../titaniaSynthesis/system/controlDict | 6 ++++ .../laminar/titaniaSynthesis/system/fvSchemes | 3 +- .../titaniaSynthesisSurface/0/uniform/time | 29 ------------------- .../system/controlDict | 8 +++++ .../titaniaSynthesisSurface/system/fvSchemes | 3 +- 8 files changed, 23 insertions(+), 33 deletions(-) delete mode 100644 tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/0/uniform/time diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.C index 7bb69eb787..170ba691c6 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/sizeGroup/shapeModels/fractal/fractal.C @@ -241,6 +241,8 @@ void Foam::diameterModels::shapeModels::fractal::correct() 6.0/popBal.sizeGroups().first().dSph() ); + kappa_.correctBoundaryConditions(); + // Update the collisional diameter dColl_ = dColl(); } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.C index 9e0ebf2d3a..6d32e16807 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/velocityGroup/velocityGroup.C @@ -129,6 +129,8 @@ void Foam::diameterModels::velocityGroup::scale() forAll(sizeGroups_, i) { sizeGroups_[i] /= f_; + + sizeGroups_[i].correctBoundaryConditions(); }; } diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C index 6feeb4b55c..e012aa3c58 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/populationBalanceModel/populationBalanceModel/populationBalanceModel.C @@ -1286,10 +1286,9 @@ void Foam::diameterModels::populationBalanceModel::solve() if (updateSources()) { sources(); + dmdt(); } - dmdt(); - maxInitialResidual = 0; forAll(sizeGroups_, i) diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/controlDict index c461bffc86..0fac2f0595 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/controlDict +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/controlDict @@ -74,6 +74,12 @@ functions normalize yes; geometric yes; } + + #includeFunc writeObjects \ + ( \ + d.particles, \ + phaseTransfer:dmidtf.TiO2.particlesAndVapor \ + ) } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/fvSchemes index 82078f77b8..2fbc51999d 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/fvSchemes +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesis/system/fvSchemes @@ -23,6 +23,7 @@ ddtSchemes gradSchemes { default Gauss linear; + limited cellLimited Gauss linear 1; } divSchemes @@ -41,7 +42,7 @@ divSchemes "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; "div\(alphaRhoPhi.*,f.*\)" Gauss upwind; - "div\(fAlphaRhoPhi.*,kappa.*\)" Gauss limitedLinear 1; + "div\(fAlphaRhoPhi.*,kappa.*\)" Gauss linearUpwind limited; "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/0/uniform/time b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/0/uniform/time deleted file mode 100644 index feb8228f4e..0000000000 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/0/uniform/time +++ /dev/null @@ -1,29 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Version: hzdr - \\/ M anipulation | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - location "0/uniform"; - object time; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -value 0; - -name "0"; - -index 0; - -deltaT 0.0001; - -deltaT0 0.0001; - - -// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/controlDict index c461bffc86..0b3a70db34 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/controlDict +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/controlDict @@ -74,6 +74,14 @@ functions normalize yes; geometric yes; } + + #includeFunc writeObjects \ + ( \ + d.particles, \ + a.particles, \ + phaseTransfer:dmidtf.TiO2.particlesAndVapor, \ + phaseTransfer:dmidtf.TiO2_s.particlesAndVapor \ + ) } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/fvSchemes index 82078f77b8..2fbc51999d 100644 --- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/fvSchemes +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/titaniaSynthesisSurface/system/fvSchemes @@ -23,6 +23,7 @@ ddtSchemes gradSchemes { default Gauss linear; + limited cellLimited Gauss linear 1; } divSchemes @@ -41,7 +42,7 @@ divSchemes "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; "div\(alphaRhoPhi.*,f.*\)" Gauss upwind; - "div\(fAlphaRhoPhi.*,kappa.*\)" Gauss limitedLinear 1; + "div\(fAlphaRhoPhi.*,kappa.*\)" Gauss linearUpwind limited; "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; }