From a34f71ca3ca075998dba75b0981e03aa90cf4169 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 4 Oct 2012 14:50:43 +0100 Subject: [PATCH] ENH: Modification to get hold of the radiative from the radiation model instead of solid thermo --- .../solid/createSolidFields.H | 4 ++ .../solid/setRegionSolidFields.H | 1 + .../solid/createSolidFields.H | 4 ++ .../solid/setRegionSolidFields.H | 1 + src/regionModels/pyrolysisModels/Make/options | 4 +- .../pyrolysisModels/noPyrolysis/noPyrolysis.C | 10 ++-- .../pyrolysisModel/pyrolysisModel.C | 11 +++- .../pyrolysisModel/pyrolysisModel.H | 4 ++ .../reactingOneDim/reactingOneDim.C | 2 +- .../reactingOneDim/reactingOneDim.H | 2 +- .../thermoBaffleModels/Make/options | 4 +- .../thermoBaffle2D/thermoBaffle2D.C | 8 +-- .../thermoBaffleModel/thermoBaffleModel.C | 12 +++- .../thermoBaffleModel/thermoBaffleModel.H | 5 ++ .../greyMeanSolidAbsorptionEmission.C | 60 ++++--------------- .../greyMeanSolidAbsorptionEmission.H | 10 +++- 16 files changed, 70 insertions(+), 72 deletions(-) diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H index dbdc018950..b435b88d7f 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H @@ -1,5 +1,6 @@ // Initialise solid field pointer lists PtrList thermos(solidRegions.size()); + PtrList radiations(solidRegions.size()); // Populate solid field pointer lists forAll(solidRegions, i) @@ -13,4 +14,7 @@ i, solidThermo::New(solidRegions[i]) ); + + Info<< " Adding to radiations\n" << endl; + radiations.set(i, radiation::radiationModel::New(thermos[i].T())); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H index e8e21cd63b..78c937d29e 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H @@ -1,5 +1,6 @@ fvMesh& mesh = solidRegions[i]; solidThermo& thermo = thermos[i]; + const radiation::radiationModel& radiation = radiations[i]; tmp trho = thermo.rho(); const volScalarField& rho = trho(); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H index cbeaf37fce..2a543a4d6f 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/createSolidFields.H @@ -1,5 +1,6 @@ // Initialise solid field pointer lists PtrList thermos(solidRegions.size()); + PtrList radiations(solidRegions.size()); // Populate solid field pointer lists forAll(solidRegions, i) @@ -9,4 +10,7 @@ Info<< " Adding to thermos\n" << endl; thermos.set(i, solidThermo::New(solidRegions[i])); + + Info<< " Adding to radiations\n" << endl; + radiations.set(i, radiation::radiationModel::New(thermos[i].T())); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H index 0968002e55..788383e5ec 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/setRegionSolidFields.H @@ -1,5 +1,6 @@ fvMesh& mesh = solidRegions[i]; solidThermo& thermo = thermos[i]; + const radiation::radiationModel& radiation = radiations[i]; tmp trho = thermo.rho(); const volScalarField& rho = trho(); diff --git a/src/regionModels/pyrolysisModels/Make/options b/src/regionModels/pyrolysisModels/Make/options index eac63d03a0..b922d0f573 100644 --- a/src/regionModels/pyrolysisModels/Make/options +++ b/src/regionModels/pyrolysisModels/Make/options @@ -7,6 +7,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ -I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \ @@ -26,4 +27,5 @@ LIB_LIBS = \ -lcompressibleRASModels \ -lcompressibleLESModels \ -lLESdeltas \ - -lregionModels + -lregionModels \ + -lradiationModels diff --git a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C index 6f4a438569..9d9626a32e 100644 --- a/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C +++ b/src/regionModels/pyrolysisModels/noPyrolysis/noPyrolysis.C @@ -135,31 +135,31 @@ void noPyrolysis::evolveRegion() const volScalarField& noPyrolysis::rho() const { - return (solidThermo_->rho()); + return solidThermo_->rho(); } const volScalarField& noPyrolysis::T() const { - return (solidThermo_->T()); + return solidThermo_->T(); } const tmp noPyrolysis::Cp() const { - return (solidThermo_->Cp()); + return solidThermo_->Cp(); } tmp noPyrolysis::kappaRad() const { - return (solidThermo_->kappaRad()); + return radiation_->absorptionEmission().a(); } tmp noPyrolysis::kappa() const { - return (solidThermo_->kappa()); + return solidThermo_->kappa(); } diff --git a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C index b64afa0be6..e050a38871 100644 --- a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C +++ b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.C @@ -78,6 +78,8 @@ void pyrolysisModel::constructMeshObjects() } } + radiation_.reset(radiation::radiationModel::New(T()).ptr()); + if (!foundCoupledPatch) { WarningIn("void pyrolysisModels::constructMeshObjects()") @@ -135,7 +137,8 @@ pyrolysisModel::pyrolysisModel(const fvMesh& mesh) regionModel1D(mesh), filmCoupled_(false), filmDeltaPtr_(NULL), - reactionDeltaMin_(0.0) + reactionDeltaMin_(0.0), + radiation_(NULL) {} @@ -144,7 +147,8 @@ pyrolysisModel::pyrolysisModel(const word& modelType, const fvMesh& mesh) regionModel1D(mesh, "pyrolysis", modelType), filmCoupled_(false), filmDeltaPtr_(NULL), - reactionDeltaMin_(0.0) + reactionDeltaMin_(0.0), + radiation_(NULL) { if (active_) { @@ -164,7 +168,8 @@ pyrolysisModel::pyrolysisModel regionModel1D(mesh, "pyrolysis", modelType, dict), filmCoupled_(false), filmDeltaPtr_(NULL), - reactionDeltaMin_(0.0) + reactionDeltaMin_(0.0), + radiation_(NULL) { if (active_) { diff --git a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.H b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.H index 57d8caa3c4..731bc897bb 100644 --- a/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.H +++ b/src/regionModels/pyrolysisModels/pyrolysisModel/pyrolysisModel.H @@ -38,6 +38,7 @@ SourceFiles #include "runTimeSelectionTables.H" #include "volFieldsFwd.H" #include "regionModel1D.H" +#include "radiationModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -91,6 +92,9 @@ protected: //- Film height below which reactions can occur [m] scalar reactionDeltaMin_; + //- Pointer to radiation model + autoPtr radiation_; + // Protected Member Functions diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C index 87294c6096..e833d7459e 100644 --- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C +++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.C @@ -656,7 +656,7 @@ const tmp reactingOneDim::Cp() const tmp reactingOneDim::kappaRad() const { - return solidThermo_.kappaRad(); + return radiation_->absorptionEmission().a(); } diff --git a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H index 619c9c0e9a..44893570d1 100644 --- a/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H +++ b/src/regionModels/pyrolysisModels/reactingOneDim/reactingOneDim.H @@ -90,7 +90,7 @@ protected: //- List of solid components PtrList& Ys_; - // Non-const access to temperature + // Non-const access to enthalpy volScalarField& h_; diff --git a/src/regionModels/thermoBaffleModels/Make/options b/src/regionModels/thermoBaffleModels/Make/options index 8d14c45c93..7e40068412 100644 --- a/src/regionModels/thermoBaffleModels/Make/options +++ b/src/regionModels/thermoBaffleModels/Make/options @@ -8,6 +8,7 @@ EXE_INC = \ -I$(LIB_SRC)/AMIInterpolation/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel/lnInclude LIB_LIBS = \ @@ -17,4 +18,5 @@ LIB_LIBS = \ -lfiniteVolume \ -lmeshTools \ -lOpenFOAM \ - -lsolidSpecie + -lsolidSpecie \ + -lradiationModels diff --git a/src/regionModels/thermoBaffleModels/thermoBaffle2D/thermoBaffle2D.C b/src/regionModels/thermoBaffleModels/thermoBaffle2D/thermoBaffle2D.C index 144b451bbc..124f4789b0 100644 --- a/src/regionModels/thermoBaffleModels/thermoBaffle2D/thermoBaffle2D.C +++ b/src/regionModels/thermoBaffleModels/thermoBaffle2D/thermoBaffle2D.C @@ -318,13 +318,7 @@ const tmp thermoBaffle2D::Cp() const const volScalarField& thermoBaffle2D::kappaRad() const { - // ***HGW return thermo_->kappaRad(); - FatalErrorIn - ( - "thermoBaffle2D::kappaRad()" - ) << "not currently supported" - << exit(FatalError); - return volScalarField::null(); + return radiation_->absorptionEmission().a(); } diff --git a/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.C b/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.C index 8217c9b1f5..3b2c2bcb9c 100644 --- a/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.C +++ b/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.C @@ -192,6 +192,9 @@ void thermoBaffleModel::init() } } } + + // Create radiation model + radiation_.reset(radiation::radiationModel::New(T()).ptr()); } } @@ -204,7 +207,8 @@ thermoBaffleModel::thermoBaffleModel(const fvMesh& mesh) thickness_(), delta_("delta", dimLength, 0.0), oneD_(false), - constantThickness_(true) + constantThickness_(true), + radiation_(NULL) {} @@ -220,7 +224,8 @@ thermoBaffleModel::thermoBaffleModel thickness_(), delta_("delta", dimLength, 0.0), oneD_(false), - constantThickness_(dict.lookupOrDefault("constantThickness", true)) + constantThickness_(dict.lookupOrDefault("constantThickness", true)), + radiation_(NULL) { init(); } @@ -232,7 +237,8 @@ thermoBaffleModel::thermoBaffleModel(const word& modelType, const fvMesh& mesh) thickness_(), delta_("delta", dimLength, 0.0), oneD_(false), - constantThickness_(lookupOrDefault("constantThickness", true)) + constantThickness_(lookupOrDefault("constantThickness", true)), + radiation_(NULL) { init(); } diff --git a/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.H b/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.H index 9160c32e80..e9f461391f 100644 --- a/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.H +++ b/src/regionModels/thermoBaffleModels/thermoBaffleModel/thermoBaffleModel.H @@ -40,6 +40,8 @@ SourceFiles #include "volFieldsFwd.H" #include "solidThermo.H" #include "regionModel1D.H" +#include "radiationModel.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -88,6 +90,9 @@ protected: //- Is thickness constant bool constantThickness_; + //- Pointer to radiation model + autoPtr radiation_; + // Protected Member Functions diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C index 3371c57597..172031f8e4 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanSolidAbsorptionEmission/greyMeanSolidAbsorptionEmission.C @@ -43,34 +43,9 @@ namespace Foam 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::radiation:: @@ -82,10 +57,7 @@ greyMeanSolidAbsorptionEmission::X const volScalarField& T = thermo_.T(); const volScalarField& p = thermo_.p(); - const basicMultiComponentMixture& mixture = - dynamic_cast(thermo_); - - const label mySpecieI = mixture.species()[Yj.name()]; + const label mySpecieI = mixture_.species()[Yj.name()]; tmp tXj ( @@ -110,20 +82,20 @@ greyMeanSolidAbsorptionEmission::X tmp tRhoInv(Xj); scalarField& rhoInv = tRhoInv(); - forAll(mixture.Y(), specieI) + forAll(mixture_.Y(), specieI) { - const volScalarField& Yi = mixture.Y(specieI); + const volScalarField& Yi = mixture_.Y(specieI); forAll(Xj, iCell) { rhoInv[iCell] += - Yi[iCell]/mixture.rho(specieI, p[iCell], T[iCell]); + Yi[iCell]/mixture_.rho(specieI, p[iCell], T[iCell]); } } forAll(Xj, iCell) { - Xj[iCell] = Yj[iCell]/mixture.rho(mySpecieI, p[iCell], T[iCell]); + Xj[iCell] = Yj[iCell]/mixture_.rho(mySpecieI, p[iCell], T[iCell]); } return (Xj/rhoInv); @@ -140,15 +112,10 @@ greyMeanSolidAbsorptionEmission : absorptionEmissionModel(dict, mesh), coeffsDict_((dict.subDict(typeName + "Coeffs"))), - thermo_(mesh.lookupObject("thermophysicalProperties")), + thermo_(mesh.lookupObject("thermophysicalProperties")), speciesNames_(0), - solidData_ - ( - dynamic_cast - < - const basicMultiComponentMixture& - >(thermo_).species().size() - ) + mixture_(dynamic_cast(thermo_)), + solidData_(mixture_.Y().size()) { if (!isA(thermo_)) { @@ -195,11 +162,8 @@ Foam::radiation::greyMeanSolidAbsorptionEmission:: Foam::tmp Foam::radiation::greyMeanSolidAbsorptionEmission:: -calc(const label property) const +calc(const label propertyId) const { - const basicMultiComponentMixture& mixture = - dynamic_cast(thermo_); - tmp ta ( new volScalarField @@ -222,10 +186,10 @@ calc(const label property) const forAllConstIter(HashTable