12#ifndef DUMUX_SOLIDSYSTEMS_COMPOSITIONAL_SOLID_PHASE_HH
13#define DUMUX_SOLIDSYSTEMS_COMPOSITIONAL_SOLID_PHASE_HH
16#include <dune/common/exceptions.hh>
19namespace SolidSystems {
28template <
class Scalar,
class Component1,
class Component2,
int numInert = 0>
54 case comp0Idx:
return ComponentOne::name();
55 case comp1Idx:
return ComponentTwo::name();
56 default: DUNE_THROW(Dune::InvalidStateException,
"Invalid component index " << compIdx);
85 case comp0Idx:
return ComponentOne::molarMass();
86 case comp1Idx:
return ComponentTwo::molarMass();
87 default: DUNE_THROW(Dune::InvalidStateException,
"Invalid component index " << compIdx);
94 template <
class Sol
idState>
95 static Scalar
density(
const SolidState& solidState)
97 Scalar rho1 = ComponentOne::solidDensity(solidState.temperature());
98 Scalar rho2 = ComponentTwo::solidDensity(solidState.temperature());
99 Scalar volFrac1 = solidState.volumeFraction(
comp0Idx);
100 Scalar volFrac2 = solidState.volumeFraction(
comp1Idx);
102 return (rho1*volFrac1+
103 rho2*volFrac2)/(volFrac1+volFrac2);
109 template <
class Sol
idState>
110 static Scalar
density(
const SolidState& solidState,
const int compIdx)
114 case comp0Idx:
return ComponentOne::solidDensity(solidState.temperature());
115 case comp1Idx:
return ComponentTwo::solidDensity(solidState.temperature());
116 default: DUNE_THROW(Dune::InvalidStateException,
"Invalid component index " << compIdx);
123 template <
class Sol
idState>
124 static Scalar
molarDensity(
const SolidState& solidState,
const int compIdx)
128 case comp0Idx:
return ComponentOne::solidDensity(solidState.temperature())/ComponentOne::molarMass();
129 case comp1Idx:
return ComponentTwo::solidDensity(solidState.temperature())/ComponentTwo::molarMass();
130 default: DUNE_THROW(Dune::InvalidStateException,
"Invalid component index " << compIdx);
137 template <
class Sol
idState>
140 Scalar lambda1 = ComponentOne::solidThermalConductivity(solidState.temperature());
141 Scalar lambda2 = ComponentTwo::solidThermalConductivity(solidState.temperature());
142 Scalar volFrac1 = solidState.volumeFraction(
comp0Idx);
143 Scalar volFrac2 = solidState.volumeFraction(
comp1Idx);
145 return (lambda1*volFrac1+
146 lambda2*volFrac2)/(volFrac1+volFrac2);
152 template <
class Sol
idState>
155 Scalar c1 = ComponentOne::solidHeatCapacity(solidState.temperature());
156 Scalar c2 = ComponentTwo::solidHeatCapacity(solidState.temperature());
157 Scalar volFrac1 = solidState.volumeFraction(
comp0Idx);
158 Scalar volFrac2 = solidState.volumeFraction(
comp1Idx);
161 c2*volFrac2)/(volFrac1+volFrac2);
A solid phase consisting of multiple inert solid components.
Definition: compositionalsolidphase.hh:30
static Scalar molarMass(int compIdx)
The molar mass in of the component.
Definition: compositionalsolidphase.hh:81
static Scalar thermalConductivity(const SolidState &solidState)
Thermal conductivity of the solid .
Definition: compositionalsolidphase.hh:138
static constexpr int comp1Idx
Definition: compositionalsolidphase.hh:42
static std::string name()
A human readable name for the solid system.
Definition: compositionalsolidphase.hh:63
static constexpr bool isInert()
Returns whether the component is inert (doesn't react)
Definition: compositionalsolidphase.hh:75
static Scalar density(const SolidState &solidState, const int compIdx)
The density of the solid phase at a given pressure and temperature.
Definition: compositionalsolidphase.hh:110
static Scalar heatCapacity(const SolidState &solidState)
Specific isobaric heat capacity of the pure solids .
Definition: compositionalsolidphase.hh:153
static constexpr int comp0Idx
Definition: compositionalsolidphase.hh:41
Component2 ComponentTwo
Definition: compositionalsolidphase.hh:33
Component1 ComponentOne
Definition: compositionalsolidphase.hh:32
static constexpr int numInertComponents
Definition: compositionalsolidphase.hh:40
static constexpr bool isCompressible(int compIdx)
Returns whether the phase is incompressible.
Definition: compositionalsolidphase.hh:69
static constexpr int numComponents
Definition: compositionalsolidphase.hh:39
static std::string componentName(int compIdx)
Return the human readable name of a solid phase.
Definition: compositionalsolidphase.hh:50
static Scalar molarDensity(const SolidState &solidState, const int compIdx)
The molar density of the solid phase at a given pressure and temperature.
Definition: compositionalsolidphase.hh:124
static Scalar density(const SolidState &solidState)
The density of the solid phase at a given pressure and temperature.
Definition: compositionalsolidphase.hh:95