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"
A property class for incompressible two-phase flow.
Definition ReservoirPropertyCapillaryAnisotropicRelperm.hpp:106
double fractionalFlow(int cell_index, double saturation) const
Some approximation to a scalar fractional flow (of the first phase).
Definition ReservoirPropertyCapillaryAnisotropicRelperm_impl.hpp:55
TensorMobility< dim > Mobility
The (tensorial) mobility type.
Definition ReservoirPropertyCapillaryAnisotropicRelperm.hpp:109
void phaseMobility(int phase_index, int cell_index, double saturation, MatrixType &phase_mob) const
Anisotropic phase mobility.
Definition ReservoirPropertyCapillaryAnisotropicRelperm_impl.hpp:44
A property class for incompressible two-phase flow.
Definition ReservoirPropertyCommon.hpp:59
Definition RockAnisotropicRelperm.hpp:54
Inverting small matrices.
Definition ImplicitAssembly.hpp:43
int invert(FullMatrix< T, StoragePolicy, OrderingPolicy > &A)
Matrix inversion, .
Definition Matrix.hpp:780
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:668
A wrapper for a tensor.
Definition ReservoirPropertyCapillaryAnisotropicRelperm.hpp:50