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