27 #ifndef OPM_ECL_SPECROCK_LAW_PARAMS_HPP
28 #define OPM_ECL_SPECROCK_LAW_PARAMS_HPP
40 template <
class ScalarT>
46 typedef ScalarT Scalar;
56 template <
class Container>
58 const Container& heatCapacity)
60 assert(temperature.size() == heatCapacity.size());
63 Scalar curU = temperature[0]*heatCapacity[0];
64 unsigned n = temperature.size();
65 std::vector<Scalar> T(n);
66 std::vector<Scalar> u(n);
67 for (
unsigned i = 0; i < temperature.size(); ++ i) {
68 T[i] = temperature[i];
71 if (i >= temperature.size() - 1)
76 Scalar c_v0 = heatCapacity[i];
77 Scalar c_v1 = heatCapacity[i + 1];
78 Scalar T0 = temperature[i];
79 Scalar T1 = temperature[i + 1];
80 curU += 0.5*(c_v0 + c_v1)*(T1 - T0);
95 { EnsureFinalized::check();
return internalEnergyFunction_; }
98 InternalEnergyFunction internalEnergyFunction_;
Default implementation for asserting finalization of parameter objects.
Implements a linearly interpolated scalar function that depends on one variable.
The default implementation of a parameter object for the ECL thermal law based on SPECROCK.
Definition: EclSpecrockLawParams.hpp:42
const InternalEnergyFunction & internalEnergyFunction() const
Return the function which maps temparature to the rock's volumetric internal energy.
Definition: EclSpecrockLawParams.hpp:94
void setHeatCapacities(const Container &temperature, const Container &heatCapacity)
Specify the volumetric internal energy of rock via heat capacities.
Definition: EclSpecrockLawParams.hpp:57
Default implementation for asserting finalization of parameter objects.
Definition: EnsureFinalized.hpp:47
void setXYContainers(const ScalarContainerX &x, const ScalarContainerY &y, bool sortInputs=true)
Set the sampling points for the piecewise linear function.
Definition: Tabulated1DFunction.hpp:127