From 66cde4e0523cce8e20a15c3912482bad94c5828d Mon Sep 17 00:00:00 2001 From: Liu Ming Date: Fri, 19 Feb 2016 12:45:23 +0800 Subject: [PATCH 1/3] integrate relperm diagnostics into flow. --- opm/autodiff/FlowMain.hpp | 40 +++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/opm/autodiff/FlowMain.hpp b/opm/autodiff/FlowMain.hpp index 4fa617121..46d48a8da 100644 --- a/opm/autodiff/FlowMain.hpp +++ b/opm/autodiff/FlowMain.hpp @@ -56,7 +56,7 @@ #include #include #include - +#include #include #include #include @@ -129,6 +129,7 @@ namespace Opm asImpl().setupGridAndProps(); asImpl().setupState(); asImpl().distributeData(); + asImpl().runDiagnostics(); asImpl().setupOutputWriter(); asImpl().setupLinearSolver(); asImpl().createSimulator(); @@ -193,8 +194,8 @@ namespace Opm std::unique_ptr fis_solver_; // createSimulator() std::unique_ptr simulator_; - - + // create log file + std::string logFile_; // ------------ Methods ------------ @@ -336,12 +337,22 @@ namespace Opm // eclipse_state_ // May throw if errors are encountered, here configured to be somewhat tolerant. void readDeckInput() - { + { + std::string deck_filename = param_.get("deck_filename"); + // create logFile + using boost::filesystem::path; + path fpath(deck_filename); + std::string baseName; + if (boost::to_upper_copy(path(fpath.extension()).string()) == ".DATA") { + baseName = path(fpath.stem()).string(); + } else { + baseName = path(fpath.filename()).string(); + } + logFile_ = output_dir_ + "/" + baseName + ".LOG"; // Create Parser - std::string logFile = output_dir_ + "/LOGFILE.txt"; ParserPtr parser(new Parser()); { - std::shared_ptr streamLog = std::make_shared(logFile , Log::DefaultMessageTypes); + std::shared_ptr streamLog = std::make_shared(logFile_ , Log::DefaultMessageTypes); std::shared_ptr counterLog = std::make_shared(Log::DefaultMessageTypes); OpmLog::addBackend( "STREAM" , streamLog ); @@ -350,14 +361,13 @@ namespace Opm // Create Deck and EclipseState. try { - std::string deck_filename = param_.get("deck_filename"); ParseMode parseMode({{ ParseMode::PARSE_RANDOM_SLASH , InputError::IGNORE }}); deck_ = parser->parseFile(deck_filename, parseMode); checkDeck(deck_); eclipse_state_.reset(new EclipseState(deck_, parseMode)); } catch (const std::invalid_argument& e) { - std::cerr << "Failed to create valid EclipseState object. See logfile: " << logFile << std::endl; + std::cerr << "Failed to create valid EclipseState object. See logfile: " << logFile_ << std::endl; std::cerr << "Exception caught: " << e.what() << std::endl; throw; } @@ -520,6 +530,20 @@ namespace Opm + // run diagnostics + // Writes to: + // logFile_ + void runDiagnostics() + { + // Run relperm diagnostics + RelpermDiagnostics diagnostic(logFile_); + diagnostic.diagnosis(eclipse_state_, deck_, grid_init_->grid()); + } + + + + + // Setup output writer. // Writes to: // output_writer_ From fe06257f27a7dce6d5466cb5465e04be6b5d3999 Mon Sep 17 00:00:00 2001 From: Liu Ming Date: Fri, 19 Feb 2016 16:23:31 +0800 Subject: [PATCH 2/3] rename LOG to PRT file. --- opm/autodiff/FlowMain.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opm/autodiff/FlowMain.hpp b/opm/autodiff/FlowMain.hpp index 46d48a8da..b7addca0e 100644 --- a/opm/autodiff/FlowMain.hpp +++ b/opm/autodiff/FlowMain.hpp @@ -348,7 +348,7 @@ namespace Opm } else { baseName = path(fpath.filename()).string(); } - logFile_ = output_dir_ + "/" + baseName + ".LOG"; + logFile_ = output_dir_ + "/" + baseName + ".PRT"; // Create Parser ParserPtr parser(new Parser()); { From b15320b6598a4e01b7441fbab1eedeccdecf2e07 Mon Sep 17 00:00:00 2001 From: Liu Ming Date: Fri, 19 Feb 2016 16:40:45 +0800 Subject: [PATCH 3/3] change diagnostics function call order. --- opm/autodiff/FlowMain.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opm/autodiff/FlowMain.hpp b/opm/autodiff/FlowMain.hpp index b7addca0e..0bcd22da7 100644 --- a/opm/autodiff/FlowMain.hpp +++ b/opm/autodiff/FlowMain.hpp @@ -127,9 +127,9 @@ namespace Opm asImpl().setupOutput(); asImpl().readDeckInput(); asImpl().setupGridAndProps(); + asImpl().runDiagnostics(); asImpl().setupState(); asImpl().distributeData(); - asImpl().runDiagnostics(); asImpl().setupOutputWriter(); asImpl().setupLinearSolver(); asImpl().createSimulator();