/* Copyright 2015 Statoil ASA. This file is part of the Open Porous Media project (OPM). OPM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OPM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OPM. If not, see . */ #if HAVE_CONFIG_H #include "config.h" #endif // HAVE_CONFIG_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void usage() { std::cout << std::endl << "Usage: diagnose_relperm " << std::endl; } // ----------------- Main program ----------------- int main(int argc, char** argv) try { using namespace Opm; if (argc <= 1) { usage(); exit(1); } static char* ECLIPSEFILENAME(argv[1]); std::ifstream eclipseFile(ECLIPSEFILENAME, std::ios::in); if (eclipseFile.fail()) { std::cerr << "Error: Filename " << ECLIPSEFILENAME << " not found or not readable." << std::endl; usage(); exit(1); } eclipseFile.close(); //parameter::ParameterGroup param(argc, argv); // Read saturation tables. EclipseStateConstPtr eclState; ParserPtr parser(new Opm::Parser); //ParseMode parseMode; Opm::ParseMode parseMode({{ ParseMode::PARSE_RANDOM_SLASH , InputError::IGNORE }, { ParseMode::PARSE_UNKNOWN_KEYWORD, InputError::IGNORE}, { ParseMode::PARSE_RANDOM_TEXT, InputError::IGNORE} }); Opm::DeckConstPtr deck(parser->parseFile(ECLIPSEFILENAME, parseMode)); //std::string deck_filename = param.get("deck_filename"); //deck = parser->parseFile(deck_filename, parseMode); eclState.reset(new EclipseState(deck, parseMode)); GridManager gm(deck); const UnstructuredGrid& grid = *gm.c_grid(); // Write parameters used for later reference. //bool output = param.getDefault("output", true); bool output = true; std::string output_dir; if (output) { output_dir = "output"; boost::filesystem::path fpath(output_dir); try { create_directories(fpath); } catch (...) { OPM_THROW(std::runtime_error, "Creating directories failed: " << fpath); } } Opm::time::StopWatch timer; timer.start(); RelpermDiagnostics diagnostic(eclState); diagnostic.diagnosis(eclState, deck, grid); timer.stop(); double tt = timer.secsSinceStart(); std::cout << "relperm diagnostics: " << tt << " seconds." << std::endl; } catch (const std::exception &e) { std::cerr << "Program threw an exception: " << e.what() << "\n"; throw; }