36 #ifndef OPENRS_RESERVOIRPROPERTYCAPILLARYANISOTROPICRELPERM_HEADER
37 #define OPENRS_RESERVOIRPROPERTYCAPILLARYANISOTROPICRELPERM_HEADER
39 #include <opm/porsol/common/RockAnisotropicRelperm.hpp>
40 #include <opm/porsol/common/ReservoirPropertyCommon.hpp>
52 : mob(dim, dim, tensor_storage_.data())
58 : tensor_storage_(other.tensor_storage_),
59 mob(dim, dim, tensor_storage_.data())
65 for (
int i = 0; i < dim*dim; ++i) {
66 tensor_storage_[i] = 0.5*(m1.tensor_storage_[i] + m2.tensor_storage_[i]);
71 for (
int i = 0; i < dim*dim; ++i) {
72 tensor_storage_[i] = m1.tensor_storage_[i] + m2.tensor_storage_[i];
77 tensor_storage_ = m.tensor_storage_;
81 Vec multiply(
const Vec& v)
88 prod(duplicate.mob, other.mob, mob);
94 std::array<double, dim*dim> tensor_storage_;
96 FullMatrix<double, SharedData, COrdering> mob;
105 :
public ReservoirPropertyCommon<dim, ReservoirPropertyCapillaryAnisotropicRelperm<dim>, RockAnisotropicRelperm>
116 template <
class MatrixType>
120 MatrixType& phase_mob)
const;
129 void computeCflFactors();
133 template <
class MatrixType>
134 void phaseMobilityByRock(
int phase_index,
137 MatrixType& phase_mob)
const;
138 void cflFracFlows(
int rock,
int direction,
double s,
double& ff_first,
double& ff_gravity)
const;
139 std::array<double, 3> computeSingleRockCflFactors(
int rock)
const;
145 #include "ReservoirPropertyCapillaryAnisotropicRelperm_impl.hpp"
148 #endif // OPENRS_RESERVOIRPROPERTYCAPILLARYANISOTROPICRELPERM_HEADER
void phaseMobility(int phase_index, int cell_index, double saturation, MatrixType &phase_mob) const
Anisotropic phase mobility.
Definition: ReservoirPropertyCapillaryAnisotropicRelperm_impl.hpp:46
int invert(FullMatrix< T, StoragePolicy, OrderingPolicy > &A)
Matrix inversion, .
Definition: Matrix.hpp:781
TensorMobility< dim > Mobility
The (tensorial) mobility type.
Definition: ReservoirPropertyCapillaryAnisotropicRelperm.hpp:109
A property class for incompressible two-phase flow.
Definition: ReservoirPropertyCapillaryAnisotropicRelperm.hpp:104
A property class for incompressible two-phase flow.
Definition: ReservoirPropertyCommon.hpp:58
A wrapper for a tensor.
Definition: ReservoirPropertyCapillaryAnisotropicRelperm.hpp:49
Definition: RockAnisotropicRelperm.hpp:53
Dune::FieldVector< typename Matrix::value_type, rows > prod(const Matrix &A, const Dune::FieldVector< typename Matrix::value_type, rows > &x)
Matrix applied to a vector.
Definition: Matrix.hpp:669
double fractionalFlow(int cell_index, double saturation) const
Some approximation to a scalar fractional flow (of the first phase).
Definition: ReservoirPropertyCapillaryAnisotropicRelperm_impl.hpp:57