12#ifndef DUMUX_COMPONENTS_CONSTANT_HH
13#define DUMUX_COMPONENTS_CONSTANT_HH
15#include <dune/common/exceptions.hh>
43template<
int id,
class Scalar>
86 static const std::string&
name()
88 static const std::string
name = getParamFromGroup<std::string>(std::to_string(
id),
"Component.Name",
"component");
97 static const Scalar molarMass = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.MolarMass");
106 static const Scalar tripleTemperature = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.TripleTemperature");
115 static const Scalar triplePressure = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.TriplePressure");
137 static const Scalar density = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.LiquidDensity");
164 static const Scalar dynamicViscosity = [&]
166 if (
hasParamInGroup(std::to_string(
id),
"Component.LiquidKinematicViscosity"))
168 if (
hasParamInGroup(std::to_string(
id),
"Component.LiquidDynamicViscosity"))
169 DUNE_THROW(Dune::InvalidStateException,
"Found both Component.LiquidKinematicViscosity and Component.LiquidDynamicViscosity."
170 <<
" Please only specify either the kinematic or the dynamic viscosity for all constant components to avoid ambiguities.");
175 return getParamFromGroup<Scalar>(std::to_string(
id),
"Component.LiquidDynamicViscosity");
178 return dynamicViscosity;
188 static const Scalar thermalConductivity = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.LiquidThermalConductivity");
189 return thermalConductivity;
201 static const Scalar tRef = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.ReferenceTemperature", 293.15);
226 static const Scalar heatCapacity = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.LiquidHeatCapacity");
238 static const Scalar density = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.GasDensity");
266 static const Scalar dynamicViscosity = [&]
268 if (
hasParamInGroup(std::to_string(
id),
"Component.GasKinematicViscosity"))
270 if (
hasParamInGroup(std::to_string(
id),
"Component.GasDynamicViscosity"))
271 DUNE_THROW(Dune::InvalidStateException,
"Found both Component.GasKinematicViscosity and Component.GasDynamicViscosity."
272 <<
" Please only specify either the kinematic or the dynamic viscosity for all constant components to avoid ambiguities.");
277 return getParamFromGroup<Scalar>(std::to_string(
id),
"Component.GasDynamicViscosity");
280 return dynamicViscosity;
290 static const Scalar thermalConductivity = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.GasThermalConductivity");
291 return thermalConductivity;
323 static const Scalar tRef = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.ReferenceTemperature", 293.15);
335 static const Scalar heatCapacity = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.GasHeatCapacity");
366 static const Scalar density = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.SolidDensity");
386 static const Scalar solidHeatCapacity = getParamFromGroup<Scalar>(std::to_string(
id),
"Component.SolidHeatCapacity");
Base class for all components Components provide the thermodynamic relations for the liquid,...
Definition: components/base.hh:47
Scalar Scalar
export the scalar type used by the component
Definition: components/base.hh:51
A component which returns run time specified values for all fluid properties.
Definition: constant.hh:49
static Scalar solidDensity(Scalar temperature)
The density in of the component at a given pressure in and temperature in .
Definition: constant.hh:364
static const std::string & name()
A human readable name for the component.
Definition: constant.hh:86
static Scalar solidThermalConductivity(Scalar temperature)
Thermal conductivity of the component as a solid.
Definition: constant.hh:374
static Scalar gasThermalConductivity(Scalar temperature, Scalar pressure)
Thermal conductivity of the component as a gas.
Definition: constant.hh:288
static Scalar triplePressure()
Returns the pressure at the component's triple point.
Definition: constant.hh:113
static Scalar liquidThermalConductivity(Scalar temperature, Scalar pressure)
Thermal conductivity of the component as a liquid.
Definition: constant.hh:186
static Scalar liquidEnthalpy(Scalar temperature, Scalar pressure)
Specific enthalpy of the component as a liquid.
Definition: constant.hh:211
static Scalar liquidMolarDensity(Scalar temperature, Scalar pressure)
The molar density in at a given pressure and temperature.
Definition: constant.hh:148
static Scalar gasInternalEnergy(Scalar temperature, Scalar pressure)
Specific internal energy of the component as a gas.
Definition: constant.hh:307
static constexpr bool gasIsCompressible()
Returns true if the gas phase is assumed to be compressible.
Definition: constant.hh:56
static Scalar liquidHeatCapacity(Scalar temperature, Scalar pressure)
Specific isobaric heat capacity of the component as a liquid.
Definition: constant.hh:224
static Scalar gasHeatCapacity(Scalar temperature, Scalar pressure)
Specific isobaric heat capacity of the component as a gas.
Definition: constant.hh:333
static Scalar gasMolarDensity(Scalar temperature, Scalar pressure)
The molar density in at a given pressure and temperature.
Definition: constant.hh:249
static Scalar gasEnthalpy(Scalar temperature, Scalar pressure)
Specific enthalpy of the component as a gas.
Definition: constant.hh:321
static Scalar tripleTemperature()
Returns the temperature at the components's triple point.
Definition: constant.hh:104
static Scalar solidHeatCapacity(Scalar temperature)
Specific isobaric heat capacity of the component as a solid.
Definition: constant.hh:384
static constexpr bool gasViscosityIsConstant()
Returns true if the gas phase viscosity is constant.
Definition: constant.hh:62
static Scalar liquidInternalEnergy(Scalar temperature, Scalar pressure)
Specific internal energy of the component as a liquid.
Definition: constant.hh:197
static Scalar gasDensity(Scalar temperature, Scalar pressure)
Sets the gas density in .
Definition: constant.hh:236
static constexpr bool liquidViscosityIsConstant()
Returns true if the liquid phase viscosity is constant.
Definition: constant.hh:80
static constexpr bool gasIsIdeal()
Returns true if the gas phase is assumed to be ideal.
Definition: constant.hh:68
static Scalar liquidDensity(Scalar temperature, Scalar pressure)
Sets the liquid density in .
Definition: constant.hh:135
static Scalar molarMass()
The mass in of one mole of the component.
Definition: constant.hh:95
static constexpr bool liquidIsCompressible()
Returns true if the liquid phase is assumed to be compressible.
Definition: constant.hh:74
static Scalar vaporPressure(Scalar T)
The vapor pressure in of a the component at a given temperature.
Definition: constant.hh:347
static Scalar vaporizationEnthalpy()
The vaporization enthalpy in needed to vaporize one kilogram of the liquid component to the gaseous ...
Definition: constant.hh:122
static Scalar liquidViscosity(Scalar temperature, Scalar pressure)
Sets the liquid dynamic viscosity in .
Definition: constant.hh:162
static Scalar gasViscosity(Scalar temperature, Scalar pressure)
Sets the gas dynamic viscosity in .
Definition: constant.hh:264
Interface for components that have a gas state.
Definition: gas.hh:29
Interface for components that have a liquid state.
Definition: liquid.hh:29
Interface for components that have a solid state.
Definition: solid.hh:29
Relations valid for an ideal gas.
Definition: idealgas.hh:25
static constexpr Scalar R
The ideal gas constant .
Definition: idealgas.hh:28
Base class for all components Components provide the thermodynamic relations for the liquid,...
Interface for components that have a gas state.
bool hasParamInGroup(const std::string ¶mGroup, const std::string ¶m)
Check whether a key exists in the parameter tree with a model group prefix.
Definition: parameters.hh:165
Relations valid for an ideal gas.
Interface for components that have a liquid state.
std::string temperature() noexcept
I/O name of temperature for equilibrium models.
Definition: name.hh:39
std::string pressure(int phaseIdx) noexcept
I/O name of pressure for multiphase systems.
Definition: name.hh:22
std::string density(int phaseIdx) noexcept
I/O name of density for multiphase systems.
Definition: name.hh:53
The infrastructure to retrieve run-time parameters from Dune::ParameterTrees.
Interface for components that have a solid state.