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