flow_ebos: print statistics about failed time steps

the performance summary at the end of a Norne run which are printed by
`flow_ebos` now looks like this on my machine:

```
Total time (seconds):         773.757
Solver time (seconds):        753.349
 Assembly time (seconds):     377.218 (Failed: 23.537; 6.23965%)
 Linear solve time (seconds): 352.022 (Failed: 23.2757; 6.61201%)
 Update time (seconds):       16.3658 (Failed: 1.13149; 6.91375%)
 Output write time (seconds): 22.5991
Overall Well Iterations:      870 (Failed: 35; 4.02299%)
Overall Linearizations:       2098 (Failed: 136; 6.48236%)
Overall Newton Iterations:    1756 (Failed: 136; 7.74487%)
Overall Linear Iterations:    26572 (Failed: 1786; 6.72136%)
```

for the flow_legacy family, nothing changes.
This commit is contained in:
Andreas Lauser
2017-04-10 15:55:30 +02:00
parent 88e4646b71
commit ef2a560fb3
13 changed files with 126 additions and 14 deletions

View File

@@ -20,6 +20,7 @@
#ifndef OPM_SIMULATORPOLYMER_HEADER_INCLUDED
#define OPM_SIMULATORPOLYMER_HEADER_INCLUDED
#include <opm/core/simulator/SimulatorReport.hpp>
#include <boost/shared_ptr.hpp>
#include <vector>
@@ -95,8 +96,18 @@ namespace Opm
PolymerState& state,
WellState& well_state);
/// return the statistics if the nonlinearIteration() method failed.
///
/// NOTE: for the flow_legacy simulator family this method is a stub, i.e. the
/// failure report object will *not* contain any meaningful data.
const SimulatorReport& failureReport() const
{ return failureReport_; }
private:
class Impl;
SimulatorReport failureReport_;
// Using shared_ptr instead of scoped_ptr since scoped_ptr requires complete type for Impl.
boost::shared_ptr<Impl> pimpl_;
};