consistently rename "heat conduction" to "thermal conduction" and use "solid energy" laws

according to wikipedia the term "heat" is the energy transferred due
to a temperature gradient, i.e., it only makes sense if such a
gradient is present and this is not necessary for the storage term.

this means that technically the term "heat conductivity" is
meaningful, but "thermal conductivity" is IMO more consistent.

this has partially already been done in opm-material and eWoms it was
pretty inconsistent, so it also requires a patch in opm-material.
This commit is contained in:
Andreas Lauser
2018-01-04 15:27:02 +01:00
parent f5cfd8f768
commit 4f92ec5865
6 changed files with 143 additions and 163 deletions
+27 -27
View File
@@ -40,7 +40,7 @@
#include <opm/material/fluidmatrixinteractions/RegularizedBrooksCorey.hpp>
#include <opm/material/fluidmatrixinteractions/EffToAbsLaw.hpp>
#include <opm/material/fluidmatrixinteractions/MaterialTraits.hpp>
#include <opm/material/thermal/SomertonHeatConductionLaw.hpp>
#include <opm/material/thermal/SomertonThermalConductionLaw.hpp>
#include <opm/material/thermal/ConstantSolidHeatCapLaw.hpp>
#include <opm/material/binarycoefficients/Brine_CO2.hpp>
#include <opm/material/common/UniformTabulated2DFunction.hpp>
@@ -123,8 +123,8 @@ public:
typedef Opm::EffToAbsLaw<EffMaterialLaw> type;
};
// Set the heat conduction law
SET_PROP(Co2InjectionBaseProblem, HeatConductionLaw)
// Set the thermal conduction law
SET_PROP(Co2InjectionBaseProblem, ThermalConductionLaw)
{
private:
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
@@ -132,10 +132,10 @@ private:
public:
// define the material law parameterized by absolute saturations
typedef Opm::SomertonHeatConductionLaw<FluidSystem, Scalar> type;
typedef Opm::SomertonThermalConductionLaw<FluidSystem, Scalar> type;
};
// set the heat law for the solid phase
// set the energy storage law for the solid phase
SET_TYPE_PROP(Co2InjectionBaseProblem, SolidEnergyLaw,
Opm::ConstantSolidHeatCapLaw<typename GET_PROP_TYPE(TypeTag, Scalar)>);
@@ -224,9 +224,9 @@ class Co2InjectionProblem : public GET_PROP_TYPE(TypeTag, BaseProblem)
typedef typename GET_PROP_TYPE(TypeTag, Simulator) Simulator;
typedef typename GET_PROP_TYPE(TypeTag, Model) Model;
typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams;
typedef typename GET_PROP_TYPE(TypeTag, HeatConductionLaw) HeatConductionLaw;
typedef typename GET_PROP_TYPE(TypeTag, ThermalConductionLaw) ThermalConductionLaw;
typedef typename GET_PROP_TYPE(TypeTag, SolidEnergyLawParams) SolidEnergyLawParams;
typedef typename HeatConductionLaw::Params HeatConductionLawParams;
typedef typename ThermalConductionLaw::Params ThermalConductionLawParams;
typedef Opm::MathToolbox<Evaluation> Toolbox;
typedef typename GridView::ctype CoordScalar;
@@ -295,14 +295,14 @@ public:
fineMaterialParams_.finalize();
coarseMaterialParams_.finalize();
// parameters for the somerton law of heat conduction
computeHeatCondParams_(fineHeatCondParams_, finePorosity_);
computeHeatCondParams_(coarseHeatCondParams_, coarsePorosity_);
// parameters for the somerton law thermal conduction
computeThermalCondParams_(fineThermalCondParams_, finePorosity_);
computeThermalCondParams_(coarseThermalCondParams_, coarsePorosity_);
// assume the volumetric heat capacity of granite
solidHeatLawParams_.setSolidHeatCapacity(790.0 // specific heat capacity of granite [J / (kg K)]
* 2700.0); // density of granite [kg/m^3]
solidHeatLawParams_.finalize();
// assume constant heat capacity and granite
solidEnergyLawParams_.setSolidHeatCapacity(790.0 // specific heat capacity of granite [J / (kg K)]
* 2700.0); // density of granite [kg/m^3]
solidEnergyLawParams_.finalize();
}
/*!
@@ -439,24 +439,24 @@ public:
*/
template <class Context>
const SolidEnergyLawParams&
solidHeatLawParams(const Context& context OPM_UNUSED,
unsigned spaceIdx OPM_UNUSED,
unsigned timeIdx OPM_UNUSED) const
{ return solidHeatLawParams_; }
solidEnergyLawParams(const Context& context OPM_UNUSED,
unsigned spaceIdx OPM_UNUSED,
unsigned timeIdx OPM_UNUSED) const
{ return solidEnergyLawParams_; }
/*!
* \copydoc FvBaseMultiPhaseProblem::heatConductionParams
* \copydoc FvBaseMultiPhaseProblem::thermalConductionParams
*/
template <class Context>
const HeatConductionLawParams &
heatConductionLawParams(const Context& context,
const ThermalConductionLawParams &
thermalConductionLawParams(const Context& context,
unsigned spaceIdx,
unsigned timeIdx) const
{
const GlobalPosition& pos = context.pos(spaceIdx, timeIdx);
if (isFineMaterial_(pos))
return fineHeatCondParams_;
return coarseHeatCondParams_;
return fineThermalCondParams_;
return coarseThermalCondParams_;
}
//! \}
@@ -606,7 +606,7 @@ private:
bool inHighTemperatureRegion_(const GlobalPosition& pos) const
{ return (pos[0] > 20) && (pos[0] < 30) && (pos[1] > 5) && (pos[1] < 35); }
void computeHeatCondParams_(HeatConductionLawParams& params, Scalar poro)
void computeThermalCondParams_(ThermalConductionLawParams& params, Scalar poro)
{
Scalar lambdaWater = 0.6;
Scalar lambdaGranite = 2.8;
@@ -633,9 +633,9 @@ private:
MaterialLawParams fineMaterialParams_;
MaterialLawParams coarseMaterialParams_;
HeatConductionLawParams fineHeatCondParams_;
HeatConductionLawParams coarseHeatCondParams_;
SolidEnergyLawParams solidHeatLawParams_;
ThermalConductionLawParams fineThermalCondParams_;
ThermalConductionLawParams coarseThermalCondParams_;
SolidEnergyLawParams solidEnergyLawParams_;
Scalar temperature_;
Scalar maxDepth_;