diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C index e9bc815304..ed60ded959 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -510,6 +510,9 @@ void Foam::ReactingParcel::calcPhaseChange const CompositionModel& composition = td.cloud().composition(); + const scalar TMax = td.cloud().phaseChange().TMax(pc_, this->Tc_); + const scalar Tdash = min(T, TMax); + const scalar Tsdash = min(Ts, TMax); // Calculate mass transfer due to phase change td.cloud().phaseChange().calculate @@ -520,8 +523,8 @@ void Foam::ReactingParcel::calcPhaseChange Pr, d, nus, - T, - Ts, + Tdash, + Tsdash, pc_, this->Tc_, YComponents, @@ -541,7 +544,7 @@ void Foam::ReactingParcel::calcPhaseChange const label idc = composition.localToGlobalCarrierId(idPhase, i); const label idl = composition.globalIds(idPhase)[i]; - const scalar dh = td.cloud().phaseChange().dh(idc, idl, pc_, T); + const scalar dh = td.cloud().phaseChange().dh(idc, idl, pc_, Tdash); Sh -= dMassPC[i]*dh/dt; } @@ -558,12 +561,12 @@ void Foam::ReactingParcel::calcPhaseChange const label idc = composition.localToGlobalCarrierId(idPhase, i); const label idl = composition.globalIds(idPhase)[i]; - const scalar Cp = composition.carrier().Cp(idc, pc_, Ts); + const scalar Cp = composition.carrier().Cp(idc, pc_, Tsdash); const scalar W = composition.carrier().W(idc); const scalar Ni = dMassPC[i]/(this->areaS(d)*dt*W); const scalar Dab = - composition.liquids().properties()[idl].D(pc_, Ts, Wc); + composition.liquids().properties()[idl].D(pc_, Tsdash, Wc); // Molar flux of species coming from the particle (kmol/m^2/s) N += Ni; diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C index 97b84a6049..b46ea2b5bf 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -200,8 +200,8 @@ Foam::scalar Foam::LiquidEvaporation::dh ( const label idc, const label idl, - const label p, - const label T + const scalar p, + const scalar T ) const { scalar dh = 0; @@ -230,8 +230,8 @@ Foam::scalar Foam::LiquidEvaporation::dh "(" "const label, " "const label, " - "const label, " - "const label" + "const scalar, " + "const scalar" ") const" ) << "Unknown enthalpyTransfer type" << abort(FatalError); } @@ -241,4 +241,21 @@ Foam::scalar Foam::LiquidEvaporation::dh } +template +Foam::scalar Foam::LiquidEvaporation::TMax +( + const scalar pIn, + const scalar TIn +) const +{ + scalar T = -GREAT; + forAll(liquids_, i) + { + T = max(T, liquids_.properties()[i].pv(pIn, TIn)); + } + + return T; +} + + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H index 60db6c63a5..5a97dc7394 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -127,9 +127,12 @@ public: ( const label idc, const label idl, - const label p, - const label T + const scalar p, + const scalar T ) const; + + //- Return maximum/limiting temperature + virtual scalar TMax(const scalar pIn, const scalar TIn) const; }; diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C index 803b849fa4..8a88620992 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -293,8 +293,8 @@ Foam::scalar Foam::LiquidEvaporationBoil::dh ( const label idc, const label idl, - const label p, - const label T + const scalar p, + const scalar T ) const { scalar dh = 0; @@ -329,8 +329,8 @@ Foam::scalar Foam::LiquidEvaporationBoil::dh "(" "const label, " "const label, " - "const label, " - "const label" + "const scalar, " + "const scalar" ") const" ) << "Unknown enthalpyTransfer type" << abort(FatalError); } @@ -340,4 +340,21 @@ Foam::scalar Foam::LiquidEvaporationBoil::dh } +template +Foam::scalar Foam::LiquidEvaporationBoil::TMax +( + const scalar pIn, + const scalar TIn +) const +{ + scalar T = -GREAT; + forAll(liquids_, i) + { + T = max(T, liquids_.properties()[i].pv(pIn, TIn)); + } + + return T; +} + + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.H index 48d92292cd..bf9ca867ce 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.H +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -137,9 +137,12 @@ public: ( const label idc, const label idl, - const label p, - const label T + const scalar p, + const scalar T ) const; + + //- Return maximum/limiting temperature + virtual scalar TMax(const scalar pIn, const scalar TIn) const; }; diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C index c84c7b83f8..7141ff9814 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -170,14 +170,25 @@ Foam::scalar Foam::PhaseChangeModel::dh ( const label idc, const label idl, - const label p, - const label T + const scalar p, + const scalar T ) const { return 0.0; } +template +Foam::scalar Foam::PhaseChangeModel::TMax +( + const scalar, + const scalar +) const +{ + return GREAT; +} + + template void Foam::PhaseChangeModel::addToPhaseChangeMass(const scalar dMass) { diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H index 3ee8d4dbd3..ac6c5c06b3 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H +++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -180,10 +180,12 @@ public: ( const label idc, const label idl, - const label p, - const label T + const scalar p, + const scalar T ) const; + //- Return maximum/limiting temperature + virtual scalar TMax(const scalar pIn, const scalar TIn) const; //- Add to phase change mass void addToPhaseChangeMass(const scalar dMass);