mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Merge pull request #593 from qilicun/integrate_diagnostics
integrate relperm diagnostics into flow.
This commit is contained in:
commit
a19607fabc
@ -56,7 +56,7 @@
|
|||||||
#include <opm/core/props/BlackoilPropertiesBasic.hpp>
|
#include <opm/core/props/BlackoilPropertiesBasic.hpp>
|
||||||
#include <opm/core/props/BlackoilPropertiesFromDeck.hpp>
|
#include <opm/core/props/BlackoilPropertiesFromDeck.hpp>
|
||||||
#include <opm/core/props/rock/RockCompressibility.hpp>
|
#include <opm/core/props/rock/RockCompressibility.hpp>
|
||||||
|
#include <opm/core/props/satfunc/RelpermDiagnostics.hpp>
|
||||||
#include <opm/core/linalg/LinearSolverFactory.hpp>
|
#include <opm/core/linalg/LinearSolverFactory.hpp>
|
||||||
#include <opm/autodiff/NewtonIterationBlackoilSimple.hpp>
|
#include <opm/autodiff/NewtonIterationBlackoilSimple.hpp>
|
||||||
#include <opm/autodiff/NewtonIterationBlackoilCPR.hpp>
|
#include <opm/autodiff/NewtonIterationBlackoilCPR.hpp>
|
||||||
@ -127,6 +127,7 @@ namespace Opm
|
|||||||
asImpl().setupOutput();
|
asImpl().setupOutput();
|
||||||
asImpl().readDeckInput();
|
asImpl().readDeckInput();
|
||||||
asImpl().setupGridAndProps();
|
asImpl().setupGridAndProps();
|
||||||
|
asImpl().runDiagnostics();
|
||||||
asImpl().setupState();
|
asImpl().setupState();
|
||||||
asImpl().distributeData();
|
asImpl().distributeData();
|
||||||
asImpl().setupOutputWriter();
|
asImpl().setupOutputWriter();
|
||||||
@ -193,8 +194,8 @@ namespace Opm
|
|||||||
std::unique_ptr<NewtonIterationBlackoilInterface> fis_solver_;
|
std::unique_ptr<NewtonIterationBlackoilInterface> fis_solver_;
|
||||||
// createSimulator()
|
// createSimulator()
|
||||||
std::unique_ptr<Simulator> simulator_;
|
std::unique_ptr<Simulator> simulator_;
|
||||||
|
// create log file
|
||||||
|
std::string logFile_;
|
||||||
// ------------ Methods ------------
|
// ------------ Methods ------------
|
||||||
|
|
||||||
|
|
||||||
@ -336,12 +337,22 @@ namespace Opm
|
|||||||
// eclipse_state_
|
// eclipse_state_
|
||||||
// May throw if errors are encountered, here configured to be somewhat tolerant.
|
// May throw if errors are encountered, here configured to be somewhat tolerant.
|
||||||
void readDeckInput()
|
void readDeckInput()
|
||||||
{
|
{
|
||||||
|
std::string deck_filename = param_.get<std::string>("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 + ".PRT";
|
||||||
// Create Parser
|
// Create Parser
|
||||||
std::string logFile = output_dir_ + "/LOGFILE.txt";
|
|
||||||
ParserPtr parser(new Parser());
|
ParserPtr parser(new Parser());
|
||||||
{
|
{
|
||||||
std::shared_ptr<StreamLog> streamLog = std::make_shared<StreamLog>(logFile , Log::DefaultMessageTypes);
|
std::shared_ptr<StreamLog> streamLog = std::make_shared<StreamLog>(logFile_ , Log::DefaultMessageTypes);
|
||||||
std::shared_ptr<CounterLog> counterLog = std::make_shared<CounterLog>(Log::DefaultMessageTypes);
|
std::shared_ptr<CounterLog> counterLog = std::make_shared<CounterLog>(Log::DefaultMessageTypes);
|
||||||
|
|
||||||
OpmLog::addBackend( "STREAM" , streamLog );
|
OpmLog::addBackend( "STREAM" , streamLog );
|
||||||
@ -350,14 +361,13 @@ namespace Opm
|
|||||||
|
|
||||||
// Create Deck and EclipseState.
|
// Create Deck and EclipseState.
|
||||||
try {
|
try {
|
||||||
std::string deck_filename = param_.get<std::string>("deck_filename");
|
|
||||||
ParseMode parseMode({{ ParseMode::PARSE_RANDOM_SLASH , InputError::IGNORE }});
|
ParseMode parseMode({{ ParseMode::PARSE_RANDOM_SLASH , InputError::IGNORE }});
|
||||||
deck_ = parser->parseFile(deck_filename, parseMode);
|
deck_ = parser->parseFile(deck_filename, parseMode);
|
||||||
checkDeck(deck_, parser);
|
checkDeck(deck_, parser);
|
||||||
eclipse_state_.reset(new EclipseState(deck_, parseMode));
|
eclipse_state_.reset(new EclipseState(deck_, parseMode));
|
||||||
}
|
}
|
||||||
catch (const std::invalid_argument& e) {
|
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;
|
std::cerr << "Exception caught: " << e.what() << std::endl;
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
@ -522,6 +532,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.
|
// Setup output writer.
|
||||||
// Writes to:
|
// Writes to:
|
||||||
// output_writer_
|
// output_writer_
|
||||||
|
Loading…
Reference in New Issue
Block a user