mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Lagrangian radiation models and fvDOM: Apply updates
Applying patches provided by Timo Niemi Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1636
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -210,6 +210,9 @@ void Foam::ThermoParcel<ParcelType>::calc
|
|||||||
// Sum Ni*Cpi*Wi of emission species
|
// Sum Ni*Cpi*Wi of emission species
|
||||||
scalar NCpW = 0.0;
|
scalar NCpW = 0.0;
|
||||||
|
|
||||||
|
// Store T for consistent radiation source
|
||||||
|
const scalar T0 = this->T_;
|
||||||
|
|
||||||
// Calculate new particle temperature
|
// Calculate new particle temperature
|
||||||
this->T_ =
|
this->T_ =
|
||||||
this->calcHeatTransfer
|
this->calcHeatTransfer
|
||||||
@ -255,7 +258,7 @@ void Foam::ThermoParcel<ParcelType>::calc
|
|||||||
if (td.cloud().radiation())
|
if (td.cloud().radiation())
|
||||||
{
|
{
|
||||||
const scalar ap = this->areaP();
|
const scalar ap = this->areaP();
|
||||||
const scalar T4 = pow4(this->T_);
|
const scalar T4 = pow4(T0);
|
||||||
td.cloud().radAreaP()[cellI] += dt*np0*ap;
|
td.cloud().radAreaP()[cellI] += dt*np0*ap;
|
||||||
td.cloud().radT4()[cellI] += dt*np0*T4;
|
td.cloud().radT4()[cellI] += dt*np0*T4;
|
||||||
td.cloud().radAreaPT4()[cellI] += dt*np0*ap*T4;
|
td.cloud().radAreaPT4()[cellI] += dt*np0*ap*T4;
|
||||||
@ -304,7 +307,7 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
|
|||||||
htc = max(htc, ROOTVSMALL);
|
htc = max(htc, ROOTVSMALL);
|
||||||
const scalar As = this->areaS(d);
|
const scalar As = this->areaS(d);
|
||||||
|
|
||||||
scalar ap = Tc_ + Sh/As/htc;
|
scalar ap = Tc_ + Sh/(As*htc);
|
||||||
scalar bp = 6.0*(Sh/As + htc*(Tc_ - T_));
|
scalar bp = 6.0*(Sh/As + htc*(Tc_ - T_));
|
||||||
if (td.cloud().radiation())
|
if (td.cloud().radiation())
|
||||||
{
|
{
|
||||||
@ -313,8 +316,11 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
|
|||||||
const scalar sigma = physicoChemical::sigma.value();
|
const scalar sigma = physicoChemical::sigma.value();
|
||||||
const scalar epsilon = td.cloud().constProps().epsilon0();
|
const scalar epsilon = td.cloud().constProps().epsilon0();
|
||||||
|
|
||||||
ap = (ap + epsilon*Gc/(4.0*htc))/(1.0 + epsilon*sigma*pow3(T_)/htc);
|
// Assume constant source
|
||||||
bp += 6.0*(epsilon*(Gc/4.0 - sigma*pow4(T_)));
|
scalar s = epsilon*(Gc/4.0 - sigma*pow4(T_));
|
||||||
|
|
||||||
|
ap += s/htc;
|
||||||
|
bp += 6.0*s;
|
||||||
}
|
}
|
||||||
bp /= rho*d*Cp_*(ap - T_) + ROOTVSMALL;
|
bp /= rho*d*Cp_*(ap - T_) + ROOTVSMALL;
|
||||||
|
|
||||||
|
|||||||
@ -482,7 +482,8 @@ Foam::tmp<Foam::volScalarField> Foam::radiation::fvDOM::Rp() const
|
|||||||
IOobject::NO_WRITE,
|
IOobject::NO_WRITE,
|
||||||
false
|
false
|
||||||
),
|
),
|
||||||
4.0*a_*physicoChemical::sigma //absorptionEmission_->a()
|
// Only include continuous phase emission
|
||||||
|
4*absorptionEmission_->aCont()*physicoChemical::sigma
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -494,12 +495,15 @@ Foam::radiation::fvDOM::Ru() const
|
|||||||
|
|
||||||
const DimensionedField<scalar, volMesh>& G =
|
const DimensionedField<scalar, volMesh>& G =
|
||||||
G_.dimensionedInternalField();
|
G_.dimensionedInternalField();
|
||||||
|
|
||||||
const DimensionedField<scalar, volMesh> E =
|
const DimensionedField<scalar, volMesh> E =
|
||||||
absorptionEmission_->ECont()().dimensionedInternalField();
|
absorptionEmission_->ECont()().dimensionedInternalField();
|
||||||
const DimensionedField<scalar, volMesh> a =
|
|
||||||
a_.dimensionedInternalField();
|
|
||||||
|
|
||||||
return a*G - E;
|
// Only include continuous phase absorption
|
||||||
|
const DimensionedField<scalar, volMesh> a =
|
||||||
|
absorptionEmission_->aCont()().dimensionedInternalField();
|
||||||
|
|
||||||
|
return a*G - E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,6 @@ License
|
|||||||
|
|
||||||
using namespace Foam::constant;
|
using namespace Foam::constant;
|
||||||
|
|
||||||
|
|
||||||
const Foam::word
|
const Foam::word
|
||||||
Foam::radiation::radiativeIntensityRay::intensityPrefix("ILambda");
|
Foam::radiation::radiativeIntensityRay::intensityPrefix("ILambda");
|
||||||
|
|
||||||
@ -225,9 +224,15 @@ Foam::scalar Foam::radiation::radiativeIntensityRay::correct()
|
|||||||
+ fvm::Sp(k*omega_, ILambda_[lambdaI])
|
+ fvm::Sp(k*omega_, ILambda_[lambdaI])
|
||||||
==
|
==
|
||||||
1.0/constant::mathematical::pi*omega_
|
1.0/constant::mathematical::pi*omega_
|
||||||
* (
|
*(
|
||||||
k*blackBody_.bLambda(lambdaI)
|
// Remove aDisp from k
|
||||||
+ absorptionEmission_.ECont(lambdaI)/4
|
(k - absorptionEmission_.aDisp(lambdaI))
|
||||||
|
*blackBody_.bLambda(lambdaI)
|
||||||
|
|
||||||
|
+ absorptionEmission_.ECont(lambdaI)
|
||||||
|
|
||||||
|
// Add EDisp term from parcels
|
||||||
|
+ absorptionEmission_.EDisp(lambdaI)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -240,8 +245,14 @@ Foam::scalar Foam::radiation::radiativeIntensityRay::correct()
|
|||||||
==
|
==
|
||||||
1.0/constant::mathematical::pi*omega_
|
1.0/constant::mathematical::pi*omega_
|
||||||
* (
|
* (
|
||||||
k*blackBody_.bLambda(lambdaI)
|
// Remove aDisp from k
|
||||||
+ absorptionEmission_.ECont(lambdaI)/4
|
(k - absorptionEmission_.aDisp(lambdaI))
|
||||||
|
*blackBody_.bLambda(lambdaI)
|
||||||
|
|
||||||
|
+ absorptionEmission_.ECont(lambdaI)
|
||||||
|
|
||||||
|
// Add EDisp term from parcels
|
||||||
|
+ absorptionEmission_.EDisp(lambdaI)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user