From 174ab7cd6ef06ca28a134821d50b9d043d78531e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Atgeirr=20Fl=C3=B8=20Rasmussen?= Date: Thu, 7 Jun 2012 15:09:13 +0200 Subject: [PATCH] Initial version of schedule handling more or less complete. --- opm/core/eclipse/EclipseGridParser.cpp | 21 +++++++++++++++++++++ opm/core/eclipse/EclipseGridParser.hpp | 2 ++ 2 files changed, 23 insertions(+) diff --git a/opm/core/eclipse/EclipseGridParser.cpp b/opm/core/eclipse/EclipseGridParser.cpp index 69f922d3..de688af1 100644 --- a/opm/core/eclipse/EclipseGridParser.cpp +++ b/opm/core/eclipse/EclipseGridParser.cpp @@ -446,6 +446,15 @@ void EclipseGridParser::readImpl(istream& is) special_field_by_epoch_.push_back(SpecialMap()); ++current_epoch_; ASSERT(int(special_field_by_epoch_.size()) == current_epoch_ + 1); + // Add clones of all existing special fields to new map. + SpecialMap& oldmap = special_field_by_epoch_[current_epoch_ - 1]; + SpecialMap& newmap = special_field_by_epoch_[current_epoch_]; + for (SpecialMap::iterator it = oldmap.begin(); it != oldmap.end(); ++it) { + // if (it->first != "TSTEP") { + newmap[it->first] = cloneSpecialField(it->first, it->second); + //} + } + //ASSERT(newmap.count("TSTEP") == 0); } // Check if the keyword already exists. If so, append. Otherwise, create new. SpecialMap::iterator it = special_field_by_epoch_[current_epoch_].find(keyword); @@ -703,6 +712,18 @@ EclipseGridParser::createSpecialField(std::istream& is, return spec_ptr; } +//--------------------------------------------------------------------------- +std::tr1::shared_ptr +EclipseGridParser::cloneSpecialField(const std::string& fieldname, + const std::tr1::shared_ptr original) +//--------------------------------------------------------------------------- +{ + string ukey = upcase(fieldname); + std::tr1::shared_ptr spec_ptr + = Factory::cloneObject(fieldname, original); + return spec_ptr; +} + //--------------------------------------------------------------------------- void EclipseGridParser::setIntegerField(const std::string& keyword, diff --git a/opm/core/eclipse/EclipseGridParser.hpp b/opm/core/eclipse/EclipseGridParser.hpp index 659b3484..56e9ee4f 100644 --- a/opm/core/eclipse/EclipseGridParser.hpp +++ b/opm/core/eclipse/EclipseGridParser.hpp @@ -193,6 +193,8 @@ public: private: SpecialFieldPtr createSpecialField(std::istream& is, const std::string& fieldname); + SpecialFieldPtr cloneSpecialField(const std::string& fieldname, + const std::tr1::shared_ptr original); void readImpl(std::istream& is);