diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C index 1ad2ab94623f1797d8bf11c940abd35681238cd6..a6535179931c6723446012a9c46767749f667ba7 100644 --- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C +++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C @@ -1928,7 +1928,7 @@ int main(int argc, char *argv[]) forAll(regionSizes, regionI) { - Info<< regionI << "\t\t" << regionSizes[regionI] << nl; + Info<< regionI << '\t' << regionSizes[regionI] << nl; } Info<< endl; @@ -1939,7 +1939,7 @@ int main(int argc, char *argv[]) << "------\t----\t----" << endl; forAll(regionToZones, regionI) { - Info<< regionI << "\t\t" << flatOutput(regionToZones[regionI]) + Info<< regionI << '\t' << flatOutput(regionToZones[regionI]) << '\t' << regionNames[regionI] << nl; } @@ -1987,8 +1987,8 @@ int main(int argc, char *argv[]) const edge& e = interfaces[interI]; Info<< interI - << "\t\t\t" << e[0] << "\t\t" << e[1] - << "\t\t" << interfaceSizes[interI] << nl; + << "\t\t" << e[0] << "\t" << e[1] + << "\t" << interfaceSizes[interI] << nl; } Info<< endl; diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index 83ee06f8bf1fa7bd777a1e2f035467e2d7356641..f23011032ce3b3b91f5690beb91e7fa9daa54e37 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -3,10 +3,12 @@ fluidThermo/fluidThermo.C psiThermo/psiThermo.C psiThermo/psiThermos.C +psiThermo/psiZoneThermos.C rhoThermo/rhoThermo.C rhoThermo/rhoThermos.C rhoThermo/liquidThermo.C +rhoThermo/rhoZoneThermos.C derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.C derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C diff --git a/src/thermophysicalModels/basic/mixtures/pureZoneMixture/pureZoneMixture.C b/src/thermophysicalModels/basic/mixtures/pureZoneMixture/pureZoneMixture.C new file mode 100644 index 0000000000000000000000000000000000000000..e01eb41b80df115b50b6a1b549b40fca6463e3fc --- /dev/null +++ b/src/thermophysicalModels/basic/mixtures/pureZoneMixture/pureZoneMixture.C @@ -0,0 +1,164 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2021,2022 OpenCFD Ltd. +------------------------------------------------------------------------------- +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 "pureZoneMixture.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class ThermoType> +const ThermoType& Foam::pureZoneMixture<ThermoType>::constructSpeciesData +( + const dictionary& thermoDict +) +{ + const auto& czs = mesh_.cellZones(); + + const auto* dictPtr = thermoDict.findDict("none"); + + speciesData_.setSize(dictPtr ? czs.size()+1 : czs.size()); + forAll(czs, i) + { + speciesData_.set + ( + i, + new ThermoType(thermoDict.subDict(czs[i].name())) + ); + } + + if (dictPtr) + { + speciesData_.set(czs.size(), new ThermoType(*dictPtr)); + } + + return speciesData_[0]; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + + +template<class ThermoType> +Foam::pureZoneMixture<ThermoType>::pureZoneMixture +( + const dictionary& thermoDict, + const fvMesh& mesh, + const word& phaseName +) +: + basicMixture(thermoDict, mesh, phaseName), + mesh_(mesh), + mixture_("mixture", constructSpeciesData(thermoDict.subDict("mixture"))) +{ + // Cache index per cell. This is the cellZone except for unzoned cells + // which are last + + const auto& czs = mesh_.cellZones(); + zoneID_.setSize(mesh_.nCells(), czs.size()); + for (const auto& cz : czs) + { + UIndirectList<label>(zoneID_, cz) = cz.index(); + } + + // Check if any unzoned cells but no 'none' specification + if (speciesData_.size() == czs.size()) + { + const label noneCelli = zoneID_.find(czs.size()); + if (noneCelli != -1) + { + FatalErrorInFunction << "Have unzoned cell " << noneCelli + << " at " << mesh_.cellCentres()[noneCelli] + << " but no \"none\" entry in \"mixture\"" + << exit(FatalError); + } + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class ThermoType> +const ThermoType& Foam::pureZoneMixture<ThermoType>::cellMixture +( + const label celli +) const +{ + mixture_ = speciesData_[zoneID_[celli]]; + return mixture_; +} + + +template<class ThermoType> +const ThermoType& Foam::pureZoneMixture<ThermoType>::patchFaceMixture +( + const label patchi, + const label facei +) const +{ + const label celli = mesh_.boundary()[patchi].faceCells()[facei]; + mixture_ = speciesData_[zoneID_[celli]]; + return mixture_; +} + + +template<class ThermoType> +const ThermoType& Foam::pureZoneMixture<ThermoType>::cellVolMixture +( + const scalar p, + const scalar T, + const label celli +) const +{ + // (per zone) constant density + return this->cellMixture(celli); +} + + +template<class ThermoType> +const ThermoType& Foam::pureZoneMixture<ThermoType>:: +patchFaceVolMixture +( + const scalar p, + const scalar T, + const label patchi, + const label facei +) const +{ + return this->patchFaceMixture(patchi, facei); +} + + +template<class ThermoType> +void Foam::pureZoneMixture<ThermoType>::read +( + const dictionary& thermoDict +) +{ + constructSpeciesData(thermoDict); +} + + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/mixtures/pureZoneMixture/pureZoneMixture.H b/src/thermophysicalModels/basic/mixtures/pureZoneMixture/pureZoneMixture.H new file mode 100644 index 0000000000000000000000000000000000000000..8c19cc858e50ac0a9ae0f804f33a4e7cabe28645 --- /dev/null +++ b/src/thermophysicalModels/basic/mixtures/pureZoneMixture/pureZoneMixture.H @@ -0,0 +1,195 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2021,2022 OpenCFD Ltd. +------------------------------------------------------------------------------- +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::pureZoneMixture + +Description + Version of pureMixture that uses different mixtures for different + cellZones. + Every cellZone has to provide an entry for its mixture. A reserved + entry 'none' is for all unzoned cells. + + Example of the zone based mixture specification: + \verbatim + mixture + { + solid1 + { + specie + { + molWeight 50; + } + + transport + { + kappa 80; + } + + thermodynamics + { + Hf 0; + Cp 450; + } + + equationOfState + { + rho 8000; + } + } + solid2 + { + //- Start off from 'solid1' properties + ${solid1} + + //- Selectively overwrite properties + transport + { + kappa 8; + } + } + } + \endverbatim + + +SourceFiles + pureZoneMixture.C + +\*---------------------------------------------------------------------------*/ + +#ifndef pureZoneMixture_H +#define pureZoneMixture_H + +#include "basicMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class pureZoneMixture Declaration +\*---------------------------------------------------------------------------*/ + +template<class ThermoType> +class pureZoneMixture +: + public basicMixture +{ + // Private data + + const fvMesh& mesh_; + + //- Inverse zone info + labelList zoneID_; + + //- Species data + PtrList<ThermoType> speciesData_; + + //- Temporary storage for the cell/face mixture thermo data + mutable ThermoType mixture_; + + + // Private Member Functions + + //- Construct the species data from the given dictionary and return the + // data for the first specie to initialise the mixture thermo data + const ThermoType& constructSpeciesData(const dictionary& thermoDict); + + //- No copy construct + pureZoneMixture(const pureZoneMixture<ThermoType>&) = delete; + + +public: + + //- The type of thermodynamics this mixture is instantiated for + typedef ThermoType thermoType; + + + // Constructors + + //- Construct from dictionary, mesh and phase name + pureZoneMixture + ( + const dictionary& thermoDict, + const fvMesh& mesh, + const word& phaseName + ); + + + //- Destructor + virtual ~pureZoneMixture() = default; + + + // Member functions + + //- Return the instantiated type name + static word typeName() + { + return "pureZoneMixture<" + ThermoType::typeName() + '>'; + } + + const ThermoType& cellMixture(const label celli) const; + + const ThermoType& patchFaceMixture + ( + const label patchi, + const label facei + ) const; + + const ThermoType& cellVolMixture + ( + const scalar p, + const scalar T, + const label celli + ) const; + + const ThermoType& patchFaceVolMixture + ( + const scalar p, + const scalar T, + const label patchi, + const label facei + ) const; + + //- Read dictionary + void read(const dictionary&); +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "pureZoneMixture.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/psiThermo/psiZoneThermos.C b/src/thermophysicalModels/basic/psiThermo/psiZoneThermos.C new file mode 100644 index 0000000000000000000000000000000000000000..8e2b3ca0bba3ebd665d3a8ee78ef8a516bb48f09 --- /dev/null +++ b/src/thermophysicalModels/basic/psiThermo/psiZoneThermos.C @@ -0,0 +1,226 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2021,2022 OpenCFD Ltd. +------------------------------------------------------------------------------- +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 "psiThermo.H" +#include "makeThermo.H" + +#include "specie.H" +#include "perfectGas.H" +#include "PengRobinsonGas.H" +#include "hConstThermo.H" +#include "eConstThermo.H" +#include "janafThermo.H" +#include "sensibleEnthalpy.H" +#include "sensibleInternalEnergy.H" +#include "thermo.H" + +#include "constTransport.H" +#include "sutherlandTransport.H" + +#include "hPolynomialThermo.H" +#include "polynomialTransport.H" + +#include "hePsiThermo.H" +#include "pureZoneMixture.H" + +#include "thermoPhysicsTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * * * Enthalpy-based * * * * * * * * * * * * * */ + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + perfectGas, + specie +); + +// Note: pureZoneMixture copies mixture model for every evaluation of cell +// so can become expensive for complex models (e.g. with tables) + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + janafThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + PengRobinsonGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + PengRobinsonGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + janafThermo, + PengRobinsonGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + janafThermo, + PengRobinsonGas, + specie +); + + +/* * * * * * * * * * * * * * Internal-energy-based * * * * * * * * * * * * * */ + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + eConstThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + eConstThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + hConstThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + janafThermo, + perfectGas, + specie +); + +makeThermos +( + psiThermo, + hePsiThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + janafThermo, + PengRobinsonGas, + specie +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/rhoThermo/rhoZoneThermos.C b/src/thermophysicalModels/basic/rhoThermo/rhoZoneThermos.C new file mode 100644 index 0000000000000000000000000000000000000000..81b3fb7c3af1f34e6449347cbab181529f644cb1 --- /dev/null +++ b/src/thermophysicalModels/basic/rhoThermo/rhoZoneThermos.C @@ -0,0 +1,717 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2021,2022 OpenCFD Ltd. +------------------------------------------------------------------------------- +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 "rhoThermo.H" +#include "makeThermo.H" + +#include "specie.H" +#include "perfectGas.H" +#include "incompressiblePerfectGas.H" +#include "Boussinesq.H" +#include "rhoConst.H" +#include "rPolynomial.H" +#include "perfectFluid.H" +#include "PengRobinsonGas.H" +#include "adiabaticPerfectFluid.H" +#include "icoTabulated.H" + +#include "hConstThermo.H" +#include "eConstThermo.H" +#include "janafThermo.H" +#include "hTabulatedThermo.H" +#include "sensibleEnthalpy.H" +#include "sensibleInternalEnergy.H" +#include "thermo.H" + +#include "constTransport.H" +#include "sutherlandTransport.H" +#include "WLFTransport.H" + +#include "icoPolynomial.H" +#include "hPolynomialThermo.H" +#include "polynomialTransport.H" +#include "tabulatedTransport.H" + +#include "heRhoThermo.H" +#include "pureZoneMixture.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * Private Static Data * * * * * * * * * * * * * */ + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + perfectGas, + specie +); + +// Note: pureZoneMixture copies mixture model for every evaluation of cell +// so can become expensive for complex models (e.g. with tables) + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + janafThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + tabulatedTransport, + sensibleEnthalpy, + hTabulatedThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + rhoConst, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + perfectFluid, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + rPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + tabulatedTransport, + sensibleEnthalpy, + hTabulatedThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + adiabaticPerfectFluid, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + icoPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + tabulatedTransport, + sensibleEnthalpy, + hPolynomialThermo, + icoPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + rPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + incompressiblePerfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + incompressiblePerfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + janafThermo, + incompressiblePerfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + janafThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + tabulatedTransport, + sensibleEnthalpy, + janafThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleEnthalpy, + hConstThermo, + Boussinesq, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + Boussinesq, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + janafThermo, + Boussinesq, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleEnthalpy, + hConstThermo, + PengRobinsonGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + PengRobinsonGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + janafThermo, + PengRobinsonGas, + specie +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + tabulatedTransport, + sensibleInternalEnergy, + hTabulatedThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + hConstThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + hConstThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + janafThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + janafThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + rhoConst, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + eConstThermo, + rhoConst, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + perfectFluid, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + rPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + eConstThermo, + perfectFluid, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + eConstThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + eConstThermo, + rPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + adiabaticPerfectFluid, + specie +); + + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + eConstThermo, + adiabaticPerfectFluid, + specie +); + + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleInternalEnergy, + hPolynomialThermo, + icoPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + tabulatedTransport, + sensibleInternalEnergy, + hPolynomialThermo, + icoPolynomial, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleInternalEnergy, + hPolynomialThermo, + icoTabulated, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + incompressiblePerfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + hConstThermo, + incompressiblePerfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + janafThermo, + incompressiblePerfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + Boussinesq, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + hConstThermo, + Boussinesq, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + sutherlandTransport, + sensibleInternalEnergy, + janafThermo, + Boussinesq, + specie +); + + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + WLFTransport, + sensibleInternalEnergy, + eConstThermo, + rhoConst, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + perfectGas, + specie +); + +makeThermos +( + rhoThermo, + heRhoThermo, + pureZoneMixture, + polynomialTransport, + sensibleEnthalpy, + hPolynomialThermo, + incompressiblePerfectGas, + specie +); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/thermophysicalModels/solidThermo/Make/files b/src/thermophysicalModels/solidThermo/Make/files index b7e2eb623bcf9eb6d12009fab24c9653c40d5b35..ab4a311e7cd72ef616bbfb7837118cc0b3204cd4 100644 --- a/src/thermophysicalModels/solidThermo/Make/files +++ b/src/thermophysicalModels/solidThermo/Make/files @@ -4,4 +4,7 @@ solidThermo/solidThermos.C solidReactionThermo/solidReactionThermo.C solidReactionThermo/solidReactionThermos.C +solidThermo/heZoneSolidThermos.C + + LIB = $(FOAM_LIBBIN)/libsolidThermo diff --git a/src/thermophysicalModels/solidThermo/solidThermo/heZoneSolidThermos.C b/src/thermophysicalModels/solidThermo/solidThermo/heZoneSolidThermos.C new file mode 100644 index 0000000000000000000000000000000000000000..c7db6f4d4e460473ad2661f5ed1cf8468f1be673 --- /dev/null +++ b/src/thermophysicalModels/solidThermo/solidThermo/heZoneSolidThermos.C @@ -0,0 +1,157 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2021,2022 OpenCFD Ltd. +------------------------------------------------------------------------------- +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 "makeSolidThermo.H" +#include "solidThermo.H" +#include "pureZoneMixture.H" +#include "heSolidThermo.H" + +#include "specie.H" +#include "rhoConst.H" +#include "icoPolynomial.H" +#include "icoTabulated.H" +#include "hConstThermo.H" +#include "hPowerThermo.H" +#include "hPolynomialThermo.H" +#include "hTabulatedThermo.H" +#include "constIsoSolidTransport.H" +#include "constAnIsoSolidTransport.H" +#include "exponentialSolidTransport.H" +#include "polynomialSolidTransport.H" +#include "tabulatedSolidTransport.H" +#include "tabulatedAnIsoSolidTransport.H" +#include "sensibleEnthalpy.H" +#include "thermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/* * * * * * * * * * * * * * * * * Enthalpy-based * * * * * * * * * * * * * */ + +makeSolidThermo +( + solidThermo, + heSolidThermo, + pureZoneMixture, + constIsoSolidTransport, + sensibleEnthalpy, + hConstThermo, + rhoConst, + specie +); + +// Note: pureZoneMixture copies mixture model for every evaluation of cell +// so can become expensive for complex models (e.g. with tables) + +makeSolidThermo +( + solidThermo, + heSolidThermo, + pureZoneMixture, + constAnIsoSolidTransport, + sensibleEnthalpy, + hConstThermo, + rhoConst, + specie +); + +makeSolidThermo +( + solidThermo, + heSolidThermo, + pureZoneMixture, + exponentialSolidTransport, + sensibleEnthalpy, + hPowerThermo, + rhoConst, + specie +); + +makeSolidThermo +( + solidThermo, + heSolidThermo, + pureZoneMixture, + polynomialSolidTransport, + sensibleEnthalpy, + hPolynomialThermo, + icoPolynomial, + specie +); + +makeSolidThermo +( + solidThermo, + heSolidThermo, + pureZoneMixture, + tabulatedSolidTransport, + sensibleEnthalpy, + hTabulatedThermo, + icoPolynomial, + specie +); + +makeSolidThermo +( + solidThermo, + heSolidThermo, + pureZoneMixture, + tabulatedSolidTransport, + sensibleEnthalpy, + hTabulatedThermo, + icoTabulated, + specie +); + +//- TBD. Needs clone +//makeSolidThermo +//( +// solidThermo, +// heSolidThermo, +// pureZoneMixture, +// tabulatedAnIsoSolidTransport, +// sensibleEnthalpy, +// hTabulatedThermo, +// icoPolynomial, +// specie +//); + +//makeSolidThermoPhysicsType +//( +// solidThermo, +// heSolidThermo, +// pureZoneMixture, +// hTransportThermoPoly8SolidThermoPhysics +//); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* //