Skip to content
Snippets Groups Projects
Commit 6ed6b93c authored by Henry Weller's avatar Henry Weller
Browse files

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.
parent ba2f46f1
Branches
Tags
No related merge requests found
......@@ -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
)
);
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment