mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Output Non-Linear Convergence to Separate File if Requested
This commit enables outputting non-linear convergence metrics, i.e., the MB and CNV values, per phase, for each non-linear iteration in each timestep. If the user passes the option value "iterations" to the --extra-convergence-output command line option, this commit will create a new output file, CASE.INFOITER, that holds * report step * time step within that report step * elapsed time * MB and CNV values per phase * well convergence status for each non-linear iteration. We use an asynchronous file writing procedure and confer ownership of the report step's unprocessed convergence reports to this procedure just before the end of SimulatorFullyImplicitBlackoilEbos::runStep() At that point, the convergence reports are about to go out of scope. The asynchronous protocol uses a dedicated queue of output requests, class ConvergenceReportQueue, into which the producer-i.e., member function runStep()-inserts new convergence reports and from which the output thread, ConvergenceOutputThread::writeASynchronous(), retrieves those requests before writing the file data.
This commit is contained in:
@@ -135,6 +135,9 @@ BOOST_AUTO_TEST_CASE(Misprint)
|
||||
BOOST_CHECK_THROW(Opm::ConvergenceOutputConfiguration{"nonce"},
|
||||
std::invalid_argument);
|
||||
|
||||
BOOST_CHECK_THROW(Opm::ConvergenceOutputConfiguration("nonce", "X"),
|
||||
std::invalid_argument);
|
||||
|
||||
BOOST_CHECK_THROW(Opm::ConvergenceOutputConfiguration{"stepS"},
|
||||
std::invalid_argument);
|
||||
|
||||
|
Reference in New Issue
Block a user