From 18983950385da754beda0a85ebf140254f738153 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 14 Jun 2021 14:54:17 +0200 Subject: [PATCH] ENH: group bools together, relocate override of updateT (basicThermo) - all flags before loaders. Avoids "uninitialized when used here" warning while preserving the field ownership logic. - relocate override of updateT basicThermo into constructor body for clearer logic and initialization STYLE: plain bool instead of Switch for dpdt flag --- .../phaseModel/phaseModel/phaseModel.H | 8 +-- .../basic/basicThermo/basicThermo.C | 66 ++++++++++--------- .../basic/basicThermo/basicThermo.H | 59 +++++++++-------- 3 files changed, 70 insertions(+), 63 deletions(-) diff --git a/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H b/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H index ccbf8fd3e5e..1f9ade08083 100644 --- a/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H +++ b/src/phaseSystemModels/multiphaseInter/phasesSystem/phaseModel/phaseModel/phaseModel.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -60,7 +60,7 @@ class phaseModel : public volScalarField { - // Private data + // Private Data //- Reference to the phaseSystem to which this phase belongs const phaseSystem& fluid_; @@ -209,8 +209,8 @@ public: const label patchi ) const; - //- Query each thermo for dpdt - Switch dpdt() const + //- Query thermo for dpdt + bool dpdt() const { return thermo().dpdt(); } diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index b2b368f8adc..b25fd1d8911 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -36,8 +36,7 @@ License #include "energyJumpFvPatchScalarField.H" #include "energyJumpAMIFvPatchScalarField.H" - -/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { @@ -55,7 +54,7 @@ Foam::wordList Foam::basicThermo::heBoundaryBaseTypes() { const volScalarField::Boundary& tbf = this->T_.boundaryField(); - wordList hbt(tbf.size(), word::null); + wordList hbt(tbf.size()); forAll(tbf, patchi) { @@ -86,7 +85,7 @@ Foam::wordList Foam::basicThermo::heBoundaryTypes() { const volScalarField::Boundary& tbf = this->T_.boundaryField(); - wordList hbt = tbf.types(); + wordList hbt(tbf.types()); forAll(tbf, patchi) { @@ -120,17 +119,16 @@ Foam::wordList Foam::basicThermo::heBoundaryTypes() } -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // Foam::volScalarField& Foam::basicThermo::lookupOrConstruct ( const fvMesh& mesh, - const word& name, + const word& fieldName, bool& isOwner ) { - volScalarField* ptr = - mesh.objectRegistry::getObjectPtr<volScalarField>(name); + auto* ptr = mesh.objectRegistry::getObjectPtr<volScalarField>(fieldName); isOwner = !ptr; @@ -140,7 +138,7 @@ Foam::volScalarField& Foam::basicThermo::lookupOrConstruct ( IOobject ( - name, + fieldName, mesh.time().timeName(), mesh, IOobject::MUST_READ, @@ -157,6 +155,8 @@ Foam::volScalarField& Foam::basicThermo::lookupOrConstruct } +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + Foam::basicThermo::basicThermo ( const fvMesh& mesh, @@ -177,10 +177,12 @@ Foam::basicThermo::basicThermo phaseName_(phaseName), - p_(lookupOrConstruct(mesh, "p", pOwner_)), + pOwner_(false), + TOwner_(false), + dpdt_(getOrDefault<bool>("dpdt", true)), + p_(lookupOrConstruct(mesh, "p", pOwner_)), T_(lookupOrConstruct(mesh, phasePropertyName("T"), TOwner_)), - TOwner_(getOrDefault<Switch>("updateT", TOwner_)), alpha_ ( @@ -194,10 +196,10 @@ Foam::basicThermo::basicThermo ), mesh, dimensionedScalar(dimensionSet(1, -1, -1, 0, 0), Zero) - ), - - dpdt_(getOrDefault<Switch>("dpdt", true)) -{} + ) +{ + this->readIfPresent("updateT", TOwner_); // Manual override +} Foam::basicThermo::basicThermo @@ -222,10 +224,12 @@ Foam::basicThermo::basicThermo phaseName_(phaseName), - p_(lookupOrConstruct(mesh, "p", pOwner_)), + pOwner_(false), + TOwner_(false), + dpdt_(getOrDefault<bool>("dpdt", true)), + p_(lookupOrConstruct(mesh, "p", pOwner_)), T_(lookupOrConstruct(mesh, phasePropertyName("T"), TOwner_)), - TOwner_(getOrDefault<Switch>("updateT", TOwner_)), alpha_ ( @@ -239,10 +243,10 @@ Foam::basicThermo::basicThermo ), mesh, dimensionedScalar(dimensionSet(1, -1, -1, 0, 0), Zero) - ), - - dpdt_(getOrDefault<Switch>("dpdt", true)) -{} + ) +{ + this->readIfPresent("updateT", TOwner_); // Manual override +} Foam::basicThermo::basicThermo @@ -266,10 +270,12 @@ Foam::basicThermo::basicThermo phaseName_(phaseName), - p_(lookupOrConstruct(mesh, "p", pOwner_)), + pOwner_(false), + TOwner_(false), + dpdt_(getOrDefault<bool>("dpdt", true)), + p_(lookupOrConstruct(mesh, "p", pOwner_)), T_(lookupOrConstruct(mesh, "T", TOwner_)), - TOwner_(getOrDefault<Switch>("updateT", TOwner_)), alpha_ ( @@ -283,10 +289,10 @@ Foam::basicThermo::basicThermo ), mesh, dimensionedScalar(dimensionSet(1, -1, -1, 0, 0), Zero) - ), - - dpdt_(getOrDefault<Switch>("dpdt", true)) + ) { + this->readIfPresent("updateT", TOwner_); // Manual override + if (debug) { Pout<< "Constructed shared thermo : mesh:" << mesh.name() @@ -384,7 +390,7 @@ void Foam::basicThermo::validate ) { FatalErrorInFunction - << "Supported energy types are " << phasePropertyName(a) + << "Supported energy types: " << phasePropertyName(a) << " and " << phasePropertyName(b) << ", thermodynamics package provides " << he().name() << exit(FatalError); @@ -409,7 +415,7 @@ void Foam::basicThermo::validate ) { FatalErrorInFunction - << "Supported energy types are " << phasePropertyName(a) + << "Supported energy types: " << phasePropertyName(a) << ", " << phasePropertyName(b) << " and " << phasePropertyName(c) << ", thermodynamics package provides " << he().name() @@ -437,7 +443,7 @@ void Foam::basicThermo::validate ) { FatalErrorInFunction - << "Supported energy types are " << phasePropertyName(a) + << "Supported energy types: " << phasePropertyName(a) << ", " << phasePropertyName(b) << ", " << phasePropertyName(c) << " and " << phasePropertyName(d) diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index 0e799adc1d8..dcd7dce5dfe 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2017-2019 OpenCFD Ltd. + Copyright (C) 2017-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -65,55 +65,56 @@ class basicThermo : public IOdictionary { - protected: - // Protected data + // Protected Data //- Phase-name const word& phaseName_; + //- Pressure created and stored by this instance + bool pOwner_; - // Fields + //- Temperature created and stored by this instance + bool TOwner_; - //- Pressure [Pa] - volScalarField& p_; + //- Include dpdt term in the enthalpy equation? + bool dpdt_; - bool pOwner_; - //- Temperature [K] - volScalarField& T_; + // Fields - bool TOwner_; + //- Pressure [Pa] + volScalarField& p_; - //- Laminar thermal diffusivity [kg/m/s] - volScalarField alpha_; + //- Temperature [K] + volScalarField& T_; - //- Should the dpdt term be included in the enthalpy equation - Switch dpdt_; + //- Laminar thermal diffusivity [kg/m/s] + volScalarField alpha_; // Protected Member Functions - //- Construct as copy (not implemented) - basicThermo(const basicThermo&); - - //- Look up or construct field + //- Look up field from registry or construct and store static volScalarField& lookupOrConstruct ( const fvMesh& mesh, - const word&, - bool& isOwner + const word& fieldName, + bool& isOwner //!< Stored to registry by this instance ); //- Return the enthalpy/internal energy field boundary types - // by interrogating the temperature field boundary types + //- by interrogating the temperature field boundary types wordList heBoundaryTypes(); //- Return the enthalpy/internal energy field boundary base types - // by interrogating the temperature field boundary types + //- by interrogating the temperature field boundary types wordList heBoundaryBaseTypes(); + //- No copy construct + basicThermo(const basicThermo&) = delete; + public: @@ -161,7 +162,7 @@ public: ); //- Construct from mesh, phase name and explicit naming of the - // dictionary (so it can be shared amongst phases). + //- dictionary (so it can be shared amongst phases). basicThermo ( const fvMesh&, @@ -228,7 +229,7 @@ public: virtual ~basicThermo(); - // Member functions + // Member Functions static const word dictName; @@ -243,7 +244,7 @@ public: word phasePropertyName(const word& name) const { - return basicThermo::phasePropertyName(name, phaseName_); + return IOobject::groupName(name, phaseName_); } static const basicThermo& lookupThermo(const fvPatchScalarField& pf); @@ -307,14 +308,14 @@ public: // i.e. rho = const virtual bool isochoric() const = 0; - //- Should the dpdt term be included in the enthalpy equation - Switch dpdt() const + //- True if dpdt term should be included in enthalpy equation + bool dpdt() const noexcept { return dpdt_; } - //- Should T be updated - Switch updateT() const + //- True if T should be updated + bool updateT() const noexcept { return TOwner_; } -- GitLab