diff --git a/opm/core/io/eclipse/EclipseGridParser.cpp b/opm/core/io/eclipse/EclipseGridParser.cpp index b050bdc4..e90ad00a 100644 --- a/opm/core/io/eclipse/EclipseGridParser.cpp +++ b/opm/core/io/eclipse/EclipseGridParser.cpp @@ -126,6 +126,7 @@ namespace EclipseKeywords string("EQUIL"), string("PVCDO"), string("TSTEP"), string("PLYVISC"), string("PLYROCK"), string("PLYADS"), string("PLYMAX"), string("TLMIXPAR"), string("WPOLYMER"), + string("PLYSHEAR"), string("GRUPTREE"), string("GCONINJE"), string("GCONPROD"), string("WGRUPCON"), string("ENDSCALE"), string("SCALECRS"), string("ENPTVD"), string("ENKRVD"), diff --git a/opm/core/io/eclipse/EclipseGridParser.hpp b/opm/core/io/eclipse/EclipseGridParser.hpp index edf5c3fe..bdc9749d 100644 --- a/opm/core/io/eclipse/EclipseGridParser.hpp +++ b/opm/core/io/eclipse/EclipseGridParser.hpp @@ -195,6 +195,7 @@ public: SPECIAL_FIELD(PLYROCK) SPECIAL_FIELD(PLYADS) SPECIAL_FIELD(PLYMAX) + SPECIAL_FIELD(PLYSHEAR) SPECIAL_FIELD(TLMIXPAR) SPECIAL_FIELD(WPOLYMER) SPECIAL_FIELD(GRUPTREE) diff --git a/opm/core/io/eclipse/SpecialEclipseFields.hpp b/opm/core/io/eclipse/SpecialEclipseFields.hpp index 98432f4f..6dc46ff9 100644 --- a/opm/core/io/eclipse/SpecialEclipseFields.hpp +++ b/opm/core/io/eclipse/SpecialEclipseFields.hpp @@ -2094,6 +2094,42 @@ struct PLYMAX : public SpecialBase }; +struct PLYSHEAR : public SpecialBase +{ + std::vector water_velocity_; + std::vector vrf_; + + virtual std::string name() const {return std::string("PLYSHEAR");} + + virtual void read(std::istream& is) + { + // Note. This function assumes that NTSFUN = 1, and reads only one table. + std::vector plyshear; + readVectorData(is, plyshear); + for (int i=0; i<(int)plyshear.size(); i+=2) { + water_velocity_.push_back(plyshear[i]); + vrf_.push_back(plyshear[i+1]); + } + } + + virtual void write(std::ostream& os) const + { + os << name() << '\n'; + for (int i=0; i<(int)water_velocity_.size(); ++i) { + os << water_velocity_[i] << " " << vrf_[i] << '\n'; + } + os << '\n'; + } + + virtual void convertToSI(const EclipseUnits& units) + { + for (int i=0; i<(int)water_velocity_.size(); ++i) { + water_velocity_[i] *= units.length / units.time; + } + } +}; + + struct TLMIXPAR : public SpecialBase { std::vector tlmixpar_;