28 #ifndef EWOMS_DISCRETE_FRACTURE_PROBLEM_HH 29 #define EWOMS_DISCRETE_FRACTURE_PROBLEM_HH 35 #include <opm/material/common/Means.hpp> 36 #include <opm/common/Unused.hpp> 37 #include <opm/common/ErrorMacros.hpp> 38 #include <opm/common/Exceptions.hpp> 40 #include <dune/common/fvector.hh> 41 #include <dune/common/fmatrix.hh> 44 namespace Properties {
55 template<
class TypeTag>
61 typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation;
62 typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
63 typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
66 enum { dimWorld = GridView::dimensionworld };
67 typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix;
86 template <
class Context>
88 const Context& context,
89 unsigned localFaceIdx,
90 unsigned timeIdx)
const 92 const auto& scvf = context.stencil(timeIdx).interiorFace(localFaceIdx);
93 unsigned interiorElemIdx = scvf.interiorIndex();
94 unsigned exteriorElemIdx = scvf.exteriorIndex();
95 const DimMatrix& K1 = asImp_().fractureIntrinsicPermeability(context, interiorElemIdx, timeIdx);
96 const DimMatrix& K2 = asImp_().fractureIntrinsicPermeability(context, exteriorElemIdx, timeIdx);
100 for (
unsigned i = 0; i < dimWorld; ++i)
101 for (
unsigned j = 0; j < dimWorld; ++j)
102 result[i][j] = Opm::harmonicMean(K1[i][j], K2[i][j]);
112 template <
class Context>
114 unsigned spaceIdx OPM_UNUSED,
115 unsigned timeIdx OPM_UNUSED)
const 117 OPM_THROW(std::logic_error,
118 "Not implemented: Problem::fractureIntrinsicPermeability()");
129 template <
class Context>
131 unsigned spaceIdx OPM_UNUSED,
132 unsigned timeIdx OPM_UNUSED)
const 134 OPM_THROW(std::logic_error,
135 "Not implemented: Problem::fracturePorosity()");
140 Implementation& asImp_()
141 {
return *
static_cast<Implementation *
>(
this); }
143 const Implementation& asImp_()
const 144 {
return *
static_cast<const Implementation *
>(
this); }
Defines the properties required for the immiscible multi-phase model which considers discrete fractur...
Definition: baseauxiliarymodule.hh:37
Scalar fracturePorosity(const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const
Returns the porosity [] inside fractures for a given control volume.
Definition: discretefractureproblem.hh:130
void fractureFaceIntrinsicPermeability(DimMatrix &result, const Context &context, unsigned localFaceIdx, unsigned timeIdx) const
Returns the intrinsic permeability of a face due to a fracture.
Definition: discretefractureproblem.hh:87
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
Definition: discretefractureproblem.hh:56
Simulator & simulator()
Returns Simulator object used by the simulation.
Definition: fvbaseproblem.hh:526
const DimMatrix & fractureIntrinsicPermeability(const Context &context OPM_UNUSED, unsigned spaceIdx OPM_UNUSED, unsigned timeIdx OPM_UNUSED) const
Returns the intrinsic permeability tensor at a given position due to a fracture. ...
Definition: discretefractureproblem.hh:113
Manages the initializing and running of time dependent problems.
Definition: simulator.hh:75
#define NEW_PROP_TAG(PTagName)
Define a property tag.
Definition: propertysystem.hh:247
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
Definition: multiphasebaseproblem.hh:59
DiscreteFractureProblem(Simulator &simulator)
Definition: discretefractureproblem.hh:73
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...