performing prepareTimeStep in assemble for StandardWellsDense

instead of model->preppareStep()

to avoid segmenttation error from eclSimulator and also not intervening
with NonlinearSolver
This commit is contained in:
Kai Bao 2017-03-24 15:11:49 +01:00
parent 4a6dbbe0a7
commit e39ffefb2e
3 changed files with 6 additions and 5 deletions

View File

@ -213,13 +213,11 @@ namespace Opm {
/// \param[in, out] well_state well state variables
void prepareStep(const SimulatorTimerInterface& /*timer*/,
const ReservoirState& reservoir_state,
WellState& well_state)
const WellState& /* well_state */)
{
if ( wellModel().wellCollection()->havingVREPGroups() ) {
updateRateConverter(reservoir_state);
}
well_model_.prepareTimeStep(ebosSimulator_, well_state);
}

View File

@ -130,8 +130,7 @@ namespace Opm
// TODO: this is not the correct fix, possibly breaking the sequential solver
// TODO: the only reason to do this is that the wellPotentials() is part of the well_state, which will be modified
// during the well_potential calculation
model_->prepareStep(timer, initial_reservoir_state, well_state);
// model_->prepareStep(timer, initial_reservoir_state, initial_reservoir_state);
model_->prepareStep(timer, initial_reservoir_state, initial_well_state);
int iteration = 0;

View File

@ -130,6 +130,10 @@ namespace Opm {
WellState& well_state)
{
if (iterationIdx == 0) {
prepareTimeStep(ebosSimulator, well_state);
}
// after restarting, the well_controls can be modified while
// the well_state still uses the old control index
// we need to synchronize these two.