Merge branch 'feature-pureZoneMixture' into 'develop'

ENH: pureZoneMixture: different mixture properties according to cellZone

See merge request Development/openfoam!586
This commit is contained in:
Mark OLESEN
2022-12-14 15:39:16 +00:00
8 changed files with 1468 additions and 4 deletions

View File

@ -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;

View File

@ -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

View File

@ -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);
}
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //

View File

@ -4,4 +4,7 @@ solidThermo/solidThermos.C
solidReactionThermo/solidReactionThermo.C
solidReactionThermo/solidReactionThermos.C
solidThermo/heZoneSolidThermos.C
LIB = $(FOAM_LIBBIN)/libsolidThermo

View File

@ -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
// ************************************************************************* //