26 #ifndef EWOMS_DISCRETE_FRACTURE_PROBLEM_HH
27 #define EWOMS_DISCRETE_FRACTURE_PROBLEM_HH
33 #include <opm/material/common/Means.hpp>
35 #include <dune/common/fvector.hh>
36 #include <dune/common/fmatrix.hh>
39 namespace Properties {
50 template<
class TypeTag>
56 typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation;
57 typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
58 typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
61 enum { dimWorld = GridView::dimensionworld };
62 typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix;
69 : ParentType(simulator)
81 template <
class Context>
83 const Context &context,
84 int localFaceIdx,
int timeIdx)
const
86 const auto &scvf = context.stencil(timeIdx).interiorFace(localFaceIdx);
87 int interiorElemIdx = scvf.interiorIndex();
88 int exteriorElemIdx = scvf.exteriorIndex();
89 const DimMatrix &K1 = asImp_().fractureIntrinsicPermeability(context, interiorElemIdx, timeIdx);
90 const DimMatrix &K2 = asImp_().fractureIntrinsicPermeability(context, exteriorElemIdx, timeIdx);
94 for (
int i = 0; i < dimWorld; ++i)
95 for (
int j = 0; j < dimWorld; ++j)
96 result[i][j] = Opm::harmonicMean(K1[i][j], K2[i][j]);
106 template <
class Context>
108 int spaceIdx,
int timeIdx)
const
110 OPM_THROW(std::logic_error,
111 "Not implemented: Problem::fractureIntrinsicPermeability()");
122 template <
class Context>
124 int spaceIdx,
int timeIdx)
const
126 OPM_THROW(std::logic_error,
127 "Not implemented: Problem::fracturePorosity()");
132 Implementation &asImp_()
133 {
return *
static_cast<Implementation *
>(
this); }
135 const Implementation &asImp_()
const
136 {
return *
static_cast<const Implementation *
>(
this); }
DiscreteFractureProblem(Simulator &simulator)
Definition: discretefractureproblem.hh:68
Simulator & simulator()
Returns Simulator object used by the simulation.
Definition: fvbaseproblem.hh:504
NEW_PROP_TAG(Grid)
The type of the DUNE grid.
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
Definition: discretefractureproblem.hh:51
Manages the initializing and running of time dependent problems.
Definition: simulator.hh:73
Definition: baseauxiliarymodule.hh:35
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
void fractureFaceIntrinsicPermeability(DimMatrix &result, const Context &context, int localFaceIdx, int timeIdx) const
Returns the intrinsic permeability of a face due to a fracture.
Definition: discretefractureproblem.hh:82
The base class for the problems of ECFV discretizations which deal with a multi-phase flow through a ...
Definition: multiphasebaseproblem.hh:55
Defines the properties required for the immiscible multi-phase model which considers discrete fractur...
Scalar fracturePorosity(const Context &context, int spaceIdx, int timeIdx) const
Returns the porosity [] inside fractures for a given control volume.
Definition: discretefractureproblem.hh:123
const DimMatrix & fractureIntrinsicPermeability(const Context &context, int spaceIdx, int timeIdx) const
Returns the intrinsic permeability tensor at a given position due to a fracture. ...
Definition: discretefractureproblem.hh:107