12#ifndef DUMUX_SOLIDSYSTEMS_COMPOSITIONAL_SOLID_PHASE_HH 
   13#define DUMUX_SOLIDSYSTEMS_COMPOSITIONAL_SOLID_PHASE_HH 
   16#include <dune/common/exceptions.hh> 
   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