mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Return a nullptr to the EclMaterialLawManager
Define a method materialLawManagerPtr() that returns a nullpointer to EclMaterialLawManager, but that can be overridden in derived classes e.g. EclProblem
This commit is contained in:
parent
a941ba49c0
commit
f36aa67804
@ -661,8 +661,8 @@ private:
|
|||||||
// mobility_ class attribute. the division by the phase viscosity happens later.
|
// mobility_ class attribute. the division by the phase viscosity happens later.
|
||||||
MaterialLaw::relativePermeabilities(mobility, materialParams, fluidState);
|
MaterialLaw::relativePermeabilities(mobility, materialParams, fluidState);
|
||||||
Valgrind::CheckDefined(mobility);
|
Valgrind::CheckDefined(mobility);
|
||||||
const auto& materialLawManager = problem.materialLawManager();
|
const auto* materialLawManager = problem.materialLawManagerPtr();
|
||||||
if (materialLawManager->hasDirectionalRelperms()) {
|
if (materialLawManager && materialLawManager->hasDirectionalRelperms()) {
|
||||||
auto satnumIdx = materialLawManager->satnumRegionIdx(globalSpaceIdx);
|
auto satnumIdx = materialLawManager->satnumRegionIdx(globalSpaceIdx);
|
||||||
using Dir = FaceDir::DirEnum;
|
using Dir = FaceDir::DirEnum;
|
||||||
constexpr int ndim = 3;
|
constexpr int ndim = 3;
|
||||||
|
@ -40,7 +40,13 @@
|
|||||||
#include <dune/common/fmatrix.hh>
|
#include <dune/common/fmatrix.hh>
|
||||||
|
|
||||||
namespace Opm {
|
namespace Opm {
|
||||||
|
// TODO: This hack is used to be able compile blackoilintensitivequantities.hh (see the function updateRelperms()) when
|
||||||
|
// the problem is not an EclProblem. For example if the problem is a ReservoirBlackOilVcfvProblem, the problem will not
|
||||||
|
// have a materialLawManager pointer (as the EclProblem has). Since this class MuitPhaseBaseProblem (see below) is a parent
|
||||||
|
// class for both those problem types, we can solve this problem by forward declaring EclMaterialLawManager<Traits> here
|
||||||
|
// and defining a method materialLawManagerPtr() here that returns a nullptr, but is overridden in EclProblem to
|
||||||
|
// return the real EclMaterialManager pointer.
|
||||||
|
template <class TraitsT> class EclMaterialLawManager;
|
||||||
/*!
|
/*!
|
||||||
* \ingroup Discretization
|
* \ingroup Discretization
|
||||||
*
|
*
|
||||||
@ -246,6 +252,13 @@ public:
|
|||||||
return dummy;
|
return dummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: See the comment at the top of this file for the reason why we need this method
|
||||||
|
template <class TraitsT>
|
||||||
|
const ::Opm::EclMaterialLawManager<TraitsT>* materialLawManagerPtr() const
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Returns the temperature \f$\mathrm{[K]}\f$ within a control volume.
|
* \brief Returns the temperature \f$\mathrm{[K]}\f$ within a control volume.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user