mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
flow: call getConvergence() on the raw reservoir residual
i.e., the residual without the Schur complement for the wells being applied. This hopefully fixes the issue pointed out by [at]totto82.
This commit is contained in:
parent
f5e7ca9bb3
commit
46e41228b5
@ -246,7 +246,7 @@ namespace Opm {
|
|||||||
report.total_linearizations = 1;
|
report.total_linearizations = 1;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
report += assemble(timer, iteration);
|
report += assembleReservoir(timer, iteration);
|
||||||
report.assemble_time += perfTimer.stop();
|
report.assemble_time += perfTimer.stop();
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
@ -293,6 +293,11 @@ namespace Opm {
|
|||||||
const int nc = UgGridHelpers::numCells(grid_);
|
const int nc = UgGridHelpers::numCells(grid_);
|
||||||
BVector x(nc);
|
BVector x(nc);
|
||||||
|
|
||||||
|
// apply the Schur compliment of the well model to the reservoir linearized
|
||||||
|
// equations
|
||||||
|
wellModel().linearize(ebosSimulator().model().linearizer().jacobian(),
|
||||||
|
ebosSimulator().model().linearizer().residual());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
solveJacobianSystem(x);
|
solveJacobianSystem(x);
|
||||||
report.linear_solve_time += perfTimer.stop();
|
report.linear_solve_time += perfTimer.stop();
|
||||||
@ -360,13 +365,13 @@ namespace Opm {
|
|||||||
/// \param[in] reservoir_state reservoir state variables
|
/// \param[in] reservoir_state reservoir state variables
|
||||||
/// \param[in, out] well_state well state variables
|
/// \param[in, out] well_state well state variables
|
||||||
/// \param[in] initial_assembly pass true if this is the first call to assemble() in this timestep
|
/// \param[in] initial_assembly pass true if this is the first call to assemble() in this timestep
|
||||||
SimulatorReport assemble(const SimulatorTimerInterface& timer,
|
SimulatorReport assembleReservoir(const SimulatorTimerInterface& timer,
|
||||||
const int iterationIdx)
|
const int iterationIdx)
|
||||||
{
|
{
|
||||||
// -------- Mass balance equations --------
|
// -------- Mass balance equations --------
|
||||||
ebosSimulator_.model().newtonMethod().setIterationIndex(iterationIdx);
|
ebosSimulator_.model().newtonMethod().setIterationIndex(iterationIdx);
|
||||||
ebosSimulator_.problem().beginIteration();
|
ebosSimulator_.problem().beginIteration();
|
||||||
ebosSimulator_.model().linearizer().linearize();
|
ebosSimulator_.model().linearizer().linearizeDomain();
|
||||||
ebosSimulator_.problem().endIteration();
|
ebosSimulator_.problem().endIteration();
|
||||||
|
|
||||||
return wellModel().lastReport();
|
return wellModel().lastReport();
|
||||||
|
Loading…
Reference in New Issue
Block a user