From 99aa00e33ca92fb060189ca2432111861c078266 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 4 Oct 2012 10:55:49 +0100 Subject: [PATCH] ENH: Adding greyMeanSolidAbsorptionEmission for radiative properties of the solid --- .../radiationModels/Make/files | 2 + .../radiationCoupledBase.C | 16 +- .../radiationModel/opaqueSolid/opaqueSolid.C | 130 +++++++++ .../radiationModel/opaqueSolid/opaqueSolid.H | 109 ++++++++ .../radiationModel/radiationModel.C | 9 +- .../radiationModel/radiationModel.H | 5 +- .../greyMeanSolidAbsorptionEmission.C | 256 ++++++++++++++++++ .../greyMeanSolidAbsorptionEmission.H | 158 +++++++++++ .../mixtures/SpecieMixture/SpecieMixture.C | 12 + .../mixtures/SpecieMixture/SpecieMixture.H | 8 + .../basicMultiComponentMixture.H | 8 + .../constant/panelRegion/radiationProperties | 70 +++++ 12 files changed, 776 insertions(+), 7 deletions(-) create mode 100644 src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.C create mode 100644 src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.H create mode 100644 src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C create mode 100644 src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.H create mode 100644 tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/radiationProperties diff --git a/src/thermophysicalModels/radiationModels/Make/files b/src/thermophysicalModels/radiationModels/Make/files index 9822712105..9e49da1fde 100644 --- a/src/thermophysicalModels/radiationModels/Make/files +++ b/src/thermophysicalModels/radiationModels/Make/files @@ -8,6 +8,7 @@ radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C radiationModel/fvDOM/blackBodyEmission/blackBodyEmission.C radiationModel/fvDOM/absorptionCoeffs/absorptionCoeffs.C radiationModel/viewFactor/viewFactor.C +radiationModel/opaqueSolid/opaqueSolid.C /* Scatter model */ submodels/scatterModel/scatterModel/scatterModel.C @@ -23,6 +24,7 @@ submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionE submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C +submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C /* Boundary conditions */ diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C index aaa301f345..2ac8a1f9fd 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C @@ -29,7 +29,7 @@ License #include "mappedPatchBase.H" #include "fvPatchFieldMapper.H" -#include "solidThermo.H" +#include "radiationModel.H" // * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * * // @@ -143,10 +143,10 @@ Foam::scalarField Foam::radiationCoupledBase::emissivity() const const polyMesh& nbrMesh = mpp.sampleMesh(); - const solidThermo& thermo = - nbrMesh.lookupObject + const radiation::radiationModel& radiation = + nbrMesh.lookupObject ( - "thermophysicalProperties" + "radiationProperties" ); // Force recalculation of mapping and schedule @@ -157,7 +157,13 @@ Foam::scalarField Foam::radiationCoupledBase::emissivity() const nbrMesh ).boundary()[mpp.samplePolyPatch().index()]; - scalarField emissivity(thermo.emissivity(nbrPatch.index())); + scalarField emissivity + ( + radiation.absorptionEmission().e()().boundaryField() + [ + nbrPatch.index() + ] + ); distMap.distribute(emissivity); return emissivity; diff --git a/src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.C b/src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.C new file mode 100644 index 0000000000..b4396573c6 --- /dev/null +++ b/src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.C @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "opaqueSolid.H" +#include "addToRunTimeSelectionTable.H" +#include "physicoChemicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace radiation + { + defineTypeNameAndDebug(opaqueSolid, 0); + + addToRunTimeSelectionTable + ( + radiationModel, + opaqueSolid, + dictionary + ); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::radiation::opaqueSolid::opaqueSolid +( + const volScalarField& T +) +: + radiationModel(typeName, T) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::radiation::opaqueSolid::~opaqueSolid() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::radiation::opaqueSolid::read() +{ + return radiationModel::read(); +} + + +void Foam::radiation::opaqueSolid::calculate() +{ + // Do nothing +} + + +Foam::tmp Foam::radiation::opaqueSolid::Rp() const +{ + return tmp + ( + new volScalarField + ( + IOobject + ( + "Rp", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensionedScalar + ( + "Rp", + constant::physicoChemical::sigma.dimensions()/dimLength, + 0.0 + ) + ) + ); +} + + +Foam::tmp > +Foam::radiation::opaqueSolid::Ru() const +{ + return tmp > + ( + new DimensionedField + ( + IOobject + ( + "Ru", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensionedScalar + ( + "Ru", dimMass/dimLength/pow3(dimTime), 0.0 + ) + ) + ); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.H b/src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.H new file mode 100644 index 0000000000..d50e6f6795 --- /dev/null +++ b/src/thermophysicalModels/radiationModels/radiationModel/opaqueSolid/opaqueSolid.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::radiation::opaqueSolid + +Description + Radiation for solid opaque solids - does nothing to energy equation source + terms (returns zeros) but creates absorptionEmissionModel and + scatterModel. + +SourceFiles + opaqueSolid.C + +\*---------------------------------------------------------------------------*/ + +#ifndef opaqueSolid_H +#define opaqueSolid_H + +#include "radiationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace radiation +{ + +/*---------------------------------------------------------------------------*\ + Class opaqueSolid Declaration +\*---------------------------------------------------------------------------*/ + +class opaqueSolid +: + public radiationModel +{ + // Private Member Functions + + //- Disallow default bitwise copy construct + opaqueSolid(const opaqueSolid&); + + //- Disallow default bitwise assignment + void operator=(const opaqueSolid&); + + +public: + + //- Runtime type information + TypeName("opaqueSolid"); + + + // Constructors + + //- Construct from components + opaqueSolid(const volScalarField& T); + + + //- Destructor + virtual ~opaqueSolid(); + + + // Member functions + + // Edit + + //- Solve radiation equation(s) + void calculate(); + + //- Read radiationProperties dictionary + bool read(); + + //- Source term component (for power of T^4) + tmp Rp() const; + + //- Source term component (constant) + tmp > Ru() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radiation +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C index 1664d8edd1..149fb19691 100644 --- a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C +++ b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.C @@ -89,7 +89,7 @@ Foam::radiation::radiationModel::radiationModel T_(T), radiation_(lookup("radiation")), coeffs_(subDict(type + "Coeffs")), - solverFreq_(readLabel(lookup("solverFreq"))), + solverFreq_(lookupOrDefault