ENH: Adding multiband absorptivity and solar load working with FVDOM

This commit is contained in:
sergio
2019-08-07 15:36:22 -07:00
committed by Andrew Heather
parent 5382c2f590
commit 4631d3272f
8 changed files with 46 additions and 44 deletions

View File

@ -40,7 +40,7 @@ submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmiss
submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C
submodels/absorptionEmissionModel/multiBandSolidAbsorptionEmission/multiBandSolidAbsorptionEmission.C
submodels/absorptionEmissionModel/multiBandAbsorptionEmission/multiBandAbsorptionEmission.C
submodels/boundaryRadiationProperties/boundaryRadiationProperties.C
submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C

View File

@ -218,10 +218,10 @@ updateCoeffs()
// Looking for primary heat flux single band
Ir += patch().lookupPatchField<volScalarField,scalar>
(
dom.primaryFluxName_ + "_" + name(lambdaId - 1)
dom.primaryFluxName_ + "_" + name(lambdaId)
);
word qSecName = dom.relfectedFluxName_ + "_" + name(lambdaId - 1);
word qSecName = dom.relfectedFluxName_ + "_" + name(lambdaId);
if (this->db().foundObject<volScalarField>(qSecName))
{

View File

@ -188,18 +188,18 @@ void Foam::radiation::fvDOM::initialise()
Info<< endl;
this->readIfPresent("useSolarLoad", useSolarLoad_);
coeffs_.readIfPresent("useSolarLoad", useSolarLoad_);
if (useSolarLoad_)
{
const dictionary& solarDict = this->subDict("solarLoarCoeffs");
const dictionary& solarDict = this->subDict("solarLoadCoeffs");
solarLoad_.reset(new solarLoad(solarDict, T_));
if (solarLoad_->nBands() > 1)
if (solarLoad_->nBands() != this->nBands())
{
FatalErrorInFunction
<< "Requested solar radiation with fvDOM. Using "
<< "more than one band for the solar load is not allowed"
<< "different number of bands for the solar load is not allowed"
<< abort(FatalError);
}

View File

@ -88,14 +88,23 @@ void Foam::radiation::radiationModel::initialise()
{
solverFreq_ = max(1, lookupOrDefault<label>("solverFreq", 1));
absorptionEmission_.reset
(
absorptionEmissionModel::New(*this, mesh_).ptr()
);
if (this->found("absorptionEmissionModel"))
{
absorptionEmission_.reset
(
absorptionEmissionModel::New(*this, mesh_).ptr()
);
}
scatter_.reset(scatterModel::New(*this, mesh_).ptr());
if (this->found("scatterModel"))
{
scatter_.reset(scatterModel::New(*this, mesh_).ptr());
}
soot_.reset(sootModel::New(*this, mesh_).ptr());
if (this->found("sootModel"))
{
soot_.reset(sootModel::New(*this, mesh_).ptr());
}
}
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
#include "multiBandSolidAbsorptionEmission.H"
#include "multiBandAbsorptionEmission.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -32,12 +32,12 @@ namespace Foam
{
namespace radiation
{
defineTypeNameAndDebug(multiBandSolidAbsorptionEmission, 0);
defineTypeNameAndDebug(multiBandAbsorptionEmission, 0);
addToRunTimeSelectionTable
(
absorptionEmissionModel,
multiBandSolidAbsorptionEmission,
multiBandAbsorptionEmission,
dictionary
);
}
@ -46,8 +46,7 @@ namespace Foam
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::radiation::multiBandSolidAbsorptionEmission::
multiBandSolidAbsorptionEmission
Foam::radiation::multiBandAbsorptionEmission::multiBandAbsorptionEmission
(
const dictionary& dict,
const fvMesh& mesh
@ -67,15 +66,15 @@ multiBandSolidAbsorptionEmission
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::radiation::multiBandSolidAbsorptionEmission::
~multiBandSolidAbsorptionEmission()
Foam::radiation::multiBandAbsorptionEmission::
~multiBandAbsorptionEmission()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField>
Foam::radiation::multiBandSolidAbsorptionEmission::aCont
Foam::radiation::multiBandAbsorptionEmission::aCont
(
const label bandI
) const
@ -102,7 +101,7 @@ Foam::radiation::multiBandSolidAbsorptionEmission::aCont
Foam::tmp<Foam::volScalarField>
Foam::radiation::multiBandSolidAbsorptionEmission::eCont
Foam::radiation::multiBandAbsorptionEmission::eCont
(
const label bandI
) const
@ -129,7 +128,7 @@ Foam::radiation::multiBandSolidAbsorptionEmission::eCont
Foam::tmp<Foam::volScalarField>
Foam::radiation::multiBandSolidAbsorptionEmission::ECont
Foam::radiation::multiBandAbsorptionEmission::ECont
(
const label bandI
) const

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,23 +22,23 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::radiation::multiBandSolidAbsorptionEmission
Foam::radiation::multiBandAbsorptionEmission
Group
grpRadiationAbsorptionEmissionSubModels
Description
multiBandSolidAbsorptionEmission radiation absorption/emission for solids.
multiBandAbsorptionEmission radiation absorption/emission for solids.
SourceFiles
multiBandSolidAbsorptionEmission.C
multiBandAbsorptionEmission.C
\*---------------------------------------------------------------------------*/
#ifndef multiBandSolidAbsorptionEmission_H
#define multiBandSolidAbsorptionEmission_H
#ifndef multiBandAbsorptionEmission_H
#define multiBandAbsorptionEmission_H
#include "absorptionEmissionModel.H"
@ -50,10 +50,10 @@ namespace radiation
{
/*---------------------------------------------------------------------------*\
Class multiBandSolidAbsorptionEmission Declaration
Class multiBandAbsorptionEmission Declaration
\*---------------------------------------------------------------------------*/
class multiBandSolidAbsorptionEmission
class multiBandAbsorptionEmission
:
public absorptionEmissionModel
{
@ -85,13 +85,13 @@ private:
public:
//- Runtime type information
TypeName("multiBandSolidAbsorptionEmission");
TypeName("multiBandAbsorptionEmission");
// Constructors
//- Construct from components
multiBandSolidAbsorptionEmission
multiBandAbsorptionEmission
(
const dictionary& dict,
const fvMesh& mesh
@ -99,7 +99,7 @@ public:
//- Destructor
virtual ~multiBandSolidAbsorptionEmission();
virtual ~multiBandAbsorptionEmission();
// Member Functions

View File

@ -22,7 +22,7 @@ radiationModel none;//opaqueSolid;
absorptionEmissionModel none;
multiBandSolidAbsorptionEmissionCoeffs
multiBandAbsorptionEmissionCoeffs
{
absorptivity (0.3 0.7);
emissivity (0.3 0.7);

View File

@ -18,15 +18,9 @@ FoamFile
radiation off;
radiationModel none;//opaqueSolid;
radiationModel none;
absorptionEmissionModel none;//multiBandSolidAbsorptionEmission;
multiBandSolidAbsorptionEmissionCoeffs
{
absorptivity (0.1 0.1);
emissivity (0.1 0.1);
}
absorptionEmissionModel none;
scatterModel none;