From 3c761b7e24e2275cdd4192464bea30bda3aaa7de Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Wed, 17 Mar 2021 16:09:03 +0100 Subject: [PATCH] [PL/TimeLoop] Use the vector of ids of xdot GlobalVector's. --- ProcessLib/TimeLoop.cpp | 12 ++++++++++-- ProcessLib/TimeLoop.h | 4 ---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp index eab386ff538..e6388e06607 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 0992c4c1a8b..5431b5cd956 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 -- GitLab