diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp index eab386ff5381c4864a7ef5bc993bd04cf3388e5d..e6388e066076462a3d782b88db92df2cfd583e73 100644 --- a/ProcessLib/TimeLoop.cpp +++ b/ProcessLib/TimeLoop.cpp @@ -705,12 +705,17 @@ NumLib::NonlinearSolverStatus TimeLoop::solveUncoupledEquationSystems( const double t, const double dt, const std::size_t timestep_id) { NumLib::NonlinearSolverStatus nonlinear_solver_status; + + _xdot_vector_ids.resize(_per_process_data.size()); + std::size_t cnt = 0; + for (auto& process_data : _per_process_data) { auto const process_id = process_data->process_id; nonlinear_solver_status = solveMonolithicProcess( t, dt, timestep_id, *process_data, _process_solutions, - _process_solutions_prev, *_output, _xdot_id); + _process_solutions_prev, *_output, _xdot_vector_ids[cnt]); + cnt++; process_data->nonlinear_solver_status = nonlinear_solver_status; if (!nonlinear_solver_status.error_norms_met) @@ -765,6 +770,8 @@ TimeLoop::solveCoupledEquationSystemsByStaggeredScheme( // TODO(wenqing): use process name coupling_iteration_converged = true; int const last_process_id = _per_process_data.size() - 1; + _xdot_vector_ids.resize(_per_process_data.size()); + std::size_t cnt = 0; for (auto& process_data : _per_process_data) { auto const process_id = process_data->process_id; @@ -783,7 +790,8 @@ TimeLoop::solveCoupledEquationSystemsByStaggeredScheme( nonlinear_solver_status = solveOneTimeStepOneProcess( _process_solutions, _process_solutions_prev, timestep_id, t, dt, - *process_data, *_output, _xdot_id); + *process_data, *_output, _xdot_vector_ids[cnt]); + cnt++; process_data->nonlinear_solver_status = nonlinear_solver_status; INFO( diff --git a/ProcessLib/TimeLoop.h b/ProcessLib/TimeLoop.h index 0992c4c1a8bd750b534143616957e49f599246aa..5431b5cd95652f8ca37d745d3c45d80e9c96a180 100644 --- a/ProcessLib/TimeLoop.h +++ b/ProcessLib/TimeLoop.h @@ -131,9 +131,5 @@ private: /// provider for reuse, needed in postTimestepForAllProcesses /// the length of the vector is the size of _per_process_data std::vector<std::size_t> _xdot_vector_ids; - - // store the id of the global xdot vector in the global vector provider for - // reuse; needed in solveOneTimeStepOneProcess - std::size_t _xdot_id = 0; }; } // namespace ProcessLib