Fix task assignment with multiruns
[alexxy/gromacs.git] / src / gromacs / mdrun / simulationcontext.cpp
index 0c421213bc0f4b10d3bbbb1f79c15faa5b4938ac..6beb0e9b0d42c1aa0f42460d7f80763063c2b620 100644 (file)
 namespace gmx
 {
 //! \cond libapi
-SimulationContext::SimulationContext(MPI_Comm                          communicator,
+SimulationContext::SimulationContext(MPI_Comm                          worldCommunicator,
                                      const ArrayRef<const std::string> multiSimDirectoryNames) :
-    communicator_(communicator)
+    worldCommunicator_(worldCommunicator)
 {
-    GMX_RELEASE_ASSERT((GMX_LIB_MPI && (communicator != MPI_COMM_NULL))
-                               || (!GMX_LIB_MPI && (communicator == MPI_COMM_NULL)),
+    GMX_RELEASE_ASSERT((GMX_LIB_MPI && (worldCommunicator != MPI_COMM_NULL))
+                               || (!GMX_LIB_MPI && (worldCommunicator == MPI_COMM_NULL)),
                        "With real MPI, a non-null communicator is required. "
                        "Without it, the communicator must be null.");
-    if (!multiSimDirectoryNames.empty())
+    if (multiSimDirectoryNames.empty())
     {
-        multiSimulation_ = buildMultiSimulation(communicator, multiSimDirectoryNames);
+        simulationCommunicator_ = worldCommunicator;
+    }
+    else
+    {
+        multiSimulation_ = buildMultiSimulation(worldCommunicator, multiSimDirectoryNames);
         // Use the communicator resulting from the split for the multi-simulation.
-        communicator_ = multiSimulation_->simulationComm_;
+        simulationCommunicator_ = multiSimulation_->simulationComm_;
     }
 }