Skip to content

Commit

Permalink
Merge pull request #769 from blattms/fix-step-used-by-parallel-io
Browse files Browse the repository at this point in the history
Fix step number used by parallel io and OutputWriter::writeTimeStep
  • Loading branch information
atgeirr authored Sep 7, 2016
2 parents ff09dbe + 4a6be3d commit 4d2d004
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
12 changes: 7 additions & 5 deletions opm/autodiff/ParallelDebugOutput.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@ namespace Opm
public:
virtual ~ParallelDebugOutputInterface() {}

// gather solution to rank 0 for EclipseWriter
//! \brief gather solution to rank 0 for EclipseWriter
//! \param localWellState The well state
//! \param wellStateStepNumber The step number of the well state.
virtual bool collectToIORank( const SimulationDataContainer& localReservoirState,
const WellState& localWellState,
const int reportStep ) = 0;
const int wellStateStepNumber ) = 0;

virtual const SimulationDataContainer& globalReservoirState() const = 0 ;
virtual const WellState& globalWellState() const = 0 ;
Expand Down Expand Up @@ -77,7 +79,7 @@ namespace Opm
// gather solution to rank 0 for EclipseWriter
virtual bool collectToIORank( const SimulationDataContainer& localReservoirState,
const WellState& localWellState,
const int /* reportStep */)
const int /* wellStateStepNumber */)
{
globalState_ = &localReservoirState;
wellState_ = &localWellState;
Expand Down Expand Up @@ -521,7 +523,7 @@ namespace Opm
// gather solution to rank 0 for EclipseWriter
bool collectToIORank( const SimulationDataContainer& localReservoirState,
const WellState& localWellState,
const int reportStep )
const int wellStateStepNumber )
{
if( isIORank() )
{
Expand All @@ -532,7 +534,7 @@ namespace Opm
const DynamicListEconLimited dynamic_list_econ_limited;
// Create wells and well state.
WellsManager wells_manager(eclipseState_,
reportStep,
wellStateStepNumber,
Opm::UgGridHelpers::numCells( globalGrid ),
Opm::UgGridHelpers::globalCell( globalGrid ),
Opm::UgGridHelpers::cartDims( globalGrid ),
Expand Down
11 changes: 9 additions & 2 deletions opm/autodiff/SimulatorFullyImplicitBlackoilOutput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,8 +295,15 @@ namespace Opm
bool isIORank = output_ ;
if( parallelOutput_ && parallelOutput_->isParallel() )
{
// If this is not the initial write and no substep, then the well
// state used in the computation is actually the one of the last
// step. We need that well state for the gathering. Otherwise
// It an exception with a message like "global state does not
// contain well ..." might be thrown.
int wellStateStepNumber = ( ! substep && timer.reportStepNum() > 0) ?
(timer.reportStepNum() - 1) : timer.reportStepNum();
// collect all solutions to I/O rank
isIORank = parallelOutput_->collectToIORank( localState, localWellState, timer.reportStepNum() );
isIORank = parallelOutput_->collectToIORank( localState, localWellState, wellStateStepNumber );
}

const SimulationDataContainer& state = (parallelOutput_ && parallelOutput_->isParallel() ) ? parallelOutput_->globalReservoirState() : localState;
Expand Down Expand Up @@ -361,7 +368,7 @@ namespace Opm
*/

eclWriter_->writeTimeStep(timer.currentStepNum(),
eclWriter_->writeTimeStep(timer.reportStepNum(),
substep,
timer.simulationTimeElapsed(),
simToSolution( state, phaseUsage_ ),
Expand Down

0 comments on commit 4d2d004

Please sign in to comment.