mirror of
https://github.com/OPM/opm-simulators.git
synced 2026-09-05 04:40:19 -05:00
remove template parameters for enableEnergy/Diffusion in transmissibility
- the diffusion one is basically done on runtime anyways - the energy one gives some small code elimination gains however, it complicates the writing of downstream templates.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
+3
-1
@@ -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)
|
||||
|
||||
+70
-84
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user