mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Adding evaporation-condensation lagragian model for solution
1) Adding LiquidEvapFuchsKnudsen model for lagrangian evaporation.
This models is based on a diffusion type of evaporation/
condensation on particles composed of solution (liquid + solid).
2) Adding modes of calculating the particle rho and volume change.
The new keyword in constantProperties is 'volumeUpdateMethod'
which three options:
a) constantRho
b) constantVolume
c) updateRhoAndVol
The old keyword 'constantVolume' true/face is still valid
3) The entry rho0 is now optional for multicomponent parcels.
If defined , it is used, but if it is not the actual mixture
provided is used to calculate rho0 of the particle.
T0 is still used as initial T and Cp0 is over-written in the
multicomponent cloud but still required.
4) Adding tutorial for evaporation/condensation model
This commit is contained in:
@ -562,7 +562,11 @@ void Foam::KinematicCloud<CloudType>::setParcelThermoProperties
|
|||||||
const scalar lagrangianDt
|
const scalar lagrangianDt
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
parcel.rho() = constProps_.rho0();
|
// If rho0 is given in the const properties
|
||||||
|
if (constProps_.rho0() != -1)
|
||||||
|
{
|
||||||
|
parcel.rho() = constProps_.rho0();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -581,6 +585,14 @@ void Foam::KinematicCloud<CloudType>::checkParcelProperties
|
|||||||
{
|
{
|
||||||
parcel.typeId() = constProps_.parcelTypeId();
|
parcel.typeId() = constProps_.parcelTypeId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parcel.rho() == -1)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "The kinematic cloud needs rho0 in the constantProperties "
|
||||||
|
<< " dictionary. " << nl
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2018-2019 OpenCFD Ltd.
|
Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -136,6 +136,25 @@ void Foam::ReactingHeterogeneousCloud<CloudType>::setParcelThermoProperties
|
|||||||
|
|
||||||
// Set the parcel to combust
|
// Set the parcel to combust
|
||||||
parcel.canCombust() = 1;
|
parcel.canCombust() = 1;
|
||||||
|
|
||||||
|
// If rho0 was given in constProp use it. If not use the composition
|
||||||
|
// to set tho
|
||||||
|
if (this->constProps_.rho0() == -1)
|
||||||
|
{
|
||||||
|
const label idGas = this->composition().idGas();
|
||||||
|
const label idLiquid = this->composition().idLiquid();
|
||||||
|
const label idSolid = this->composition().idSolid();
|
||||||
|
|
||||||
|
const scalarField& Ygas = this->composition().Y0(idGas);
|
||||||
|
const scalarField& Yliq = this->composition().Y0(idLiquid);
|
||||||
|
const scalarField& Ysol = this->composition().Y0(idSolid);
|
||||||
|
|
||||||
|
const scalar p0 =
|
||||||
|
this->composition().thermo().thermo().p()[parcel.cell()];
|
||||||
|
const scalar T0 = this->constProps_.T0();
|
||||||
|
|
||||||
|
parcel.rho() = this->composition().rho(Ygas, Yliq, Ysol, T0, p0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -174,6 +174,21 @@ void Foam::ReactingMultiphaseCloud<CloudType>::setParcelThermoProperties
|
|||||||
parcel.YGas() = this->composition().Y0(idGas);
|
parcel.YGas() = this->composition().Y0(idGas);
|
||||||
parcel.YLiquid() = this->composition().Y0(idLiquid);
|
parcel.YLiquid() = this->composition().Y0(idLiquid);
|
||||||
parcel.YSolid() = this->composition().Y0(idSolid);
|
parcel.YSolid() = this->composition().Y0(idSolid);
|
||||||
|
|
||||||
|
|
||||||
|
// If rho0 was given in constProp use it. If not use the composition
|
||||||
|
// to set tho
|
||||||
|
if (constProps_.rho0() == -1)
|
||||||
|
{
|
||||||
|
const scalarField& Ygas = this->composition().Y0(idGas);
|
||||||
|
const scalarField& Yliq = this->composition().Y0(idLiquid);
|
||||||
|
const scalarField& Ysol = this->composition().Y0(idSolid);
|
||||||
|
const scalar p0 =
|
||||||
|
this->composition().thermo().thermo().p()[parcel.cell()];
|
||||||
|
const scalar T0 = constProps_.T0();
|
||||||
|
|
||||||
|
parcel.rho() = this->composition().rho(Ygas, Yliq, Ysol, T0, p0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -67,7 +67,7 @@ inline Foam::KinematicParcel<ParcelType>::constantProperties::constantProperties
|
|||||||
dict_(parentDict.subOrEmptyDict("constantProperties")),
|
dict_(parentDict.subOrEmptyDict("constantProperties")),
|
||||||
parcelTypeId_(dict_, "parcelTypeId", -1),
|
parcelTypeId_(dict_, "parcelTypeId", -1),
|
||||||
rhoMin_(dict_, "rhoMin", 1e-15),
|
rhoMin_(dict_, "rhoMin", 1e-15),
|
||||||
rho0_(dict_, "rho0"),
|
rho0_(dict_, "rho0", -1),
|
||||||
minParcelMass_(dict_, "minParcelMass", 1e-15)
|
minParcelMass_(dict_, "minParcelMass", 1e-15)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2018-2019 OpenCFD Ltd.
|
Copyright (C) 2018-2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -80,6 +80,30 @@ Foam::scalar Foam::ReactingHeterogeneousParcel<ParcelType>::LEff
|
|||||||
|
|
||||||
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
template<class ParcelType>
|
||||||
|
template<class TrackCloudType>
|
||||||
|
Foam::scalar Foam::ReactingHeterogeneousParcel<ParcelType>::updatedDeltaVolume
|
||||||
|
(
|
||||||
|
TrackCloudType& cloud,
|
||||||
|
const scalarField& dMass,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
)
|
||||||
|
{
|
||||||
|
const auto& composition = cloud.composition();
|
||||||
|
|
||||||
|
scalarField dVolSolid(dMass.size(), Zero);
|
||||||
|
forAll(dVolSolid, i)
|
||||||
|
{
|
||||||
|
dVolSolid[i] =
|
||||||
|
dMass[i]/composition.solids().properties()[i].rho();
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum(dVolSolid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class ParcelType>
|
template<class ParcelType>
|
||||||
template<class TrackCloudType>
|
template<class TrackCloudType>
|
||||||
void Foam::ReactingHeterogeneousParcel<ParcelType>::calc
|
void Foam::ReactingHeterogeneousParcel<ParcelType>::calc
|
||||||
@ -191,16 +215,52 @@ void Foam::ReactingHeterogeneousParcel<ParcelType>::calc
|
|||||||
(void)this->updateMassFraction(mass0, dMassSolid, this->Y_);
|
(void)this->updateMassFraction(mass0, dMassSolid, this->Y_);
|
||||||
|
|
||||||
|
|
||||||
// Update particle density or diameter
|
if
|
||||||
if (cloud.constProps().constantVolume())
|
(
|
||||||
|
cloud.constProps().volUpdateType()
|
||||||
|
== constantProperties::volumeUpadteType::mUndefined
|
||||||
|
)
|
||||||
{
|
{
|
||||||
this->rho_ = mass1/this->volume();
|
if (cloud.constProps().constantVolume())
|
||||||
|
{
|
||||||
|
this->rho_ = mass1/this->volume();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->d_ = cbrt(mass1/this->rho_*6.0/pi);
|
switch (cloud.constProps().volUpdateType())
|
||||||
}
|
{
|
||||||
|
case constantProperties::volumeUpadteType::mConstRho :
|
||||||
|
{
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case constantProperties::volumeUpadteType::mConstVol :
|
||||||
|
{
|
||||||
|
this->rho_ = mass1/this->volume();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case constantProperties::volumeUpadteType::mUpdateRhoAndVol :
|
||||||
|
{
|
||||||
|
scalar deltaVol =
|
||||||
|
updatedDeltaVolume
|
||||||
|
(
|
||||||
|
cloud,
|
||||||
|
dMassSolid,
|
||||||
|
pc,
|
||||||
|
T0
|
||||||
|
);
|
||||||
|
|
||||||
|
this->rho_ = mass1/(this->volume() + deltaVol);
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6.0/pi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Correct surface values due to emitted species
|
// Correct surface values due to emitted species
|
||||||
this->correctSurfaceValues(cloud, td, Ts, Cs, rhos, mus, Prs, kappas);
|
this->correctSurfaceValues(cloud, td, Ts, Cs, rhos, mus, Prs, kappas);
|
||||||
Res = this->Re(rhos, U0, td.Uc(), this->d_, mus);
|
Res = this->Re(rhos, U0, td.Uc(), this->d_, mus);
|
||||||
|
|||||||
@ -168,6 +168,16 @@ protected:
|
|||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Return change of volume due to mass exchange
|
||||||
|
template<class TrackCloudType>
|
||||||
|
scalar updatedDeltaVolume
|
||||||
|
(
|
||||||
|
TrackCloudType& cloud,
|
||||||
|
const scalarField& dMass,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
//- Calculate surface reactions
|
//- Calculate surface reactions
|
||||||
template<class TrackCloudType>
|
template<class TrackCloudType>
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -139,6 +139,48 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::updateMassFractions
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class ParcelType>
|
||||||
|
template<class TrackCloudType>
|
||||||
|
Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::updatedDeltaVolume
|
||||||
|
(
|
||||||
|
TrackCloudType& cloud,
|
||||||
|
const scalarField& dMassGas,
|
||||||
|
const scalarField& dMassLiquid,
|
||||||
|
const scalarField& dMassSolid,
|
||||||
|
const label idG,
|
||||||
|
const label idL,
|
||||||
|
const label idS,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
)
|
||||||
|
{
|
||||||
|
const auto& props = cloud.composition().phaseProps()[idG];
|
||||||
|
const auto& thermo = cloud.composition().thermo();
|
||||||
|
|
||||||
|
scalarField dVolGas(dMassGas.size(), Zero);
|
||||||
|
forAll(dMassGas, i)
|
||||||
|
{
|
||||||
|
label cid = props.carrierIds()[i];
|
||||||
|
dVolGas[i] = -dMassGas[i]/thermo.carrier().rho(cid, p, T);
|
||||||
|
}
|
||||||
|
|
||||||
|
scalarField dVolLiquid(dMassLiquid.size(), Zero);
|
||||||
|
forAll(dMassLiquid, i)
|
||||||
|
{
|
||||||
|
dVolLiquid[i] =
|
||||||
|
-dMassLiquid[i]/thermo.liquids().properties()[i].rho(p, T);
|
||||||
|
}
|
||||||
|
|
||||||
|
scalarField dVolSolid(dMassSolid.size(), Zero);
|
||||||
|
forAll(dMassSolid, i)
|
||||||
|
{
|
||||||
|
dVolSolid[i] = -dMassSolid[i]/thermo.solids().properties()[i].rho();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (sum(dVolGas) + sum(dVolLiquid) + sum(dMassSolid));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class ParcelType>
|
template<class ParcelType>
|
||||||
@ -188,6 +230,8 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
|
|||||||
const vector& U0 = this->U_;
|
const vector& U0 = this->U_;
|
||||||
const scalar T0 = this->T_;
|
const scalar T0 = this->T_;
|
||||||
const scalar mass0 = this->mass();
|
const scalar mass0 = this->mass();
|
||||||
|
const scalar rho0 = this->rho_;
|
||||||
|
|
||||||
|
|
||||||
const scalar pc = td.pc();
|
const scalar pc = td.pc();
|
||||||
|
|
||||||
@ -256,9 +300,11 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
|
|||||||
d0,
|
d0,
|
||||||
T0,
|
T0,
|
||||||
mass0,
|
mass0,
|
||||||
|
rho0,
|
||||||
idL,
|
idL,
|
||||||
YMix[LIQ],
|
YMix[LIQ],
|
||||||
YLiquid_,
|
YLiquid_,
|
||||||
|
YMix[SLD]*YSolid_,
|
||||||
dMassPC,
|
dMassPC,
|
||||||
Sh,
|
Sh,
|
||||||
Ne,
|
Ne,
|
||||||
@ -382,16 +428,57 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
|
|||||||
|
|
||||||
(void)updateMassFractions(mass0, dMassGas, dMassLiquid, dMassSolid);
|
(void)updateMassFractions(mass0, dMassGas, dMassLiquid, dMassSolid);
|
||||||
|
|
||||||
// Update particle density or diameter
|
if
|
||||||
if (cloud.constProps().constantVolume())
|
(
|
||||||
|
cloud.constProps().volUpdateType()
|
||||||
|
== constantProperties::volumeUpadteType::mUndefined
|
||||||
|
)
|
||||||
{
|
{
|
||||||
this->rho_ = mass1/this->volume();
|
if (cloud.constProps().constantVolume())
|
||||||
|
{
|
||||||
|
this->rho_ = mass1/this->volume();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->d_ = cbrt(mass1/this->rho_*6.0/pi);
|
switch (cloud.constProps().volUpdateType())
|
||||||
}
|
{
|
||||||
|
case constantProperties::volumeUpadteType::mConstRho :
|
||||||
|
{
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case constantProperties::volumeUpadteType::mConstVol :
|
||||||
|
{
|
||||||
|
this->rho_ = mass1/this->volume();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case constantProperties::volumeUpadteType::mUpdateRhoAndVol :
|
||||||
|
{
|
||||||
|
scalar deltaVol =
|
||||||
|
updatedDeltaVolume
|
||||||
|
(
|
||||||
|
cloud,
|
||||||
|
dMassGas,
|
||||||
|
dMassLiquid,
|
||||||
|
dMassSolid,
|
||||||
|
idG,
|
||||||
|
idL,
|
||||||
|
idS,
|
||||||
|
pc,
|
||||||
|
T0
|
||||||
|
);
|
||||||
|
|
||||||
|
this->rho_ = mass1/(this->volume() + deltaVol);
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Correct surface values due to emitted species
|
// Correct surface values due to emitted species
|
||||||
this->correctSurfaceValues(cloud, td, Ts, Cs, rhos, mus, Prs, kappas);
|
this->correctSurfaceValues(cloud, td, Ts, Cs, rhos, mus, Prs, kappas);
|
||||||
Res = this->Re(rhos, U0, td.Uc(), this->d_, mus);
|
Res = this->Re(rhos, U0, td.Uc(), this->d_, mus);
|
||||||
|
|||||||
@ -209,6 +209,22 @@ protected:
|
|||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
|
|
||||||
|
//- Return change of volume due to mass exchange
|
||||||
|
template<class TrackCloudType>
|
||||||
|
scalar updatedDeltaVolume
|
||||||
|
(
|
||||||
|
TrackCloudType& cloud,
|
||||||
|
const scalarField& dMassGas,
|
||||||
|
const scalarField& dMassLiquid,
|
||||||
|
const scalarField& dMassSolid,
|
||||||
|
const label idG,
|
||||||
|
const label idL,
|
||||||
|
const label idS,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
);
|
||||||
|
|
||||||
//- Calculate Devolatilisation
|
//- Calculate Devolatilisation
|
||||||
template<class TrackCloudType>
|
template<class TrackCloudType>
|
||||||
void calcDevolatilisation
|
void calcDevolatilisation
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -35,6 +36,29 @@ using namespace Foam::constant::mathematical;
|
|||||||
|
|
||||||
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class ParcelType>
|
||||||
|
template<class TrackCloudType>
|
||||||
|
Foam::scalar Foam::ReactingParcel<ParcelType>::updatedDeltaVolume
|
||||||
|
(
|
||||||
|
TrackCloudType& cloud,
|
||||||
|
const scalarField& dMass,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
)
|
||||||
|
{
|
||||||
|
const auto& composition = cloud.composition();
|
||||||
|
|
||||||
|
scalarField dVolLiquid(dMass.size(), Zero);
|
||||||
|
forAll(dVolLiquid, i)
|
||||||
|
{
|
||||||
|
dVolLiquid[i] =
|
||||||
|
dMass[i]/composition.liquids().properties()[i].rho(p, T);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum(dVolLiquid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class ParcelType>
|
template<class ParcelType>
|
||||||
template<class TrackCloudType>
|
template<class TrackCloudType>
|
||||||
void Foam::ReactingParcel<ParcelType>::calcPhaseChange
|
void Foam::ReactingParcel<ParcelType>::calcPhaseChange
|
||||||
@ -49,9 +73,11 @@ void Foam::ReactingParcel<ParcelType>::calcPhaseChange
|
|||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar mass,
|
const scalar mass,
|
||||||
|
const scalar rho,
|
||||||
const label idPhase,
|
const label idPhase,
|
||||||
const scalar YPhase,
|
const scalar YPhase,
|
||||||
const scalarField& Y,
|
const scalarField& Y,
|
||||||
|
const scalarField& Ysol,
|
||||||
scalarField& dMassPC,
|
scalarField& dMassPC,
|
||||||
scalar& Sh,
|
scalar& Sh,
|
||||||
scalar& N,
|
scalar& N,
|
||||||
@ -62,7 +88,8 @@ void Foam::ReactingParcel<ParcelType>::calcPhaseChange
|
|||||||
const auto& composition = cloud.composition();
|
const auto& composition = cloud.composition();
|
||||||
auto& phaseChange = cloud.phaseChange();
|
auto& phaseChange = cloud.phaseChange();
|
||||||
|
|
||||||
if (!phaseChange.active() || (YPhase < SMALL))
|
// Some models allow evaporation and condensation
|
||||||
|
if (!phaseChange.active())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -70,7 +97,6 @@ void Foam::ReactingParcel<ParcelType>::calcPhaseChange
|
|||||||
scalarField X(composition.liquids().X(Y));
|
scalarField X(composition.liquids().X(Y));
|
||||||
|
|
||||||
scalar Tvap = phaseChange.Tvap(X);
|
scalar Tvap = phaseChange.Tvap(X);
|
||||||
|
|
||||||
if (T < Tvap)
|
if (T < Tvap)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -89,16 +115,27 @@ void Foam::ReactingParcel<ParcelType>::calcPhaseChange
|
|||||||
Pr,
|
Pr,
|
||||||
d,
|
d,
|
||||||
nus,
|
nus,
|
||||||
|
rho,
|
||||||
Tdash,
|
Tdash,
|
||||||
Tsdash,
|
Tsdash,
|
||||||
td.pc(),
|
td.pc(),
|
||||||
td.Tc(),
|
td.Tc(),
|
||||||
X,
|
X, // components molar fractions purely in the liquid
|
||||||
|
Ysol*mass, // total solid mass
|
||||||
|
YPhase*Y*mass, // total liquid mass
|
||||||
dMassPC
|
dMassPC
|
||||||
);
|
);
|
||||||
|
|
||||||
// Limit phase change mass by availability of each specie
|
// Limit phase change mass by availability of each specie
|
||||||
dMassPC = min(mass*YPhase*Y, dMassPC);
|
forAll (Y, i)
|
||||||
|
{
|
||||||
|
// evaporation
|
||||||
|
if (dMassPC[i] > 0)
|
||||||
|
{
|
||||||
|
dMassPC[i] = min(mass*YPhase*Y[i], dMassPC[i]);
|
||||||
|
}
|
||||||
|
// condensation Do something?
|
||||||
|
}
|
||||||
|
|
||||||
const scalar dMassTot = sum(dMassPC);
|
const scalar dMassTot = sum(dMassPC);
|
||||||
|
|
||||||
@ -394,6 +431,7 @@ void Foam::ReactingParcel<ParcelType>::calc
|
|||||||
const vector& U0 = this->U_;
|
const vector& U0 = this->U_;
|
||||||
const scalar T0 = this->T_;
|
const scalar T0 = this->T_;
|
||||||
const scalar mass0 = this->mass();
|
const scalar mass0 = this->mass();
|
||||||
|
const scalar rho0 = this->rho_;
|
||||||
|
|
||||||
|
|
||||||
// Calc surface values
|
// Calc surface values
|
||||||
@ -455,9 +493,11 @@ void Foam::ReactingParcel<ParcelType>::calc
|
|||||||
d0,
|
d0,
|
||||||
T0,
|
T0,
|
||||||
mass0,
|
mass0,
|
||||||
|
rho0,
|
||||||
0,
|
0,
|
||||||
1.0,
|
1.0,
|
||||||
Y_,
|
Y_,
|
||||||
|
scalarField(0),
|
||||||
dMassPC,
|
dMassPC,
|
||||||
Sh,
|
Sh,
|
||||||
Ne,
|
Ne,
|
||||||
@ -474,14 +514,52 @@ void Foam::ReactingParcel<ParcelType>::calc
|
|||||||
|
|
||||||
this->Cp_ = composition.Cp(0, Y_, td.pc(), T0);
|
this->Cp_ = composition.Cp(0, Y_, td.pc(), T0);
|
||||||
|
|
||||||
// Update particle density or diameter
|
if
|
||||||
if (cloud.constProps().constantVolume())
|
(
|
||||||
|
cloud.constProps().volUpdateType()
|
||||||
|
== constantProperties::volumeUpadteType::mUndefined
|
||||||
|
)
|
||||||
{
|
{
|
||||||
this->rho_ = mass1/this->volume();
|
// Update particle density or diameter
|
||||||
|
if (cloud.constProps().constantVolume())
|
||||||
|
{
|
||||||
|
this->rho_ = mass1/this->volume();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->d_ = cbrt(mass1/this->rho_*6.0/pi);
|
switch (cloud.constProps().volUpdateType())
|
||||||
|
{
|
||||||
|
case constantProperties::volumeUpadteType::mConstRho :
|
||||||
|
{
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case constantProperties::volumeUpadteType::mConstVol :
|
||||||
|
{
|
||||||
|
this->rho_ = mass1/this->volume();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case constantProperties::volumeUpadteType::mUpdateRhoAndVol :
|
||||||
|
{
|
||||||
|
scalar deltaVol =
|
||||||
|
updatedDeltaVolume
|
||||||
|
(
|
||||||
|
cloud,
|
||||||
|
dMass,
|
||||||
|
td.pc(),
|
||||||
|
T0
|
||||||
|
);
|
||||||
|
this->rho_ = mass1/(this->volume() - deltaVol);
|
||||||
|
this->d_ = cbrt(mass1/this->rho_*6/pi);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the particle when mass falls below minimum threshold
|
// Remove the particle when mass falls below minimum threshold
|
||||||
|
|||||||
@ -79,19 +79,39 @@ public:
|
|||||||
static const std::size_t sizeofFields;
|
static const std::size_t sizeofFields;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//- Class to hold reacting parcel constant properties
|
//- Class to hold reacting parcel constant properties
|
||||||
class constantProperties
|
class constantProperties
|
||||||
:
|
:
|
||||||
public ParcelType::constantProperties
|
public ParcelType::constantProperties
|
||||||
{
|
{
|
||||||
// Private data
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Type of activity coefficient models
|
||||||
|
enum volumeUpadteType
|
||||||
|
{
|
||||||
|
mConstRho,
|
||||||
|
mConstVol,
|
||||||
|
mUpdateRhoAndVol,
|
||||||
|
mUndefined
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private data
|
||||||
//- Minimum pressure [Pa]
|
//- Minimum pressure [Pa]
|
||||||
demandDrivenEntry<scalar> pMin_;
|
demandDrivenEntry<scalar> pMin_;
|
||||||
|
|
||||||
//- Constant volume flag - e.g. during mass transfer
|
//- Method to update particle rho and diameter
|
||||||
|
//- 0: constant rho
|
||||||
|
//- 1: constant volume
|
||||||
|
//- 2: recalculation of rho and volume based on the lost mass
|
||||||
demandDrivenEntry<bool> constantVolume_;
|
demandDrivenEntry<bool> constantVolume_;
|
||||||
|
|
||||||
|
//- Method to update vol and rho
|
||||||
|
demandDrivenEntry<label> volUpdateType_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -114,6 +134,9 @@ public:
|
|||||||
|
|
||||||
//- Return const access to the constant volume flag
|
//- Return const access to the constant volume flag
|
||||||
inline bool constantVolume() const;
|
inline bool constantVolume() const;
|
||||||
|
|
||||||
|
//- Return const access to the constant volume flag
|
||||||
|
inline label volUpdateType() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -181,6 +204,17 @@ protected:
|
|||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Return change of volume due to mass exchange
|
||||||
|
template<class TrackCloudType>
|
||||||
|
scalar updatedDeltaVolume
|
||||||
|
(
|
||||||
|
TrackCloudType& cloud,
|
||||||
|
const scalarField& dMass,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
//- Calculate Phase change
|
//- Calculate Phase change
|
||||||
template<class TrackCloudType>
|
template<class TrackCloudType>
|
||||||
void calcPhaseChange
|
void calcPhaseChange
|
||||||
@ -195,9 +229,11 @@ protected:
|
|||||||
const scalar d, // diameter
|
const scalar d, // diameter
|
||||||
const scalar T, // temperature
|
const scalar T, // temperature
|
||||||
const scalar mass, // mass
|
const scalar mass, // mass
|
||||||
|
const scalar rho, // density
|
||||||
const label idPhase, // id of phase involved in phase change
|
const label idPhase, // id of phase involved in phase change
|
||||||
const scalar YPhase, // total mass fraction
|
const scalar YPhase, // total mass fraction
|
||||||
const scalarField& YComponents, // component mass fractions
|
const scalarField& YLiq, // liquid component mass fractions
|
||||||
|
const scalarField& YSol, // solid component mass fractions
|
||||||
scalarField& dMassPC, // mass transfer - local to parcel
|
scalarField& dMassPC, // mass transfer - local to parcel
|
||||||
scalar& Sh, // explicit parcel enthalpy source
|
scalar& Sh, // explicit parcel enthalpy source
|
||||||
scalar& N, // flux of species emitted from parcel
|
scalar& N, // flux of species emitted from parcel
|
||||||
|
|||||||
@ -34,7 +34,8 @@ Foam::ReactingParcel<ParcelType>::constantProperties::constantProperties()
|
|||||||
:
|
:
|
||||||
ParcelType::constantProperties(),
|
ParcelType::constantProperties(),
|
||||||
pMin_(this->dict_, 0.0),
|
pMin_(this->dict_, 0.0),
|
||||||
constantVolume_(this->dict_, false)
|
constantVolume_(this->dict_, false),
|
||||||
|
volUpdateType_(this->dict_, mUndefined)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -46,7 +47,8 @@ inline Foam::ReactingParcel<ParcelType>::constantProperties::constantProperties
|
|||||||
:
|
:
|
||||||
ParcelType::constantProperties(cp),
|
ParcelType::constantProperties(cp),
|
||||||
pMin_(cp.pMin_),
|
pMin_(cp.pMin_),
|
||||||
constantVolume_(cp.constantVolume_)
|
constantVolume_(cp.constantVolume_),
|
||||||
|
volUpdateType_(cp.volUpdateType_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -58,8 +60,54 @@ inline Foam::ReactingParcel<ParcelType>::constantProperties::constantProperties
|
|||||||
:
|
:
|
||||||
ParcelType::constantProperties(parentDict),
|
ParcelType::constantProperties(parentDict),
|
||||||
pMin_(this->dict_, "pMin", 1000.0),
|
pMin_(this->dict_, "pMin", 1000.0),
|
||||||
constantVolume_(this->dict_, word("constantVolume"))
|
constantVolume_(this->dict_, "constantVolume", false),
|
||||||
{}
|
volUpdateType_(this->dict_, "volumeUpdateMethod")
|
||||||
|
{
|
||||||
|
// If constantVolume found use it
|
||||||
|
if (this->dict_.found("constantVolume"))
|
||||||
|
{
|
||||||
|
volUpdateType_.setValue(mUndefined);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!this->dict_.found("volumeUpdateMethod"))
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Either 'constantVolume' or 'volumeUpdateMethod' " << nl
|
||||||
|
<< " must be provided. " << nl
|
||||||
|
<< " The new keyword is 'volumeUpdateMethod'. " << nl
|
||||||
|
<< " Available methods are : " << nl
|
||||||
|
<< " constantRho, constantVolume or updateRhoAndVol. " << nl
|
||||||
|
<< " 'constantVolume' is either true/false " << nl
|
||||||
|
<< nl << exit(FatalError);
|
||||||
|
}
|
||||||
|
const word volumeUpdateMethod
|
||||||
|
(
|
||||||
|
this->dict_.getWord("volumeUpdateMethod")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (volumeUpdateMethod == "constantRho")
|
||||||
|
{
|
||||||
|
volUpdateType_.setValue(mConstRho);
|
||||||
|
}
|
||||||
|
else if (volumeUpdateMethod == "constantVolume")
|
||||||
|
{
|
||||||
|
volUpdateType_.setValue(mConstVol);
|
||||||
|
}
|
||||||
|
else if (volumeUpdateMethod == "updateRhoAndVol")
|
||||||
|
{
|
||||||
|
volUpdateType_.setValue(mUpdateRhoAndVol);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "The method provided is not correct " << nl
|
||||||
|
<< " Available methods are : " << nl
|
||||||
|
<< " constantRho, constantVolume or updateRhoAndVol. " << nl
|
||||||
|
<< nl << exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class ParcelType>
|
template<class ParcelType>
|
||||||
@ -155,6 +203,14 @@ Foam::ReactingParcel<ParcelType>::constantProperties::constantVolume() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class ParcelType>
|
||||||
|
inline Foam::label
|
||||||
|
Foam::ReactingParcel<ParcelType>::constantProperties::volUpdateType() const
|
||||||
|
{
|
||||||
|
return volUpdateType_.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * ThermoParcel Member Functions * * * * * * * * * * * * //
|
// * * * * * * * * * * ThermoParcel Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
template<class ParcelType>
|
template<class ParcelType>
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -33,6 +34,7 @@ License
|
|||||||
#include "NoPhaseChange.H"
|
#include "NoPhaseChange.H"
|
||||||
#include "LiquidEvaporation.H"
|
#include "LiquidEvaporation.H"
|
||||||
#include "LiquidEvaporationBoil.H"
|
#include "LiquidEvaporationBoil.H"
|
||||||
|
#include "LiquidEvapFuchsKnudsen.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -41,7 +43,8 @@ License
|
|||||||
makePhaseChangeModel(CloudType); \
|
makePhaseChangeModel(CloudType); \
|
||||||
makePhaseChangeModelType(NoPhaseChange, CloudType); \
|
makePhaseChangeModelType(NoPhaseChange, CloudType); \
|
||||||
makePhaseChangeModelType(LiquidEvaporation, CloudType); \
|
makePhaseChangeModelType(LiquidEvaporation, CloudType); \
|
||||||
makePhaseChangeModelType(LiquidEvaporationBoil, CloudType);
|
makePhaseChangeModelType(LiquidEvaporationBoil, CloudType); \
|
||||||
|
makePhaseChangeModelType(LiquidEvapFuchsKnudsen, CloudType);
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2015 OpenFOAM Foundation
|
Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -261,11 +262,14 @@ Foam::tmp<Foam::scalarField> Foam::CompositionModel<CloudType>::X
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
case phaseProperties::SOLID:
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
forAll(Y, i)
|
||||||
<< "Only possible to convert gas and liquid mass fractions"
|
{
|
||||||
<< abort(FatalError);
|
X[i] = Y[i]/thermo_.solids().properties()[i].W();
|
||||||
|
WInv += X[i];
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -535,6 +539,67 @@ Foam::scalar Foam::CompositionModel<CloudType>::L
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::scalar Foam::CompositionModel<CloudType>::rho
|
||||||
|
(
|
||||||
|
const scalarField& Ygas,
|
||||||
|
const scalarField& Yliq,
|
||||||
|
const scalarField& Ysol,
|
||||||
|
const scalar T,
|
||||||
|
const scalar p
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const scalarField& YMix = this->YMixture0();
|
||||||
|
|
||||||
|
const auto& carrier = this->carrier();
|
||||||
|
const auto& thermo = this->thermo();
|
||||||
|
|
||||||
|
scalarField Xgas(Ygas.size(), 0);
|
||||||
|
scalar WInv = 0;
|
||||||
|
forAll (Ygas, i)
|
||||||
|
{
|
||||||
|
label cid = phaseProps_[idGas()].carrierIds()[i];
|
||||||
|
Xgas[i] = YMix[idGas()]*Ygas[i]/carrier.W(cid);
|
||||||
|
WInv += Xgas[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
scalarField Xliq(Yliq.size(), 0);
|
||||||
|
forAll (Yliq, i)
|
||||||
|
{
|
||||||
|
Xliq[i] = YMix[idLiquid()]*Yliq[i]/thermo.liquids().properties()[i].W();
|
||||||
|
WInv += Xliq[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
scalarField Xsol(Ysol.size(), 0);
|
||||||
|
forAll (Ysol, i)
|
||||||
|
{
|
||||||
|
Xsol[i] = YMix[idSolid()]*Ysol[i]/thermo.solids().properties()[i].W();
|
||||||
|
WInv += Xsol[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
Xgas /= (WInv + ROOTVSMALL);
|
||||||
|
Xliq /= (WInv + ROOTVSMALL);
|
||||||
|
Xsol /= (WInv + ROOTVSMALL);
|
||||||
|
|
||||||
|
|
||||||
|
scalar rho = 0;
|
||||||
|
forAll (Xgas, i)
|
||||||
|
{
|
||||||
|
label cid = phaseProps_[idGas()].carrierIds()[i];
|
||||||
|
rho += Xgas[i]*carrier.rho(cid, p, T);
|
||||||
|
}
|
||||||
|
forAll (Xliq, i)
|
||||||
|
{
|
||||||
|
rho += Xliq[i]*thermo.liquids().properties()[i].rho(p, T);
|
||||||
|
}
|
||||||
|
forAll (Xsol, i)
|
||||||
|
{
|
||||||
|
rho += Xsol[i]*thermo.solids().properties()[i].rho();
|
||||||
|
}
|
||||||
|
|
||||||
|
return rho;
|
||||||
|
|
||||||
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#include "CompositionModelNew.C"
|
#include "CompositionModelNew.C"
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -265,6 +266,16 @@ public:
|
|||||||
const scalar p,
|
const scalar p,
|
||||||
const scalar T
|
const scalar T
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
//- Return rho of the full composition
|
||||||
|
virtual scalar rho
|
||||||
|
(
|
||||||
|
const scalarField& Ygas,
|
||||||
|
const scalarField& Yliq,
|
||||||
|
const scalarField& Ysol,
|
||||||
|
const scalar T,
|
||||||
|
const scalar p
|
||||||
|
) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,338 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "LiquidEvapFuchsKnudsen.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::LiquidEvapFuchsKnudsen<CloudType>::calcXcSolution
|
||||||
|
(
|
||||||
|
const scalar massliq,
|
||||||
|
const scalar masssol,
|
||||||
|
scalar& Xliq,
|
||||||
|
scalar& Xsol
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const scalar Yliq = massliq/(massliq + masssol);
|
||||||
|
const scalar Ysol = 1 - Yliq;
|
||||||
|
Xliq = Yliq/liquids_.properties()[liqToLiqMap_].W();
|
||||||
|
Xsol = Ysol/this->owner().thermo().solids().properties()[solToSolMap_].W();
|
||||||
|
Xliq /= (Xliq + Xsol);
|
||||||
|
Xsol = 1 - Xliq;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::LiquidEvapFuchsKnudsen<CloudType>::calcXc
|
||||||
|
(
|
||||||
|
const label celli
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
scalarField Xc(this->owner().thermo().carrier().Y().size());
|
||||||
|
|
||||||
|
forAll(Xc, i)
|
||||||
|
{
|
||||||
|
Xc[i] =
|
||||||
|
this->owner().thermo().carrier().Y()[i][celli]
|
||||||
|
/this->owner().thermo().carrier().W(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Xc/sum(Xc);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::scalar Foam::LiquidEvapFuchsKnudsen<CloudType>::Sh
|
||||||
|
(
|
||||||
|
const scalar Re,
|
||||||
|
const scalar Sc
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return cbrt(1 + Sc*Re)*max(1, pow(Re, 0.077));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::scalar Foam::LiquidEvapFuchsKnudsen<CloudType>::activityCoeff
|
||||||
|
(
|
||||||
|
const scalar Xliq,
|
||||||
|
const scalar Xsol
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
switch (method_)
|
||||||
|
{
|
||||||
|
case pUNIFAC:
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Activity coefficient UNIFAC is not implemented " << nl
|
||||||
|
<< abort(FatalError);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case pHoff:
|
||||||
|
{
|
||||||
|
const scalar ic = this->coeffDict().getScalar("ic");
|
||||||
|
return inv((1 + ic*Xsol/(Xliq + ROOTVSMALL)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::LiquidEvapFuchsKnudsen<CloudType>::LiquidEvapFuchsKnudsen
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
CloudType& owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
PhaseChangeModel<CloudType>(dict, owner, typeName),
|
||||||
|
method_(pHoff),
|
||||||
|
gamma_(this->coeffDict().getScalar("gamma")),
|
||||||
|
alpha_(this->coeffDict().getScalar("alpham")),
|
||||||
|
liquids_(owner.thermo().liquids()),
|
||||||
|
solution_(this->coeffDict().lookup("solution")),
|
||||||
|
liqToCarrierMap_(-1),
|
||||||
|
liqToLiqMap_(-1),
|
||||||
|
solToSolMap_(-1)
|
||||||
|
{
|
||||||
|
if (solution_.size() > 2)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Solution is not well defined. It should be (liquid solid)"
|
||||||
|
<< nl << endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Info<< "Participating liquid-solid species:" << endl;
|
||||||
|
|
||||||
|
Info<< " " << solution_[0] << endl;
|
||||||
|
liqToCarrierMap_ =
|
||||||
|
owner.composition().carrierId(solution_[0]);
|
||||||
|
|
||||||
|
// Determine mapping between model active liquids and global liquids
|
||||||
|
const label idLiquid = owner.composition().idLiquid();
|
||||||
|
liqToLiqMap_ =
|
||||||
|
owner.composition().localId(idLiquid, solution_[0]);
|
||||||
|
|
||||||
|
// Mapping for the solid
|
||||||
|
const label idSolid = owner.composition().idSolid();
|
||||||
|
|
||||||
|
solToSolMap_ =
|
||||||
|
owner.composition().localId(idSolid, solution_[1]);
|
||||||
|
|
||||||
|
const word activityCoefficientype
|
||||||
|
(
|
||||||
|
this->coeffDict().getWord("activityCoefficient")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (activityCoefficientype == "Hoff")
|
||||||
|
{
|
||||||
|
method_ = pHoff;
|
||||||
|
}
|
||||||
|
else if (activityCoefficientype == "UNIFAC")
|
||||||
|
{
|
||||||
|
method_ = pUNIFAC;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "activityCoefficient must be either 'Hoff' or 'UNIFAC'"
|
||||||
|
<< nl << exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::LiquidEvapFuchsKnudsen<CloudType>::LiquidEvapFuchsKnudsen
|
||||||
|
(
|
||||||
|
const LiquidEvapFuchsKnudsen<CloudType>& pcm
|
||||||
|
)
|
||||||
|
:
|
||||||
|
PhaseChangeModel<CloudType>(pcm),
|
||||||
|
method_(pcm.method_),
|
||||||
|
gamma_(pcm.gamma_),
|
||||||
|
alpha_(pcm.alpha_),
|
||||||
|
liquids_(pcm.owner().thermo().liquids()),
|
||||||
|
solution_(pcm.solution_),
|
||||||
|
liqToCarrierMap_(pcm.liqToCarrierMap_),
|
||||||
|
liqToLiqMap_(pcm.liqToLiqMap_),
|
||||||
|
solToSolMap_(pcm.solToSolMap_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::LiquidEvapFuchsKnudsen<CloudType>::~LiquidEvapFuchsKnudsen()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
void Foam::LiquidEvapFuchsKnudsen<CloudType>::calculate
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label celli,
|
||||||
|
const scalar Re,
|
||||||
|
const scalar Pr,
|
||||||
|
const scalar d,
|
||||||
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
|
const scalar T,
|
||||||
|
const scalar Ts,
|
||||||
|
const scalar pc,
|
||||||
|
const scalar Tc,
|
||||||
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
|
scalarField& dMassPC
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const scalar rhog = this->owner().thermo().thermo().rho()()[celli];
|
||||||
|
|
||||||
|
const label gid = liqToCarrierMap_;
|
||||||
|
const label lid = liqToLiqMap_;
|
||||||
|
const label sid = solToSolMap_;
|
||||||
|
|
||||||
|
const scalar W = liquids_.properties()[lid].W();
|
||||||
|
|
||||||
|
const scalar YeInf = this->owner().thermo().carrier().Y()[gid][celli];
|
||||||
|
|
||||||
|
scalar sigma = liquids_.properties()[lid].sigma(pc, Ts);
|
||||||
|
|
||||||
|
// Kelvin effect
|
||||||
|
const scalar Ke = exp(4*sigma*W/(RR*rho*d*T));
|
||||||
|
|
||||||
|
// vapour diffusivity [m2/s]
|
||||||
|
const scalar Dab = liquids_.properties()[lid].D(pc, Ts);
|
||||||
|
|
||||||
|
// saturation pressure for species i [pa]
|
||||||
|
const scalar pSat = liquids_.properties()[lid].pv(pc, T);
|
||||||
|
|
||||||
|
scalar Xliq(0), Xsol(0);
|
||||||
|
calcXcSolution(liqMass[lid], solMass[sid], Xliq, Xsol);
|
||||||
|
|
||||||
|
// Activity Coefficient (gammaE*Xe)
|
||||||
|
const scalar gamma = activityCoeff(Xliq, Xsol);
|
||||||
|
|
||||||
|
// water concentration at surface
|
||||||
|
const scalar Rliq = RR/W;
|
||||||
|
const scalar YeSurf = max(gamma*Ke*pSat/(Rliq*T*rhog), 0);
|
||||||
|
|
||||||
|
const scalar Kn = 2*gamma_/d;
|
||||||
|
const scalar Cm =
|
||||||
|
(1+Kn)/(1+ (4/(3*alpha_) + 0.377)*Kn + sqr(Kn)*4/(3*alpha_));
|
||||||
|
|
||||||
|
// Schmidt number
|
||||||
|
const scalar Sc = nu/(Dab + ROOTVSMALL);
|
||||||
|
|
||||||
|
// Sherwood number
|
||||||
|
const scalar Sherwood = Sh(Re, Sc);
|
||||||
|
|
||||||
|
// mass flux [kg/s]
|
||||||
|
const scalar Ni = (rhog*Sherwood*Dab*Cm/d)*log((1 - YeInf)/(1 - YeSurf));
|
||||||
|
|
||||||
|
// mass transfer [kg]
|
||||||
|
dMassPC[lid] += Ni*dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::scalar Foam::LiquidEvapFuchsKnudsen<CloudType>::dh
|
||||||
|
(
|
||||||
|
const label idc,
|
||||||
|
const label idl,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
scalar dh = 0;
|
||||||
|
|
||||||
|
typedef PhaseChangeModel<CloudType> parent;
|
||||||
|
switch (parent::enthalpyTransfer_)
|
||||||
|
{
|
||||||
|
case (parent::etLatentHeat):
|
||||||
|
{
|
||||||
|
dh = liquids_.properties()[idl].hl(p, T);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case (parent::etEnthalpyDifference):
|
||||||
|
{
|
||||||
|
scalar hc = this->owner().composition().carrier().Ha(idc, p, T);
|
||||||
|
scalar hp = liquids_.properties()[idl].h(p, T);
|
||||||
|
|
||||||
|
dh = hc - hp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Unknown enthalpyTransfer type" << abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::scalar Foam::LiquidEvapFuchsKnudsen<CloudType>::Tvap
|
||||||
|
(
|
||||||
|
const scalarField& X
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return Zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
Foam::scalar Foam::LiquidEvapFuchsKnudsen<CloudType>::TMax
|
||||||
|
(
|
||||||
|
const scalar p,
|
||||||
|
const scalarField& X
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// If liquid is present calculates pvInter
|
||||||
|
if (sum(X) > SMALL)
|
||||||
|
{
|
||||||
|
return liquids_.pvInvert(p, X);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return GREAT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,214 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::LiquidEvapFuchsKnudsen
|
||||||
|
|
||||||
|
Group
|
||||||
|
grpLagrangianIntermediatePhaseChangeSubModels
|
||||||
|
|
||||||
|
Description
|
||||||
|
Liquid evaporation/condensation model for solution of liquid and solid.
|
||||||
|
|
||||||
|
This model takes into account the Fuchs-Knudsen number correction, the
|
||||||
|
modified Raoult's law is used to obtain the concenration of the evapora
|
||||||
|
ble component on the surface and the activity coefficient is used.
|
||||||
|
The correction Kelvin effect is used.
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Xiaole Chen, Yu Feng, Wenqi Zhon, Clement Kleinstreuer.
|
||||||
|
Numerical investigation of the interaction, transport and deposition
|
||||||
|
of multicomponent droplets in a a simple mouth-throat model.
|
||||||
|
Journal of Aerosol Science, 105(2017), 108-127.
|
||||||
|
DOI:10.1016/j.jaerosci.2016.12.001
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef LiquidEvapFuchsKnudsen_H
|
||||||
|
#define LiquidEvapFuchsKnudsen_H
|
||||||
|
|
||||||
|
#include "PhaseChangeModel.H"
|
||||||
|
#include "liquidMixtureProperties.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class LiquidEvapFuchsKnudsen Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class CloudType>
|
||||||
|
class LiquidEvapFuchsKnudsen
|
||||||
|
:
|
||||||
|
public PhaseChangeModel<CloudType>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Public Enumerations
|
||||||
|
|
||||||
|
//- Type of activity coefficient models
|
||||||
|
enum activityCoeffMethodType
|
||||||
|
{
|
||||||
|
pUNIFAC,
|
||||||
|
pHoff
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected Data
|
||||||
|
|
||||||
|
//- Method used
|
||||||
|
activityCoeffMethodType method_;
|
||||||
|
|
||||||
|
//- Mean gas free path
|
||||||
|
scalar gamma_;
|
||||||
|
|
||||||
|
//- The mass thermal accomodation
|
||||||
|
scalar alpha_;
|
||||||
|
|
||||||
|
//- Global liquid properties data
|
||||||
|
const liquidMixtureProperties& liquids_;
|
||||||
|
|
||||||
|
//- List of active liquid names i.e (liquidName solidName)
|
||||||
|
List<word> solution_;
|
||||||
|
|
||||||
|
//- Mapping between liquid and carrier species
|
||||||
|
label liqToCarrierMap_;
|
||||||
|
|
||||||
|
//- Mapping between local and global liquid species
|
||||||
|
label liqToLiqMap_;
|
||||||
|
|
||||||
|
//- Mapping between local and global solid species
|
||||||
|
label solToSolMap_;
|
||||||
|
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Sherwood number as a function of Reynolds and Schmidt numbers
|
||||||
|
scalar Sh(const scalar Re, const scalar Sc) const;
|
||||||
|
|
||||||
|
//- Calculate the carrier phase component volume fractions at celli
|
||||||
|
tmp<scalarField> calcXc(const label celli) const;
|
||||||
|
|
||||||
|
//- Calculate volumetric fractions of components in the solution
|
||||||
|
void calcXcSolution
|
||||||
|
(
|
||||||
|
const scalar massliq,
|
||||||
|
const scalar masssol,
|
||||||
|
scalar& Xliq,
|
||||||
|
scalar& Xsol
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Return activity coefficient
|
||||||
|
scalar activityCoeff(const scalar Xliq, const scalar Ysol) const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("liquidEvapFuchsKnudsen");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
LiquidEvapFuchsKnudsen(const dictionary& dict, CloudType& cloud);
|
||||||
|
|
||||||
|
//- Construct copy
|
||||||
|
LiquidEvapFuchsKnudsen(const LiquidEvapFuchsKnudsen<CloudType>& pcm);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual autoPtr<PhaseChangeModel<CloudType>> clone() const
|
||||||
|
{
|
||||||
|
return autoPtr<PhaseChangeModel<CloudType>>
|
||||||
|
(
|
||||||
|
new LiquidEvapFuchsKnudsen<CloudType>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~LiquidEvapFuchsKnudsen();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Update model
|
||||||
|
virtual void calculate
|
||||||
|
(
|
||||||
|
const scalar dt,
|
||||||
|
const label celli,
|
||||||
|
const scalar Re,
|
||||||
|
const scalar Pr,
|
||||||
|
const scalar d,
|
||||||
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
|
const scalar T,
|
||||||
|
const scalar Ts,
|
||||||
|
const scalar pc,
|
||||||
|
const scalar Tc,
|
||||||
|
const scalarField& X,
|
||||||
|
const scalarField& Xsol,
|
||||||
|
const scalarField& liqMass,
|
||||||
|
scalarField& dMassPC
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Return the enthalpy per unit mass
|
||||||
|
virtual scalar dh
|
||||||
|
(
|
||||||
|
const label idc,
|
||||||
|
const label idl,
|
||||||
|
const scalar p,
|
||||||
|
const scalar T
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Return vapourisation temperature
|
||||||
|
virtual scalar Tvap(const scalarField& X) const;
|
||||||
|
|
||||||
|
//- Return maximum/limiting temperature
|
||||||
|
virtual scalar TMax(const scalar p, const scalarField& X) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
#include "LiquidEvapFuchsKnudsen.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -139,11 +140,14 @@ void Foam::LiquidEvaporation<CloudType>::calculate
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -119,11 +120,14 @@ public:
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -139,11 +140,14 @@ void Foam::LiquidEvaporationBoil<CloudType>::calculate
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -129,11 +130,14 @@ public:
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -75,11 +76,14 @@ void Foam::NoPhaseChange<CloudType>::calculate
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -94,11 +95,14 @@ public:
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const;
|
) const;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -166,11 +167,14 @@ public:
|
|||||||
const scalar Pr,
|
const scalar Pr,
|
||||||
const scalar d,
|
const scalar d,
|
||||||
const scalar nu,
|
const scalar nu,
|
||||||
|
const scalar rho,
|
||||||
const scalar T,
|
const scalar T,
|
||||||
const scalar Ts,
|
const scalar Ts,
|
||||||
const scalar pc,
|
const scalar pc,
|
||||||
const scalar Tc,
|
const scalar Tc,
|
||||||
const scalarField& X,
|
const scalarField& X,
|
||||||
|
const scalarField& solMass,
|
||||||
|
const scalarField& liqMass,
|
||||||
scalarField& dMassPC
|
scalarField& dMassPC
|
||||||
) const = 0;
|
) const = 0;
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
|
Copyright (C) 2020 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -110,7 +111,7 @@ Foam::scalar Foam::liquidMixtureProperties::Tc(const scalarField& X) const
|
|||||||
vTc += x1*properties_[i].Tc();
|
vTc += x1*properties_[i].Tc();
|
||||||
}
|
}
|
||||||
|
|
||||||
return vTc/vc;
|
return vTc/ (vc + ROOTVSMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -258,7 +259,7 @@ Foam::scalarField Foam::liquidMixtureProperties::Y(const scalarField& X) const
|
|||||||
sumY += Y[i];
|
sumY += Y[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
Y /= sumY;
|
Y /= (sumY + ROOTVSMALL);
|
||||||
|
|
||||||
return Y;
|
return Y;
|
||||||
}
|
}
|
||||||
@ -275,7 +276,7 @@ Foam::scalarField Foam::liquidMixtureProperties::X(const scalarField& Y) const
|
|||||||
sumX += X[i];
|
sumX += X[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
X /= sumX;
|
X /= (sumX + ROOTVSMALL);
|
||||||
|
|
||||||
return X;
|
return X;
|
||||||
}
|
}
|
||||||
@ -307,7 +308,7 @@ Foam::scalar Foam::liquidMixtureProperties::rho
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return sumY/v;
|
return sumY/(v + ROOTVSMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -333,7 +334,7 @@ Foam::scalar Foam::liquidMixtureProperties::pv
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return pv/sumY;
|
return pv/(sumY + ROOTVSMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -359,7 +360,7 @@ Foam::scalar Foam::liquidMixtureProperties::hl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return hl/sumY;
|
return hl/(sumY + ROOTVSMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -385,7 +386,7 @@ Foam::scalar Foam::liquidMixtureProperties::Cp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Cp/sumY;
|
return Cp/(sumY + ROOTVSMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -411,7 +412,7 @@ Foam::scalar Foam::liquidMixtureProperties::sigma
|
|||||||
XsSum += Xs[i];
|
XsSum += Xs[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
Xs /= XsSum;
|
Xs /= (XsSum + ROOTVSMALL);
|
||||||
|
|
||||||
forAll(properties_, i)
|
forAll(properties_, i)
|
||||||
{
|
{
|
||||||
@ -468,7 +469,7 @@ Foam::scalar Foam::liquidMixtureProperties::kappa
|
|||||||
pSum += phii[i];
|
pSum += phii[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
phii /= pSum;
|
phii /= (pSum + ROOTVSMALL);
|
||||||
|
|
||||||
scalar K = 0.0;
|
scalar K = 0.0;
|
||||||
|
|
||||||
@ -513,7 +514,7 @@ Foam::scalar Foam::liquidMixtureProperties::D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1.0/Dinv;
|
return 1.0/(Dinv + ROOTVSMALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,7 @@ constantProperties
|
|||||||
Cp0 850; //Initial particle Cp (overwritten by composition)
|
Cp0 850; //Initial particle Cp (overwritten by composition)
|
||||||
|
|
||||||
hRetentionCoeff 0;
|
hRetentionCoeff 0;
|
||||||
constantVolume true;
|
volumeUpdateMethod constantVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -60,7 +60,7 @@ constantProperties
|
|||||||
T0 350;
|
T0 350;
|
||||||
Cp0 4100;
|
Cp0 4100;
|
||||||
|
|
||||||
constantVolume false;
|
volumeUpdateMethod constantRho;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object H2O;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0.01;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
inletValue uniform 0.01;
|
||||||
|
value uniform 0.01;
|
||||||
|
}
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 0.01;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object N2;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0.8;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
value uniform 0.8;
|
||||||
|
inletValue uniform 0.8;
|
||||||
|
}
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object O2;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0.19;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
inletValue uniform 0.19;
|
||||||
|
value uniform 0.2;
|
||||||
|
}
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 0.19;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object T;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 1 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 300.0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
inletValue uniform 300.0;
|
||||||
|
}
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 300.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: plus.master.develop |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volVectorField;
|
||||||
|
location "0";
|
||||||
|
object U;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform (0.1 0 0);
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type pressureInletOutletVelocity;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object alphat;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type compressible::alphatWallFunction;
|
||||||
|
Prt 0.85;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object k;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 2 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 3.75e-9;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type turbulentIntensityKineticEnergyInlet;
|
||||||
|
intensity 0.16;
|
||||||
|
value uniform 3.75e-9;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
inletValue uniform 3.75e-9;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type kqRWallFunction;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object nut;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 2 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type nutkWallFunction;
|
||||||
|
Cmu 0.09;
|
||||||
|
kappa 0.41;
|
||||||
|
E 9.8;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object omega;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 4.5e-3;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type turbulentMixingLengthFrequencyInlet;
|
||||||
|
mixingLength 0.007;
|
||||||
|
k k;
|
||||||
|
value uniform 4.5e-3;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
inletValue uniform 4.5e-3;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type omegaWallFunction;
|
||||||
|
Cmu 0.09;
|
||||||
|
kappa 0.41;
|
||||||
|
E 9.8;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object p;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 100000;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value $internalField;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object p_rgh;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 1e5;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type totalPressure;
|
||||||
|
p0 $internalField;
|
||||||
|
}
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
8
tutorials/lagrangian/reactingParcelFoam/rectangularChannel/Allclean
Executable file
8
tutorials/lagrangian/reactingParcelFoam/rectangularChannel/Allclean
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
|
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
cleanCase0
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
16
tutorials/lagrangian/reactingParcelFoam/rectangularChannel/Allrun
Executable file
16
tutorials/lagrangian/reactingParcelFoam/rectangularChannel/Allrun
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
cd "${0%/*}" || exit # Run from this directory
|
||||||
|
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
restore0Dir
|
||||||
|
|
||||||
|
runApplication blockMesh
|
||||||
|
|
||||||
|
runApplication potentialFoam
|
||||||
|
# Remove incompatible (volumetric) flux field
|
||||||
|
\rm -f 0/phi 2>/dev/null
|
||||||
|
|
||||||
|
runApplication $(getApplication)
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object chemistryProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
chemistryType
|
||||||
|
{
|
||||||
|
solver noChemistrySolver;
|
||||||
|
}
|
||||||
|
|
||||||
|
chemistry off;
|
||||||
|
|
||||||
|
initialChemicalTimeStep 1e-07; // NOT USED
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object combustionProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
combustionModel none;
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object foam.dat;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
O2
|
||||||
|
{
|
||||||
|
specie
|
||||||
|
{
|
||||||
|
molWeight 31.9988;
|
||||||
|
}
|
||||||
|
thermodynamics
|
||||||
|
{
|
||||||
|
Tlow 200;
|
||||||
|
Thigh 5000;
|
||||||
|
Tcommon 1000;
|
||||||
|
highCpCoeffs ( 3.69758 0.00061352 -1.25884e-07 1.77528e-11 -1.13644e-15 -1233.93 3.18917 );
|
||||||
|
lowCpCoeffs ( 3.21294 0.00112749 -5.75615e-07 1.31388e-09 -8.76855e-13 -1005.25 6.03474 );
|
||||||
|
}
|
||||||
|
transport
|
||||||
|
{
|
||||||
|
As 1.67212e-06;
|
||||||
|
Ts 170.672;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
H2O
|
||||||
|
{
|
||||||
|
specie
|
||||||
|
{
|
||||||
|
molWeight 18.0153;
|
||||||
|
}
|
||||||
|
thermodynamics
|
||||||
|
{
|
||||||
|
Tlow 200;
|
||||||
|
Thigh 5000;
|
||||||
|
Tcommon 1000;
|
||||||
|
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
|
||||||
|
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
|
||||||
|
}
|
||||||
|
transport
|
||||||
|
{
|
||||||
|
As 1.67212e-06;
|
||||||
|
Ts 170.672;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
N2
|
||||||
|
{
|
||||||
|
specie
|
||||||
|
{
|
||||||
|
molWeight 28.0134;
|
||||||
|
}
|
||||||
|
thermodynamics
|
||||||
|
{
|
||||||
|
Tlow 200;
|
||||||
|
Thigh 5000;
|
||||||
|
Tcommon 1000;
|
||||||
|
highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 );
|
||||||
|
lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44486e-12 -1020.9 3.95037 );
|
||||||
|
}
|
||||||
|
transport
|
||||||
|
{
|
||||||
|
As 1.67212e-06;
|
||||||
|
Ts 170.672;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
species
|
||||||
|
(
|
||||||
|
O2
|
||||||
|
N2
|
||||||
|
H2O
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
reactions
|
||||||
|
{}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class uniformDimensionedVectorField;
|
||||||
|
location "constant";
|
||||||
|
object g;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 1 -2 0 0 0 0];
|
||||||
|
value (0 -9.81 0);
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object radiationProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
radiation off;
|
||||||
|
|
||||||
|
radiationModel none;
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,175 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object reactingCloud1Properties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
solution
|
||||||
|
{
|
||||||
|
active yes;
|
||||||
|
coupled true;
|
||||||
|
transient yes;
|
||||||
|
|
||||||
|
maxCo 0.3;
|
||||||
|
cellValueSourceCorrection off;
|
||||||
|
|
||||||
|
sourceTerms
|
||||||
|
{
|
||||||
|
resetOnStartup false;
|
||||||
|
schemes
|
||||||
|
{
|
||||||
|
rho explicit 1;
|
||||||
|
U explicit 1;
|
||||||
|
Yi explicit 1;
|
||||||
|
h explicit 1;
|
||||||
|
radiation explicit 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interpolationSchemes
|
||||||
|
{
|
||||||
|
rho cell;
|
||||||
|
U cellPoint;
|
||||||
|
thermo:mu cell;
|
||||||
|
T cell;
|
||||||
|
Cp cell;
|
||||||
|
kappa cell;
|
||||||
|
p cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
integrationSchemes
|
||||||
|
{
|
||||||
|
U Euler;
|
||||||
|
T analytical;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
constantProperties
|
||||||
|
{
|
||||||
|
//Initial particle density, used if defined, if not by composition
|
||||||
|
//rho0 5100;
|
||||||
|
T0 310; //Initial particle temperature
|
||||||
|
Cp0 850; //Initial particle Cp (overwritten by composition)
|
||||||
|
|
||||||
|
hRetentionCoeff 0;
|
||||||
|
volumeUpdateMethod updateRhoAndVol; //constantRho, constantVolume,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
subModels
|
||||||
|
{
|
||||||
|
particleForces
|
||||||
|
{
|
||||||
|
//sphereDrag;
|
||||||
|
//gravity;
|
||||||
|
}
|
||||||
|
|
||||||
|
injectionModels
|
||||||
|
{
|
||||||
|
model1
|
||||||
|
{
|
||||||
|
type patchInjection;
|
||||||
|
patch inlet;
|
||||||
|
parcelBasisType mass;
|
||||||
|
U0 (0.4 0 0);
|
||||||
|
massTotal 1.38;
|
||||||
|
parcelsPerSecond 123;
|
||||||
|
SOI 0;
|
||||||
|
duration 1;
|
||||||
|
flowRateProfile constant 1;
|
||||||
|
|
||||||
|
sizeDistribution
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
fixedValueDistribution
|
||||||
|
{
|
||||||
|
value 0.011;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dispersionModel none;
|
||||||
|
|
||||||
|
patchInteractionModel standardWallInteraction;
|
||||||
|
|
||||||
|
heatTransferModel RanzMarshall;
|
||||||
|
|
||||||
|
compositionModel singleMixtureFraction;
|
||||||
|
|
||||||
|
phaseChangeModel liquidEvapFuchsKnudsen;
|
||||||
|
|
||||||
|
liquidEvapFuchsKnudsenCoeffs
|
||||||
|
{
|
||||||
|
gamma 6.8e-8; // Mean gas free path
|
||||||
|
alpham 1; // The mass thermal accomodation
|
||||||
|
solution (H2O NaCl); // Solution (liquid solid)
|
||||||
|
|
||||||
|
activityCoefficient Hoff;
|
||||||
|
ic 1.85;
|
||||||
|
enthalpyTransfer enthalpyDifference;
|
||||||
|
}
|
||||||
|
|
||||||
|
devolatilisationModel none;
|
||||||
|
|
||||||
|
surfaceReactionModel none;
|
||||||
|
|
||||||
|
stochasticCollisionModel none;
|
||||||
|
|
||||||
|
surfaceFilmModel none;
|
||||||
|
|
||||||
|
radiation off;
|
||||||
|
|
||||||
|
standardWallInteractionCoeffs
|
||||||
|
{
|
||||||
|
type rebound;
|
||||||
|
}
|
||||||
|
|
||||||
|
RanzMarshallCoeffs
|
||||||
|
{
|
||||||
|
BirdCorrection off;
|
||||||
|
}
|
||||||
|
|
||||||
|
heterogeneousReactingModel none;
|
||||||
|
|
||||||
|
singleMixtureFractionCoeffs
|
||||||
|
{
|
||||||
|
phases
|
||||||
|
(
|
||||||
|
gas
|
||||||
|
{
|
||||||
|
}
|
||||||
|
liquid
|
||||||
|
{
|
||||||
|
H2O 1;
|
||||||
|
}
|
||||||
|
solid
|
||||||
|
{
|
||||||
|
NaCl 1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
YGasTot0 0;
|
||||||
|
YLiquidTot0 0.0;
|
||||||
|
YSolidTot0 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cloudFunctions
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object thermophysicalProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
thermoType
|
||||||
|
{
|
||||||
|
type heRhoThermo;
|
||||||
|
mixture reactingMixture;
|
||||||
|
transport sutherland;
|
||||||
|
thermo janaf;
|
||||||
|
energy sensibleEnthalpy;
|
||||||
|
equationOfState perfectGas;
|
||||||
|
specie specie;
|
||||||
|
}
|
||||||
|
|
||||||
|
chemistryReader foamChemistryReader;
|
||||||
|
|
||||||
|
foamChemistryFile "<constant>/foam.inp";
|
||||||
|
|
||||||
|
foamChemistryThermoFile "<constant>/foam.dat";
|
||||||
|
|
||||||
|
inertSpecie N2;
|
||||||
|
|
||||||
|
liquids
|
||||||
|
{
|
||||||
|
H2O;
|
||||||
|
}
|
||||||
|
|
||||||
|
solids
|
||||||
|
{
|
||||||
|
NaCl
|
||||||
|
{
|
||||||
|
defaultCoeffs no;
|
||||||
|
rho 2165;
|
||||||
|
Cp 850;
|
||||||
|
kappa 0.04;
|
||||||
|
Hf 0;
|
||||||
|
emissivity 1.0;
|
||||||
|
W 58;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object turbulenceProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
simulationType laminar;
|
||||||
|
|
||||||
|
RAS
|
||||||
|
{
|
||||||
|
RASModel kOmegaSST; // kEpsilon;
|
||||||
|
|
||||||
|
turbulence on;
|
||||||
|
|
||||||
|
printCoeffs on;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object blockMeshDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
scale 1;
|
||||||
|
|
||||||
|
vertices
|
||||||
|
(
|
||||||
|
(0 0 0)
|
||||||
|
(90 0 0)
|
||||||
|
(90 10 0)
|
||||||
|
(0 10 0)
|
||||||
|
(0 0 10)
|
||||||
|
(90 0 10)
|
||||||
|
(90 10 10)
|
||||||
|
(0 10 10)
|
||||||
|
);
|
||||||
|
|
||||||
|
blocks
|
||||||
|
(
|
||||||
|
hex (0 1 2 3 4 5 6 7) (100 40 10) simpleGrading (1 1 1)
|
||||||
|
);
|
||||||
|
|
||||||
|
edges
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
boundary
|
||||||
|
(
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
(0 4 7 3)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
(2 6 5 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
(3 7 6 2)
|
||||||
|
(1 5 4 0)
|
||||||
|
(0 3 2 1)
|
||||||
|
(4 5 6 7)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object controlDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
application reactingParcelFoam;
|
||||||
|
|
||||||
|
startFrom startTime;
|
||||||
|
|
||||||
|
startTime 0;
|
||||||
|
|
||||||
|
stopAt endTime;
|
||||||
|
|
||||||
|
endTime 15;
|
||||||
|
|
||||||
|
deltaT 8.13e-3;
|
||||||
|
|
||||||
|
writeControl adjustableRunTime;
|
||||||
|
|
||||||
|
writeInterval 0.5;
|
||||||
|
|
||||||
|
purgeWrite 0;
|
||||||
|
|
||||||
|
writeFormat ascii;
|
||||||
|
|
||||||
|
writePrecision 10;
|
||||||
|
|
||||||
|
writeCompression off;
|
||||||
|
|
||||||
|
timeFormat general;
|
||||||
|
|
||||||
|
timePrecision 6;
|
||||||
|
|
||||||
|
runTimeModifiable yes;
|
||||||
|
|
||||||
|
adjustTimeStep yes;
|
||||||
|
|
||||||
|
maxCo 1.0;
|
||||||
|
|
||||||
|
maxDeltaT 1;
|
||||||
|
|
||||||
|
functions
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object decomposeParDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
numberOfSubdomains 4;
|
||||||
|
|
||||||
|
method scotch;
|
||||||
|
|
||||||
|
coeffs
|
||||||
|
{
|
||||||
|
n (2 2 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
distributed no;
|
||||||
|
|
||||||
|
roots ( );
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object fvSchemes;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
ddtSchemes
|
||||||
|
{
|
||||||
|
default Euler;
|
||||||
|
}
|
||||||
|
|
||||||
|
gradSchemes
|
||||||
|
{
|
||||||
|
default Gauss linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
divSchemes
|
||||||
|
{
|
||||||
|
default none;
|
||||||
|
div(phi,U) Gauss upwind;
|
||||||
|
div(phid,p) Gauss upwind;
|
||||||
|
div(phi,K) Gauss linear;
|
||||||
|
div(phi,h) Gauss upwind;
|
||||||
|
div(phi,k) Gauss upwind;
|
||||||
|
div(phi,epsilon) Gauss upwind;
|
||||||
|
div(phi,omega) Gauss upwind;
|
||||||
|
div(phi,Yi_h) Gauss upwind;
|
||||||
|
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
laplacianSchemes
|
||||||
|
{
|
||||||
|
default Gauss linear uncorrected;
|
||||||
|
}
|
||||||
|
|
||||||
|
interpolationSchemes
|
||||||
|
{
|
||||||
|
default linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
snGradSchemes
|
||||||
|
{
|
||||||
|
default uncorrected;
|
||||||
|
}
|
||||||
|
|
||||||
|
wallDist
|
||||||
|
{
|
||||||
|
method meshWave;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,112 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: v1806 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object fvSolution;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
solvers
|
||||||
|
{
|
||||||
|
rho
|
||||||
|
{
|
||||||
|
solver PCG;
|
||||||
|
preconditioner DIC;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rhoFinal
|
||||||
|
{
|
||||||
|
$rho;
|
||||||
|
tolerance 1e-05;
|
||||||
|
relTol 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
"(U|k|epsilon)"
|
||||||
|
{
|
||||||
|
solver smoothSolver;
|
||||||
|
smoother symGaussSeidel;
|
||||||
|
tolerance 1e-06;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
"(U|k|epsilon|omega)Final"
|
||||||
|
{
|
||||||
|
$U;
|
||||||
|
tolerance 1e-06;
|
||||||
|
relTol 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p_rgh
|
||||||
|
{
|
||||||
|
solver GAMG;
|
||||||
|
tolerance 0;
|
||||||
|
relTol 0.1;
|
||||||
|
smoother GaussSeidel;
|
||||||
|
}
|
||||||
|
|
||||||
|
p_rghFinal
|
||||||
|
{
|
||||||
|
$p_rgh;
|
||||||
|
tolerance 1e-06;
|
||||||
|
relTol 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
"(Yi|O2|N2|H2O)"
|
||||||
|
{
|
||||||
|
solver PBiCGStab;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h
|
||||||
|
{
|
||||||
|
$Yi;
|
||||||
|
relTol 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hFinal
|
||||||
|
{
|
||||||
|
$Yi;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
potentialFlow
|
||||||
|
{
|
||||||
|
nNonOrthogonalCorrectors 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PIMPLE
|
||||||
|
{
|
||||||
|
transonic no;
|
||||||
|
nOuterCorrectors 1;
|
||||||
|
nCorrectors 2;
|
||||||
|
nNonOrthogonalCorrectors 0;
|
||||||
|
momentumPredictor yes;
|
||||||
|
}
|
||||||
|
|
||||||
|
relaxationFactors
|
||||||
|
{
|
||||||
|
fields
|
||||||
|
{
|
||||||
|
}
|
||||||
|
equations
|
||||||
|
{
|
||||||
|
".*" 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user