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/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C
submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C
submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C
submodels/absorptionEmissionModel/multiBandSolidAbsorptionEmission/multiBandSolidAbsorptionEmission.C submodels/absorptionEmissionModel/multiBandAbsorptionEmission/multiBandAbsorptionEmission.C
submodels/boundaryRadiationProperties/boundaryRadiationProperties.C submodels/boundaryRadiationProperties/boundaryRadiationProperties.C
submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C submodels/boundaryRadiationProperties/boundaryRadiationPropertiesPatch.C

View File

@ -218,10 +218,10 @@ updateCoeffs()
// Looking for primary heat flux single band // Looking for primary heat flux single band
Ir += patch().lookupPatchField<volScalarField,scalar> 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)) if (this->db().foundObject<volScalarField>(qSecName))
{ {

View File

@ -188,18 +188,18 @@ void Foam::radiation::fvDOM::initialise()
Info<< endl; Info<< endl;
this->readIfPresent("useSolarLoad", useSolarLoad_); coeffs_.readIfPresent("useSolarLoad", useSolarLoad_);
if (useSolarLoad_) if (useSolarLoad_)
{ {
const dictionary& solarDict = this->subDict("solarLoarCoeffs"); const dictionary& solarDict = this->subDict("solarLoadCoeffs");
solarLoad_.reset(new solarLoad(solarDict, T_)); solarLoad_.reset(new solarLoad(solarDict, T_));
if (solarLoad_->nBands() > 1) if (solarLoad_->nBands() != this->nBands())
{ {
FatalErrorInFunction FatalErrorInFunction
<< "Requested solar radiation with fvDOM. Using " << "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); << abort(FatalError);
} }

View File

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

View File

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

View File

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

View File

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

View File

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