mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
radiationModels: Correct handling of ECont and make P1 and fvDOM consistent
Patch provided by Timo Niemi Resolved bug-report http://www.openfoam.org/mantisbt/view.php?id=1636 This correction corresponds to option 3 of the options proposed by Timo: Define both ECont and EDisp to be the total emission per surface area, apply multiplication by 4 in cloudAbsorptionEmission model (the only place that uses EDisp?). Do not multiply E in P1 at all, divide both ECont and EDisp in fvDOM.
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -24,9 +24,8 @@ License
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "cloudAbsorptionEmission.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
#include "thermoCloud.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
@ -159,7 +158,8 @@ Foam::radiation::cloudAbsorptionEmission::EDisp(const label bandI) const
|
||||
tE() += tc.Ep();
|
||||
}
|
||||
|
||||
return tE;
|
||||
// Total emission is 4 times the projected emission
|
||||
return 4*tE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -239,7 +239,7 @@ void Foam::radiation::P1::calculate()
|
||||
fvm::laplacian(gamma, G_)
|
||||
- fvm::Sp(a_, G_)
|
||||
==
|
||||
- 4.0*(e_*physicoChemical::sigma*pow4(T_) + E_)
|
||||
- 4.0*(e_*physicoChemical::sigma*pow4(T_) ) - E_
|
||||
);
|
||||
|
||||
// Calculate radiative heat flux on boundaries.
|
||||
@ -286,7 +286,7 @@ Foam::radiation::P1::Ru() const
|
||||
const DimensionedField<scalar, volMesh> a =
|
||||
absorptionEmission_->aCont()().dimensionedInternalField();
|
||||
|
||||
return a*G - 4.0*E;
|
||||
return a*G - E;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -30,8 +30,10 @@ License
|
||||
|
||||
using namespace Foam::constant;
|
||||
|
||||
const Foam::word
|
||||
Foam::radiation::radiativeIntensityRay::intensityPrefix("ILambda");
|
||||
const Foam::word Foam::radiation::radiativeIntensityRay::intensityPrefix
|
||||
(
|
||||
"ILambda"
|
||||
);
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
@ -148,7 +150,7 @@ Foam::radiation::radiativeIntensityRay::radiativeIntensityRay
|
||||
IOobject::AUTO_WRITE
|
||||
);
|
||||
|
||||
// check if field exists and can be read
|
||||
// Check if field exists and can be read
|
||||
if (IHeader.headerOk())
|
||||
{
|
||||
ILambda_.set
|
||||
@ -203,7 +205,7 @@ Foam::radiation::radiativeIntensityRay::~radiativeIntensityRay()
|
||||
|
||||
Foam::scalar Foam::radiation::radiativeIntensityRay::correct()
|
||||
{
|
||||
// reset boundary heat flux to zero
|
||||
// Reset boundary heat flux to zero
|
||||
Qr_.boundaryField() = 0.0;
|
||||
|
||||
scalar maxResidual = -GREAT;
|
||||
@ -229,10 +231,7 @@ Foam::scalar Foam::radiation::radiativeIntensityRay::correct()
|
||||
(k - absorptionEmission_.aDisp(lambdaI))
|
||||
*blackBody_.bLambda(lambdaI)
|
||||
|
||||
+ absorptionEmission_.ECont(lambdaI)
|
||||
|
||||
// Add EDisp term from parcels
|
||||
+ absorptionEmission_.EDisp(lambdaI)
|
||||
+ absorptionEmission_.E(lambdaI)/4
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -249,10 +248,7 @@ Foam::scalar Foam::radiation::radiativeIntensityRay::correct()
|
||||
(k - absorptionEmission_.aDisp(lambdaI))
|
||||
*blackBody_.bLambda(lambdaI)
|
||||
|
||||
+ absorptionEmission_.ECont(lambdaI)
|
||||
|
||||
// Add EDisp term from parcels
|
||||
+ absorptionEmission_.EDisp(lambdaI)
|
||||
+ absorptionEmission_.E(lambdaI)/4
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user