diff --git a/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.C b/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.C index 652a9a6d71..7dabf10a89 100644 --- a/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.C +++ b/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2015-2018 OpenCFD Ltd. + Copyright (C) 2015-2018, 2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -56,8 +56,8 @@ Foam::radiation::constantAbsorption::constantAbsorption : wallAbsorptionEmissionModel(dict, pp), coeffsDict_(dict), - a_(coeffsDict_.get("absorptivity")), - e_(coeffsDict_.get("emissivity")) + a_(Function1::New("absorptivity", coeffsDict_)), + e_(Function1::New("emissivity", coeffsDict_)) {} @@ -70,7 +70,23 @@ Foam::tmp Foam::radiation::constantAbsorption::a const scalarField* T ) const { - return tmp::New(pp_.size(), a_); + if (a_->constant()) + { + // Use arbitrary argument for a_ + return tmp::New(pp_.size(), a_->value(0)); + } + + if (T) + { + return a_->value(*T); + } + + FatalErrorInFunction + << "Attempted to set 'a' using a non-uniform function of Temperature, " + << "but temperature field is unavailable" + << abort(FatalError); + + return nullptr; } @@ -82,7 +98,7 @@ Foam::scalar Foam::radiation::constantAbsorption::a const scalar T ) const { - return a_; + return a_->value(T); } @@ -93,7 +109,23 @@ Foam::tmp Foam::radiation::constantAbsorption::e const scalarField* T ) const { - return tmp::New(pp_.size(), e_); + if (e_->constant()) + { + // Use arbitrary argument for e_ + return tmp::New(pp_.size(), e_->value(0)); + } + + if (T) + { + return e_->value(*T); + } + + FatalErrorInFunction + << "Attempted to set 'e' using a non-uniform function of Temperature, " + << "but temperature field is unavailable" + << abort(FatalError); + + return nullptr; } @@ -105,7 +137,7 @@ Foam::scalar Foam::radiation::constantAbsorption::e const scalar T ) const { - return e_; + return e_->value(T); } diff --git a/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.H b/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.H index a3e3b64618..c7669eabe7 100644 --- a/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.H +++ b/src/thermophysicalModels/radiation/submodels/wallAbsorptionEmissionModel/constantAbsorption/constantAbsorption.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018, 2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -41,6 +41,7 @@ SourceFiles #define Foam_radiation_constantAbsorption_H #include "wallAbsorptionEmissionModel.H" +#include "Function1.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -64,10 +65,10 @@ class constantAbsorption dictionary coeffsDict_; //- Absorptivity coefficient - scalar a_; + autoPtr> a_; //- Emissivity coefficient - scalar e_; + autoPtr> e_; public: diff --git a/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.C b/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.C index b5f7fbb7cc..eac1e6c949 100644 --- a/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.C +++ b/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2015-2018 OpenCFD Ltd. + Copyright (C) 2015-2018, 2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -56,21 +56,36 @@ Foam::radiation::constantTransmissivity::constantTransmissivity : wallTransmissivityModel(dict, pp), coeffsDict_(dict), - tau_(coeffsDict_.get("transmissivity")) + tau_(Function1::New("transmissivity", coeffsDict_)) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::tmp -Foam::radiation::constantTransmissivity::t +Foam::tmp Foam::radiation::constantTransmissivity::t ( const label bandI, const vectorField* incomingDirection, const scalarField* T ) const { - return tmp::New(pp_.size(), tau_); + if (tau_->constant()) + { + // Use arbitrary argument for a_ + return tmp::New(pp_.size(), tau_->value(0)); + } + + if (T) + { + return tau_->value(*T); + } + + FatalErrorInFunction + << "Attempted to set 't' using a non-uniform function of Temperature, " + << "but temperature field is unavailable" + << abort(FatalError); + + return nullptr; } @@ -82,7 +97,7 @@ Foam::scalar Foam::radiation::constantTransmissivity::t const scalar T ) const { - return tau_; + return tau_->value(T); } diff --git a/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.H b/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.H index 5c68c58d2f..1aa513bb67 100644 --- a/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.H +++ b/src/thermophysicalModels/radiation/submodels/wallTransmissivityModel/constantTransmissivity/constantTransmissivity.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2015-2018 OpenCFD Ltd. + Copyright (C) 2015-2018, 2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -41,6 +41,7 @@ SourceFiles #define Foam_radiation_constantTransmissivity_H #include "wallTransmissivityModel.H" +#include "Function1.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -64,7 +65,7 @@ class constantTransmissivity dictionary coeffsDict_; //- Transmissivity coefficient - scalar tau_; + autoPtr> tau_; public: