From 7e799e9fef83e3ac17c706c055347e72e9a62ebf Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Fri, 25 Jan 2019 11:00:32 +0000 Subject: [PATCH] TwoResistanceHeatTransferPhaseSystem: Changed stabilisation term The stabilisation term for the heat transfer with the interface temperature has been changed to mirror the local heat transfer in the phase, rather than an effective heat transfer across both phases. This makes the stabilisation term match the actual temperature-based transfer terms more accurately. The difference is particularly significant when the mass transfer rate is high, and cases of this type gain a significant stability benefit from this change as a result. Patch contributed by Juho Peltola, VTT. --- .../TwoResistanceHeatTransferPhaseSystem.C | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/TwoResistanceHeatTransferPhaseSystem/TwoResistanceHeatTransferPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/TwoResistanceHeatTransferPhaseSystem/TwoResistanceHeatTransferPhaseSystem.C index 1ac8d13f00..84277ad6bc 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/TwoResistanceHeatTransferPhaseSystem/TwoResistanceHeatTransferPhaseSystem.C +++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/TwoResistanceHeatTransferPhaseSystem/TwoResistanceHeatTransferPhaseSystem.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2015-2018 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2015-2019 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -173,26 +173,17 @@ heatTransfer() const heatTransferModelIter().second()->K() ); - const volScalarField KEff - ( - Ks.first()()*Ks.second()() - /max - ( - Ks.first()() + Ks.second()(), - dimensionedScalar(heatTransferModel::dimK, small) - ) - ); - forAllConstIter(phasePair, pair, iter) { const phaseModel& phase = iter(); const volScalarField& he(phase.thermo().he()); const volScalarField Cpv(phase.thermo().Cpv()); + const volScalarField& K(Ks[iter.index()]); *eqns[phase.name()] += - Ks[iter.index()]*(Tf - phase.thermo().T()) - + KEff/Cpv*he - fvm::Sp(KEff/Cpv, he); + K*(Tf - phase.thermo().T()) + + K/Cpv*he - fvm::Sp(K/Cpv, he); } }