diff --git a/src/thermophysicalModels/radiationModels/Make/files b/src/thermophysicalModels/radiationModels/Make/files index 9822712105c54ed7ed9214356e6c999b954305b2..9e49da1fde218e923eb9582d7ce21f45668e5460 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 aaa301f345514ff161928b16a1ad84e33291f9a8..2ac8a1f9fd083292b795a2ab373687ae893f7acb 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<solidThermo> + const radiation::radiationModel& radiation = + nbrMesh.lookupObject<radiation::radiationModel> ( - "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 0000000000000000000000000000000000000000..b4396573c6eba5a922dffcc1a45e69db76809f3d --- /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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#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::volScalarField> Foam::radiation::opaqueSolid::Rp() const +{ + return tmp<volScalarField> + ( + 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::DimensionedField<Foam::scalar, Foam::volMesh> > +Foam::radiation::opaqueSolid::Ru() const +{ + return tmp<DimensionedField<scalar, volMesh> > + ( + new DimensionedField<scalar, volMesh> + ( + 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 0000000000000000000000000000000000000000..d50e6f6795b6f03121208ccb0d9a4d2fb885de47 --- /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 <http://www.gnu.org/licenses/>. + +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<volScalarField> Rp() const; + + //- Source term component (constant) + tmp<DimensionedField<scalar, volMesh> > 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 1664d8edd17f80af106fd2c27850be2ca0fa0698..149fb19691ca8260df4c0077d11ce141a2dc0078 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<label>("solverFreq", 1)), firstIter_(true), absorptionEmission_(absorptionEmissionModel::New(*this, mesh_)), scatter_(scatterModel::New(*this, mesh_)) @@ -158,4 +158,11 @@ Foam::tmp<Foam::fvScalarMatrix> Foam::radiation::radiationModel::Sh } +const Foam::radiation::absorptionEmissionModel& +Foam::radiation::radiationModel::absorptionEmission() const +{ + return absorptionEmission_(); +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H index b9963f0f70a88e6819ebdb824ec6fef6e5bba4f5..e8aa9f5778eff45d4b85134a67dc5c5bf79c748c 100644 --- a/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H +++ b/src/thermophysicalModels/radiationModels/radiationModel/radiationModel/radiationModel.H @@ -48,6 +48,7 @@ SourceFiles #include "fluidThermo.H" #include "fvMatrices.H" #include "blackBodyEmission.H" +#include "absorptionEmissionModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -57,7 +58,6 @@ namespace radiation { // Forward declaration of classes -class absorptionEmissionModel; class scatterModel; /*---------------------------------------------------------------------------*\ @@ -178,6 +178,9 @@ public: //- Energy source term virtual tmp<fvScalarMatrix> Sh(fluidThermo& thermo) const; + + //- Access to absorptionEmissionModel + const absorptionEmissionModel& absorptionEmission() const; }; diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C new file mode 100644 index 0000000000000000000000000000000000000000..3371c5759704b84f110896f37e2f6ef91870a194 --- /dev/null +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C @@ -0,0 +1,256 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2012 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "greyMeanSolidAbsorptionEmission.H" +#include "addToRunTimeSelectionTable.H" +#include "unitConversion.H" +#include "zeroGradientFvPatchFields.H" +#include "basicMultiComponentMixture.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace radiation + { + defineTypeNameAndDebug(greyMeanSolidAbsorptionEmission, 0); + + addToRunTimeSelectionTable + ( + absorptionEmissionModel, + greyMeanSolidAbsorptionEmission, + dictionary + ); +/* + template<> + const char* Foam::NamedEnum + < + Foam::radiation::greyMeanSolidAbsorptionEmission:: + radiativePropertiesNumbering, + 3 + >::names[] = + { + "absorptivity", + "emissivity", + "emission" + }; +*/ + } +} + +/* +const Foam::NamedEnum + < + Foam::radiation::greyMeanSolidAbsorptionEmission:: + radiativePropertiesNumbering, + 3 + > + Foam::radiation::greyMeanSolidAbsorptionEmission:: + radiativePropertiesNumberingNames_; +*/ + +// * * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * // + +Foam::tmp<Foam::scalarField> Foam::radiation:: +greyMeanSolidAbsorptionEmission::X +( + const volScalarField& Yj +) const +{ + const volScalarField& T = thermo_.T(); + const volScalarField& p = thermo_.p(); + + const basicMultiComponentMixture& mixture = + dynamic_cast<const basicMultiComponentMixture&>(thermo_); + + const label mySpecieI = mixture.species()[Yj.name()]; + + tmp<volScalarField> tXj + ( + new volScalarField + ( + IOobject + ( + "Xj", + mesh().time().timeName(), + mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh(), + dimensionedScalar("Xj", dimless, 0.0), + zeroGradientFvPatchVectorField::typeName + ) + ); + + scalarField& Xj = tXj().internalField(); + + tmp<scalarField> tRhoInv(Xj); + scalarField& rhoInv = tRhoInv(); + + forAll(mixture.Y(), specieI) + { + const volScalarField& Yi = mixture.Y(specieI); + + forAll(Xj, iCell) + { + rhoInv[iCell] += + Yi[iCell]/mixture.rho(specieI, p[iCell], T[iCell]); + } + } + + forAll(Xj, iCell) + { + Xj[iCell] = Yj[iCell]/mixture.rho(mySpecieI, p[iCell], T[iCell]); + } + + return (Xj/rhoInv); +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::radiation::greyMeanSolidAbsorptionEmission:: +greyMeanSolidAbsorptionEmission +( + const dictionary& dict, + const fvMesh& mesh +) +: + absorptionEmissionModel(dict, mesh), + coeffsDict_((dict.subDict(typeName + "Coeffs"))), + thermo_(mesh.lookupObject<fluidThermo>("thermophysicalProperties")), + speciesNames_(0), + solidData_ + ( + dynamic_cast + < + const basicMultiComponentMixture& + >(thermo_).species().size() + ) +{ + if (!isA<basicMultiComponentMixture>(thermo_)) + { + FatalErrorIn + ( + "radiation::greyMeanSolidAbsorptionEmission::" + "greyMeanSolidAbsorptionEmission" + "(" + "const dictionary&, " + "const fvMesh&" + ")" + ) << "Model requires a multi-component thermo package" + << abort(FatalError); + } + + label nFunc = 0; + const dictionary& functionDicts = dict.subDict(typeName + "Coeffs"); + + forAllConstIter(dictionary, functionDicts, iter) + { + // safety: + if (!iter().isDict()) + { + continue; + } + const word& key = iter().keyword(); + speciesNames_.insert(key, nFunc); + const dictionary& dict = iter().dict(); + dict.lookup("a") >> solidData_[nFunc][absorptivity]; + dict.lookup("e") >> solidData_[nFunc][emissivity]; + + nFunc++; + } +} + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::radiation::greyMeanSolidAbsorptionEmission:: +~greyMeanSolidAbsorptionEmission() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::radiation::greyMeanSolidAbsorptionEmission:: +calc(const label property) const +{ + const basicMultiComponentMixture& mixture = + dynamic_cast<const basicMultiComponentMixture&>(thermo_); + + tmp<volScalarField> ta + ( + new volScalarField + ( + IOobject + ( + "a", + mesh().time().timeName(), + mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh(), + dimensionedScalar("a", dimless/dimLength, 0.0), + zeroGradientFvPatchVectorField::typeName + ) + ); + + scalarField& a = ta().internalField(); + + forAllConstIter(HashTable<label>, speciesNames_, iter) + { + if (mixture.contains(iter.key())) + { + const volScalarField& Y = mixture.Y(iter.key()); + a += solidData_[iter()][property]*X(Y); + } + } + + ta().correctBoundaryConditions(); + return ta; +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::greyMeanSolidAbsorptionEmission::eCont +( + const label bandI +) const +{ + return calc(emissivity); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::greyMeanSolidAbsorptionEmission::aCont +( + const label bandI +) const +{ + return calc(absorptivity); +} + +// ************************************************************************* // diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.H b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.H new file mode 100644 index 0000000000000000000000000000000000000000..9e2586a88be31452257bfb0c71b1ce63001cb50d --- /dev/null +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.H @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2012 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 <http://www.gnu.org/licenses/>. + +Class + Foam::radiation::greyMeanSolidAbsorptionEmission + +Description + greyMeanSolidAbsorptionEmission radiation absorption and emission + coefficients for continuous phase + + The coefficients for the species in the Look up table have to be specified + for use in moles x P [atm], i.e. (k[i] = species[i]*p*9.869231e-6). + + The coefficients for CO and soot or any other added are multiplied by the + respective mass fraction being solved + + All the species in the dictionary need either to be in the look-up table or + being solved. Conversely, all the species solved do not need to be included + in the calculation of the absorption coefficient + + The names of the species in the absorption dictionary must match exactly the + name in the look-up table or the name of the field being solved + +SourceFiles + greyMeanSolidAbsorptionEmission.C + +\*---------------------------------------------------------------------------*/ + +#ifndef greyMeanSolidAbsorptionEmission_H +#define greyMeanSolidAbsorptionEmission_H + +#include "absorptionEmissionModel.H" +#include "fluidThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace radiation +{ + +/*---------------------------------------------------------------------------*\ + Class greyMeanSolidAbsorptionEmission Declaration +\*---------------------------------------------------------------------------*/ + +class greyMeanSolidAbsorptionEmission +: + public absorptionEmissionModel +{ + +private: + + // Private data + + //- Enumering of radiative properties + enum radiativeProperties + { + absorptivity, + emissivity + }; + + //- Absorption model dictionary + dictionary coeffsDict_; + + //- SLG thermo package + const fluidThermo& thermo_; + + //- Hash table of species names + HashTable<label> speciesNames_; + + //- List of solid species data + List<FixedList<scalar, 2> > solidData_; + + + // Private member functions + + //- Calculate the volumetric fraction of Yj + tmp<scalarField> X(const volScalarField& Yj) const; + + //- Calculate the property mixing + tmp<volScalarField> calc(const label) const; + + +public: + + //- Runtime type information + TypeName("greyMeanSolidAbsorptionEmission"); + + + // Constructors + + //- Construct from components + greyMeanSolidAbsorptionEmission + ( + const dictionary& dict, + const fvMesh& mesh + ); + + + //- Destructor + virtual ~greyMeanSolidAbsorptionEmission(); + + + // Member Operators + + // Access + + // Absorption coefficient + + //- Absorption coefficient for continuous phase + tmp<volScalarField> aCont(const label bandI = 0) const; + + + // Emission coefficient + + //- Emission coefficient for continuous phase + tmp<volScalarField> eCont(const label bandI = 0) const; + + + // Member Functions + + inline bool isGrey() const + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radiation +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C index 4cdec064bf447ca8a567561367b7e65b33ec0042..938244b592f35527f31dad9b71959a6454b1c4e9 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C +++ b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.C @@ -207,4 +207,16 @@ Foam::scalar Foam::SpecieMixture<MixtureType>::alphah } +template<class MixtureType> +Foam::scalar Foam::SpecieMixture<MixtureType>::rho +( + const label speciei, + const scalar p, + const scalar T +) const +{ + return this->getLocalThermo(speciei).rho(p, T); +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H index ed237ef4468feb4cde85098c3d30bb49b66023b3..a954119dac3abfe8029c1bdf2fb59f0e046b4612 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H +++ b/src/thermophysicalModels/reactionThermo/mixtures/SpecieMixture/SpecieMixture.H @@ -176,6 +176,14 @@ public: const scalar p, const scalar T ) const; + + //- Density [kg/m3] + virtual scalar rho + ( + const label specieI, + const scalar p, + const scalar T + ) const; }; diff --git a/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H index 80a9e7f0569140e03602159e44cce86ef84fe38b..ea712fc22f1b00a86e87ec8c8474fe9443c36cd0 100644 --- a/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H +++ b/src/thermophysicalModels/reactionThermo/mixtures/basicMultiComponentMixture/basicMultiComponentMixture.H @@ -227,6 +227,14 @@ public: const scalar p, const scalar T ) const = 0; + + //- Density [kg/m3] + virtual scalar rho + ( + const label specieI, + const scalar p, + const scalar T + ) const = 0; }; diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/radiationProperties b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/radiationProperties new file mode 100644 index 0000000000000000000000000000000000000000..c60289f7b4915bc9772bf6b39aef46dfe3dca749 --- /dev/null +++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/panelRegion/radiationProperties @@ -0,0 +1,70 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object radiationProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +radiation off; + +radiationModel none; + +noRadiation +{ +} + +P1Coeffs +{ +} + +fvDOMCoeffs +{ +} + +// Number of flow iterations per radiation iteration +solverFreq 10; + +//absorptionEmissionModel constantAbsorptionEmission; +absorptionEmissionModel greyMeanSolidAbsorptionEmission; + + +greyMeanSolidAbsorptionEmissionCoeffs +{ + + v + { + sigmaS 0.0; + a 0.0; //opaque + emissivity 0.17; + } + + char + { + sigmaS 0.0; + a 0.0; + emissivity 0.85; + } + +} + +scatterModel constantScatter; + +constantScatterCoeffs +{ + sigma sigma [ 0 -1 0 0 0 0 0 ] 0; + C C [ 0 0 0 0 0 0 0 ] 0; +} + + +// ************************************************************************* //