27 #ifndef OPM_ECL_SOLID_ENERGY_LAW_MULTIPLEXER_PARAMS_HPP
28 #define OPM_ECL_SOLID_ENERGY_LAW_MULTIPLEXER_PARAMS_HPP
43 template <
class ScalarT>
46 typedef void* ParamPointerType;
49 typedef ScalarT Scalar;
51 enum SolidEnergyApproach {
64 { solidEnergyApproach_ = undefinedApproach; }
69 void setSolidEnergyApproach(SolidEnergyApproach newApproach)
73 solidEnergyApproach_ = newApproach;
74 switch (solidEnergyApproach()) {
75 case undefinedApproach:
76 throw std::logic_error(
"Cannot set the approach for solid energy storage to 'undefined'!");
82 case specrockApproach:
87 realParams_ =
nullptr;
92 SolidEnergyApproach solidEnergyApproach()
const
93 {
return solidEnergyApproach_; }
96 template <Sol
idEnergyApproach approachV>
97 typename std::enable_if<approachV == heatcrApproach, HeatcrLawParams>::type&
100 assert(solidEnergyApproach() == approachV);
104 template <Sol
idEnergyApproach approachV>
105 typename std::enable_if<approachV == heatcrApproach, const HeatcrLawParams>::type&
106 getRealParams()
const
108 assert(solidEnergyApproach() == approachV);
113 template <Sol
idEnergyApproach approachV>
114 typename std::enable_if<approachV == specrockApproach, SpecrockLawParams>::type&
117 assert(solidEnergyApproach() == approachV);
121 template <Sol
idEnergyApproach approachV>
122 typename std::enable_if<approachV == specrockApproach, const SpecrockLawParams>::type&
123 getRealParams()
const
125 assert(solidEnergyApproach() == approachV);
132 switch (solidEnergyApproach()) {
133 case undefinedApproach:
140 case specrockApproach:
148 solidEnergyApproach_ = undefinedApproach;
151 SolidEnergyApproach solidEnergyApproach_;
152 ParamPointerType realParams_;
The default implementation of a parameter object for the ECL thermal law.
The default implementation of a parameter object for the ECL thermal law based on SPECROCK.
Default implementation for asserting finalization of parameter objects.
The default implementation of a parameter object for the ECL thermal law.
Definition: EclHeatcrLawParams.hpp:40
The default implementation of a parameter object for the ECL thermal law.
Definition: EclSolidEnergyLawMultiplexerParams.hpp:45
The default implementation of a parameter object for the ECL thermal law based on SPECROCK.
Definition: EclSpecrockLawParams.hpp:42
Default implementation for asserting finalization of parameter objects.
Definition: EnsureFinalized.hpp:47