diff --git a/ebos/eclfluxmodule.hh b/ebos/eclfluxmodule.hh index 19557e97a..943e22874 100644 --- a/ebos/eclfluxmodule.hh +++ b/ebos/eclfluxmodule.hh @@ -36,9 +36,12 @@ #include #include +#include +#include #include #include +#include namespace Opm { @@ -227,7 +230,7 @@ public: unsigned I = stencil.globalSpaceIndex(interiorDofIdx); unsigned J = stencil.globalSpaceIndex(exteriorDofIdx); - + auto facedir = scvf.dirId(); // direction (X, Y, or Z) of the face Scalar trans = problem.transmissibility(elemCtx, interiorDofIdx, exteriorDofIdx); Scalar faceArea = scvf.area(); Scalar thpres = problem.thresholdPressure(I, J); @@ -265,7 +268,7 @@ public: intQuantsEx, phaseIdx,//input interiorDofIdx,//input - exteriorDofIdx,//intput + exteriorDofIdx,//input Vin, Vex, I, @@ -285,10 +288,11 @@ public: if (upwindIsInterior) volumeFlux[phaseIdx] = - pressureDifferences[phaseIdx]*up.mobility(phaseIdx)*transMult*(-trans/faceArea); + pressureDifferences[phaseIdx]*up.mobility(phaseIdx, facedir)*transMult*(-trans/faceArea); else volumeFlux[phaseIdx] = - pressureDifferences[phaseIdx]*(Toolbox::value(up.mobility(phaseIdx))*Toolbox::value(transMult)*(-trans/faceArea)); + pressureDifferences[phaseIdx]* + (Toolbox::value(up.mobility(phaseIdx, facedir))*Toolbox::value(transMult)*(-trans/faceArea)); } } diff --git a/ebos/eclgenericproblem.cc b/ebos/eclgenericproblem.cc index 4aa2709b6..c014208ab 100644 --- a/ebos/eclgenericproblem.cc +++ b/ebos/eclgenericproblem.cc @@ -322,6 +322,15 @@ updatePlmixnum_() updateNum("PLMIXNUM", plmixnum_); } +template +void EclGenericProblem:: +updateKrnum_() +{ + updateNum("KRNUMX", krnumx_); + updateNum("KRNUMY", krnumy_); + updateNum("KRNUMZ", krnumz_); +} + template bool EclGenericProblem:: vapparsActive(int episodeIdx) const diff --git a/ebos/eclgenericproblem.hh b/ebos/eclgenericproblem.hh index bfbdcfe9e..290c8ae89 100644 --- a/ebos/eclgenericproblem.hh +++ b/ebos/eclgenericproblem.hh @@ -306,6 +306,7 @@ protected: void updateSatnum_(); void updateMiscnum_(); void updatePlmixnum_(); + void updateKrnum_(); const EclipseState& eclState_; const Schedule& schedule_; @@ -318,6 +319,9 @@ protected: std::vector satnum_; std::vector miscnum_; std::vector plmixnum_; + std::vector krnumx_; + std::vector krnumy_; + std::vector krnumz_; std::vector rockParams_; std::vector rockTableIdx_; diff --git a/ebos/eclproblem.hh b/ebos/eclproblem.hh index 1400f97d3..6e7b4439d 100644 --- a/ebos/eclproblem.hh +++ b/ebos/eclproblem.hh @@ -2223,6 +2223,8 @@ private: // the PLMIX region numbers (polymer model) this->updatePlmixnum_(); + // directional relative permeabilities + this->updateKrnum_(); //////////////////////////////// // porosity updateReferencePorosity_(); diff --git a/opm/simulators/utils/PartiallySupportedFlowKeywords.cpp b/opm/simulators/utils/PartiallySupportedFlowKeywords.cpp index f369266eb..bd54deaa0 100644 --- a/opm/simulators/utils/PartiallySupportedFlowKeywords.cpp +++ b/opm/simulators/utils/PartiallySupportedFlowKeywords.cpp @@ -196,7 +196,6 @@ partiallySupported() { "SATOPTS", { - {1,{false, allow_values {"HYSTER"}, "SATOPTS(DIRECT): directional relative permeability assignment option not supported - value ignored"}}, // options {2,{false, allow_values {"HYSTER"}, "SATOPTS(IRREVERS): reversible directional relative permeability option not supported – value ignored"}}, // IRREVERS {3,{false, allow_values {"HYSTER"}, "SATOPTS(HYSTER): hysteresis directional relative permeability option not supported - value ignored"}}, // HYSTER {4,{false, allow_values {"HYSTER"}, "SATOPTS(SURFTENS): capillary pressure surface tension pressure dependency option not supported – value ignored"}}, // SURFTENS