Merge pull request #3262 from akva2/ecltransmissibility_bool_params

remove template parameters for enableEnergy/Diffusion in transmissibility
This commit is contained in:
Bård Skaflestad
2021-05-21 13:01:27 +02:00
committed by GitHub
5 changed files with 88 additions and 102 deletions

View File

@@ -50,7 +50,7 @@ struct EclCpGridVanguard {
// declare the properties
template<class TypeTag>
struct Vanguard<TypeTag, TTag::EclCpGridVanguard> {
using type = Opm::EclCpGridVanguard<TypeTag>;
using type = EclCpGridVanguard<TypeTag>;
};
template<class TypeTag>
struct Grid<TypeTag, TTag::EclCpGridVanguard> {
@@ -89,9 +89,8 @@ public:
using Grid = GetPropType<TypeTag, Properties::Grid>;
using EquilGrid = GetPropType<TypeTag, Properties::EquilGrid>;
using GridView = GetPropType<TypeTag, Properties::GridView>;
using TransmissibilityType = EclTransmissibility<Grid, GridView, ElementMapper, Scalar,
getPropValue<TypeTag, Properties::EnableEnergy>(),
getPropValue<TypeTag, Properties::EnableDiffusion>()>;
using TransmissibilityType = EclTransmissibility<Grid, GridView, ElementMapper, Scalar>;
private:
typedef Dune::CartesianIndexMapper<Grid> CartesianIndexMapper;
using Element = typename GridView::template Codim<0>::Entity;
@@ -163,7 +162,9 @@ protected:
this->gridView(),
this->cartesianIndexMapper(),
this->grid(),
this->cellCentroids()));
this->cellCentroids(),
getPropValue<TypeTag, Properties::EnableEnergy>(),
getPropValue<TypeTag, Properties::EnableDiffusion>()));
globalTrans_->update(false);
}

View File

@@ -86,9 +86,7 @@ public:
using Grid = GetPropType<TypeTag, Properties::Grid>;
using EquilGrid = GetPropType<TypeTag, Properties::EquilGrid>;
using GridView = GetPropType<TypeTag, Properties::GridView>;
using TransmissibilityType = EclTransmissibility<Grid, GridView, ElementMapper, Scalar,
getPropValue<TypeTag, Properties::EnableEnergy>(),
getPropValue<TypeTag, Properties::EnableDiffusion>()>;
using TransmissibilityType = EclTransmissibility<Grid, GridView, ElementMapper, Scalar>;
private:
typedef Grid* GridPointer;

View File

@@ -819,7 +819,9 @@ public:
simulator.vanguard().gridView(),
simulator.vanguard().cartesianIndexMapper(),
simulator.vanguard().grid(),
simulator.vanguard().cellCentroids())
simulator.vanguard().cellCentroids(),
enableEnergy,
enableDiffusion)
, thresholdPressures_(simulator)
, wellModel_(simulator)
, aquiferModel_(simulator)

View File

@@ -82,64 +82,68 @@ std::uint64_t directionalIsId(std::uint32_t elemIdx1, std::uint32_t elemIdx2)
namespace Opm {
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
EclTransmissibility(const EclipseState& eclState,
const GridView& gridView,
const Dune::CartesianIndexMapper<Grid>& cartMapper,
const Grid& grid,
const std::vector<double>& centroids)
const std::vector<double>& centroids,
bool enableEnergy,
bool enableDiffusivity)
: eclState_(eclState)
, gridView_(gridView)
, cartMapper_(cartMapper)
, grid_(grid)
, centroids_(centroids)
, enableEnergy_(enableEnergy)
, enableDiffusivity_(enableDiffusivity)
{
const UnitSystem& unitSystem = eclState_.getDeckUnitSystem();
transmissibilityThreshold_ = unitSystem.parse("Transmissibility").getSIScaling() * 1e-6;
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
transmissibility(unsigned elemIdx1, unsigned elemIdx2) const
{
return trans_.at(isId(elemIdx1, elemIdx2));
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
transmissibilityBoundary(unsigned elemIdx, unsigned boundaryFaceIdx) const
{
return transBoundary_.at(std::make_pair(elemIdx, boundaryFaceIdx));
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
thermalHalfTrans(unsigned insideElemIdx, unsigned outsideElemIdx) const
{
return thermalHalfTrans_->at(directionalIsId(insideElemIdx, outsideElemIdx));
return thermalHalfTrans_.at(directionalIsId(insideElemIdx, outsideElemIdx));
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
thermalHalfTransBoundary(unsigned insideElemIdx, unsigned boundaryFaceIdx) const
{
return thermalHalfTransBoundary_.at(std::make_pair(insideElemIdx, boundaryFaceIdx));
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
Scalar EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
diffusivity(unsigned elemIdx1, unsigned elemIdx2) const
{
if(diffusivity_->empty())
if (diffusivity_.empty())
return 0.0;
return diffusivity_->at(isId(elemIdx1, elemIdx2));
return diffusivity_.at(isId(elemIdx1, elemIdx2));
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
update(bool global)
{
const auto& cartDims = cartMapper_.cartesianDimensions();
@@ -149,7 +153,7 @@ update(bool global)
// get the ntg values, the ntg values are modified for the cells merged with minpv
const std::vector<double>& ntg = eclState_.fieldProps().get_double("NTG");
const bool updateDiffusivity = eclState_.getSimulationConfig().isDiffusive() && enableDiffusion;
const bool updateDiffusivity = eclState_.getSimulationConfig().isDiffusive() && enableDiffusivity_;
unsigned numElements = elemMapper.size();
extractPermeability_();
@@ -195,17 +199,17 @@ update(bool global)
transBoundary_.clear();
// if energy is enabled, let's do the same for the "thermal half transmissibilities"
if constexpr (enableEnergy) {
thermalHalfTrans_->clear();
thermalHalfTrans_->reserve(numElements*6*1.05);
if (enableEnergy_) {
thermalHalfTrans_.clear();
thermalHalfTrans_.reserve(numElements*6*1.05);
thermalHalfTransBoundary_.clear();
}
// if diffusion is enabled, let's do the same for the "diffusivity"
if (updateDiffusivity) {
diffusivity_->clear();
diffusivity_->reserve(numElements*3*1.05);
diffusivity_.clear();
diffusivity_.reserve(numElements*3*1.05);
extractPorosity_();
}
@@ -215,7 +219,7 @@ update(bool global)
bool useSmallestMultiplier;
if (comm.rank() == 0) {
const auto& eclGrid = eclState_.getInputGrid();
useSmallestMultiplier = eclGrid.getMultzOption() == Opm::PinchMode::ModeEnum::ALL;
useSmallestMultiplier = eclGrid.getMultzOption() == PinchMode::ModeEnum::ALL;
}
if (global && comm.size() > 1) {
comm.broadcast(&useSmallestMultiplier, 1, 0);
@@ -260,7 +264,7 @@ update(bool global)
// for boundary intersections we also need to compute the thermal
// half transmissibilities
if constexpr (enableEnergy) {
if (enableEnergy_) {
Scalar transBoundaryEnergyIs;
computeHalfDiffusivity_(transBoundaryEnergyIs,
faceAreaNormal,
@@ -402,7 +406,7 @@ update(bool global)
trans_[isId(elemIdx, outsideElemIdx)] = trans;
// update the "thermal half transmissibility" for the intersection
if constexpr (enableEnergy) {
if (enableEnergy_) {
Scalar halfDiffusivity1;
Scalar halfDiffusivity2;
@@ -422,8 +426,8 @@ update(bool global)
axisCentroids),
1.0);
//TODO Add support for multipliers
(*thermalHalfTrans_)[directionalIsId(elemIdx, outsideElemIdx)] = halfDiffusivity1;
(*thermalHalfTrans_)[directionalIsId(outsideElemIdx, elemIdx)] = halfDiffusivity2;
thermalHalfTrans_[directionalIsId(elemIdx, outsideElemIdx)] = halfDiffusivity1;
thermalHalfTrans_[directionalIsId(outsideElemIdx, elemIdx)] = halfDiffusivity2;
}
// update the "diffusive half transmissibility" for the intersection
@@ -459,7 +463,7 @@ update(bool global)
diffusivity = 1.0 / (1.0/halfDiffusivity1 + 1.0/halfDiffusivity2);
(*diffusivity_)[isId(elemIdx, outsideElemIdx)] = diffusivity;
diffusivity_[isId(elemIdx, outsideElemIdx)] = diffusivity;
}
}
}
@@ -487,8 +491,8 @@ update(bool global)
removeSmallNonCartesianTransmissibilities_();
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
extractPermeability_()
{
unsigned numElem = gridView_.size(/*codim=*/0);
@@ -529,8 +533,8 @@ extractPermeability_()
"(The PERM{X,Y,Z} keywords are missing)");
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
extractPorosity_()
{
// read the intrinsic porosity from the eclState. Note that all arrays
@@ -546,8 +550,8 @@ extractPorosity_()
"(The PORO keywords are missing)");
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
removeSmallNonCartesianTransmissibilities_()
{
const auto& cartDims = cartMapper_.cartesianDimensions();
@@ -568,8 +572,8 @@ removeSmallNonCartesianTransmissibilities_()
}
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
applyAllZMultipliers_(Scalar& trans,
unsigned insideFaceIdx,
unsigned outsideFaceIdx,
@@ -607,8 +611,8 @@ applyAllZMultipliers_(Scalar& trans,
}
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
updateFromEclState_(bool global)
{
const FieldPropsManager* fp =
@@ -639,9 +643,9 @@ updateFromEclState_(bool global)
resetTransmissibilityFromArrays_(is_tran, trans);
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
template<class Grid, class GridView, class ElementMapper, class Scalar>
std::array<std::vector<double>,3>
EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
createTransmissibilityArrays_(const std::array<bool,3>& is_tran)
{
const auto& cartDims = cartMapper_.cartesianDimensions();
@@ -706,8 +710,8 @@ createTransmissibilityArrays_(const std::array<bool,3>& is_tran)
return trans;
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
resetTransmissibilityFromArrays_(const std::array<bool,3>& is_tran,
const std::array<std::vector<double>,3>& trans)
{
@@ -764,9 +768,9 @@ resetTransmissibilityFromArrays_(const std::array<bool,3>& is_tran,
}
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
template<class Grid, class GridView, class ElementMapper, class Scalar>
template<class Intersection>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
computeFaceProperties(const Intersection& intersection,
const int,
const int,
@@ -787,9 +791,9 @@ computeFaceProperties(const Intersection& intersection,
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
template<class Grid, class GridView, class ElementMapper, class Scalar>
template<class Intersection>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
computeFaceProperties(const Intersection& intersection,
const int insideElemIdx,
const int insideFaceIdx,
@@ -806,9 +810,9 @@ computeFaceProperties(const Intersection& intersection,
faceAreaNormal = grid_.faceAreaNormalEcl(faceIdx);
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
template<class Grid, class GridView, class ElementMapper, class Scalar>
std::tuple<std::vector<NNCdata>, std::vector<NNCdata>>
EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
applyNncToGridTrans_(const std::vector<int>& cartesianToCompressed)
{
// First scale NNCs with EDITNNC.
@@ -857,8 +861,8 @@ applyNncToGridTrans_(const std::vector<int>& cartesianToCompressed)
return std::make_tuple(processedNnc, unprocessedNnc);
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
applyEditNncToGridTrans_(const std::vector<int>& globalToLocal)
{
const auto& nnc_input = eclState_.getInputNNC();
@@ -920,8 +924,8 @@ applyEditNncToGridTrans_(const std::vector<int>& globalToLocal)
}
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
computeHalfTrans_(Scalar& halfTrans,
const DimVector& areaNormal,
int faceIdx, // in the reference element that contains the intersection
@@ -941,8 +945,8 @@ computeHalfTrans_(Scalar& halfTrans,
halfTrans /= distance.two_norm2();
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
computeHalfDiffusivity_(Scalar& halfDiff,
const DimVector& areaNormal,
const DimVector& distance,
@@ -957,9 +961,9 @@ computeHalfDiffusivity_(Scalar& halfDiff,
halfDiff /= distance.two_norm2();
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
typename EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::DimVector
EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
typename EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::DimVector
EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
distanceVector_(const DimVector& center,
int faceIdx, // in the reference element that contains the intersection
unsigned elemIdx,
@@ -974,8 +978,8 @@ distanceVector_(const DimVector& center,
return x;
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
applyMultipliers_(Scalar& trans,
unsigned faceIdx,
unsigned cartElemIdx,
@@ -1008,8 +1012,8 @@ applyMultipliers_(Scalar& trans,
}
}
template<class Grid, class GridView, class ElementMapper, class Scalar, bool enableEnergy, bool enableDiffusion>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar,enableEnergy,enableDiffusion>::
template<class Grid, class GridView, class ElementMapper, class Scalar>
void EclTransmissibility<Grid,GridView,ElementMapper,Scalar>::
applyNtg_(Scalar& trans,
unsigned faceIdx,
unsigned elemIdx,
@@ -1041,35 +1045,17 @@ applyNtg_(Scalar& trans,
template class EclTransmissibility<Dune::CpGrid,
Dune::GridView<Dune::Fem::GridPart2GridViewTraits<Dune::Fem::AdaptiveLeafGridPart<Dune::CpGrid, Dune::PartitionIteratorType(4), false>>>,
Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::Fem::GridPart2GridViewTraits<Dune::Fem::AdaptiveLeafGridPart<Dune::CpGrid, Dune::PartitionIteratorType(4), false>>>>,
double,
true,
true>;
template class EclTransmissibility<Dune::CpGrid,
Dune::GridView<Dune::Fem::GridPart2GridViewTraits<Dune::Fem::AdaptiveLeafGridPart<Dune::CpGrid, Dune::PartitionIteratorType(4), false>>>,
Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::Fem::GridPart2GridViewTraits<Dune::Fem::AdaptiveLeafGridPart<Dune::CpGrid, Dune::PartitionIteratorType(4), false>>>>,
double,
false,
true>;
double>;
#else
template class EclTransmissibility<Dune::CpGrid,
Dune::GridView<Dune::DefaultLeafGridViewTraits<Dune::CpGrid>>,
Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<Dune::CpGrid>>, Dune::Impl::MCMGFailLayout>,
double,
true,
true>;
template class EclTransmissibility<Dune::CpGrid,
Dune::GridView<Dune::DefaultLeafGridViewTraits<Dune::CpGrid>>,
Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<Dune::CpGrid>>, Dune::Impl::MCMGFailLayout>,
double,
false,
true>;
double>;
#endif
template class EclTransmissibility<Dune::PolyhedralGrid<3,3,double>,
Dune::GridView<Dune::PolyhedralGridViewTraits<3, 3, double, Dune::PartitionIteratorType(4)>>,
Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::PolyhedralGridViewTraits<3,3,double,Dune::PartitionIteratorType(4)>>, Dune::Impl::MCMGFailLayout>,
double,
false,
true>;
double>;
} // namespace Opm

View File

@@ -30,8 +30,6 @@
#include <opm/grid/common/CartesianIndexMapper.hpp>
#include <opm/material/common/ConditionalStorage.hpp>
#include <dune/common/fvector.hh>
#include <dune/common/fmatrix.hh>
@@ -47,8 +45,7 @@ class EclipseState;
struct NNCdata;
class TransMult;
template<class Grid, class GridView, class ElementMapper,
class Scalar, bool enableEnergy, bool enableDiffusion>
template<class Grid, class GridView, class ElementMapper, class Scalar>
class EclTransmissibility {
// Grid and world dimension
enum { dimWorld = GridView::dimensionworld };
@@ -61,7 +58,9 @@ public:
const GridView& gridView,
const Dune::CartesianIndexMapper<Grid>& cartMapper,
const Grid& grid,
const std::vector<double>& centroids);
const std::vector<double>& centroids,
bool enableEnergy,
bool enableDiffusivity);
/*!
* \brief Return the permeability for an element.
@@ -241,10 +240,10 @@ protected:
Scalar transmissibilityThreshold_;
std::map<std::pair<unsigned, unsigned>, Scalar> transBoundary_;
std::map<std::pair<unsigned, unsigned>, Scalar> thermalHalfTransBoundary_;
Opm::ConditionalStorage<enableEnergy,
std::unordered_map<std::uint64_t, Scalar> > thermalHalfTrans_;
Opm::ConditionalStorage<enableDiffusion,
std::unordered_map<std::uint64_t, Scalar> > diffusivity_;
bool enableEnergy_;
bool enableDiffusivity_;
std::unordered_map<std::uint64_t, Scalar> thermalHalfTrans_;
std::unordered_map<std::uint64_t, Scalar> diffusivity_;
};
} // namespace Opm