Use SimulatorEnv
authorM. Eric Irrgang <ericirrgang@gmail.com>
Thu, 23 Apr 2020 14:21:51 +0000 (17:21 +0300)
committerJoe Jordan <ejjordan12@gmail.com>
Fri, 26 Jun 2020 10:54:08 +0000 (10:54 +0000)
Refs #3567

src/gromacs/mdrun/runner.cpp
src/gromacs/mdrun/simulatorbuilder.cpp
src/gromacs/mdrun/simulatorbuilder.h

index 600c3b0706f695dad8cbe42021b0b6e229b7b658..e8c1d80eba81f222f02ca007136448b9c997df7d 100644 (file)
@@ -1656,11 +1656,11 @@ int Mdrunner::mdrunner()
 
         // build and run simulator object based on user-input
         auto simulator = simulatorBuilder.build(
-                useModularSimulator, fplog, cr, ms, mdlog, static_cast<int>(filenames.size()),
-                filenames.data(), oenv, vsite.get(), constr.get(),
-                enforcedRotation ? enforcedRotation->getLegacyEnfrot() : nullptr, deform.get(),
-                mdModules_->outputProvider(), mdModules_->notifier(), inputrec, imdSession.get(), pull_work,
-                swap, &mtop, mdAtoms.get(), &nrnb, wcycle, fr, replExParams, walltime_accounting);
+                useModularSimulator, static_cast<int>(filenames.size()), filenames.data(), vsite.get(),
+                constr.get(), enforcedRotation ? enforcedRotation->getLegacyEnfrot() : nullptr,
+                deform.get(), mdModules_->outputProvider(), mdModules_->notifier(), inputrec,
+                imdSession.get(), pull_work, swap, &mtop,  mdAtoms.get(), &nrnb, wcycle, fr,
+                replExParams, walltime_accounting);
         simulator->run();
 
         if (fr->pmePpCommGpu)
index 293563933759bdf2156692b216d97804187a0260..dcf38a0e3464bdd48679ab90c71e608011c31c5c 100644 (file)
@@ -57,13 +57,8 @@ namespace gmx
 
 //! \brief Build a Simulator object
 std::unique_ptr<ISimulator> SimulatorBuilder::build(bool                     useModularSimulator,
-                                                    FILE*                    fplog,
-                                                    t_commrec*               cr,
-                                                    const gmx_multisim_t*    ms,
-                                                    const MDLogger&          mdlog,
                                                     int                      nfile,
                                                     const t_filenm*          fnm,
-                                                    const gmx_output_env_t*  oenv,
                                                     VirtualSitesHandler*     vsite,
                                                     Constraints*             constr,
                                                     gmx_enfrot*              enforcedRotation,
@@ -146,17 +141,20 @@ std::unique_ptr<ISimulator> SimulatorBuilder::build(bool                     use
     {
         // NOLINTNEXTLINE(modernize-make-unique): make_unique does not work with private constructor
         return std::unique_ptr<ModularSimulator>(new ModularSimulator(
-                fplog, cr, ms, mdlog, nfile, fnm, oenv, simulatorConfig_->mdrunOptions_,
-                simulatorConfig_->startingBehavior_, vsite, constr, enforcedRotation, deform,
-                outputProvider, mdModulesNotifier, inputrec, imdSession, pull_work, swap, top_global,
-                simulatorStateData_->globalState_p, simulatorStateData_->observablesHistory_p, mdAtoms,
-                nrnb, wcycle, fr, simulatorStateData_->enerdata_p, simulatorStateData_->ekindata_p,
+                simulatorEnv_->fplog_, simulatorEnv_->commRec_, simulatorEnv_->multisimCommRec_,
+                simulatorEnv_->logger_, nfile, fnm, simulatorEnv_->outputEnv_,
+                simulatorConfig_->mdrunOptions_, simulatorConfig_->startingBehavior_, vsite, constr,
+                enforcedRotation, deform, outputProvider, mdModulesNotifier, inputrec, imdSession,
+                pull_work, swap, top_global,  simulatorStateData_->globalState_p,
+                simulatorStateData_->observablesHistory_p, mdAtoms, nrnb, wcycle, fr,
+                simulatorStateData_->enerdata_p, simulatorStateData_->ekindata_p,
                 simulatorConfig_->runScheduleWork_, replExParams, membedHolder_->membed(), walltime_accounting,
                 std::move(stopHandlerBuilder_), simulatorConfig_->mdrunOptions_.rerun));
     }
     // NOLINTNEXTLINE(modernize-make-unique): make_unique does not work with private constructor
     return std::unique_ptr<LegacySimulator>(new LegacySimulator(
-            fplog, cr, ms, mdlog, nfile, fnm, oenv, simulatorConfig_->mdrunOptions_,
+            simulatorEnv_->fplog_, simulatorEnv_->commRec_, simulatorEnv_->multisimCommRec_,
+            simulatorEnv_->logger_, nfile, fnm, simulatorEnv_->outputEnv_, simulatorConfig_->mdrunOptions_,
             simulatorConfig_->startingBehavior_, vsite, constr, enforcedRotation, deform,
             outputProvider, mdModulesNotifier, inputrec, imdSession, pull_work, swap, top_global,
             simulatorStateData_->globalState_p, simulatorStateData_->observablesHistory_p, mdAtoms,
index 01150ed78ccdc9dd665d34a3b20609ecbc10d0e6..c5014999e5ce60ba8a35b7df4184971f1143f5b1 100644 (file)
@@ -126,15 +126,25 @@ struct SimulatorStateData
 
 class SimulatorEnv
 {
-
 public:
-    SimulatorEnv(FILE gmx_unused* pFile,
-                 t_commrec gmx_unused* pCommrec,
-                 gmx_multisim_t gmx_unused* pMultisim,
-                 const MDLogger gmx_unused& logger,
-                 gmx_output_env_t gmx_unused* pEnv)
+    SimulatorEnv(FILE*             fplog,
+                 t_commrec*        commRec,
+                 gmx_multisim_t*   multisimCommRec,
+                 const MDLogger&   logger,
+                 gmx_output_env_t* outputEnv) :
+        fplog_{ fplog },
+        commRec_{ commRec },
+        multisimCommRec_{ multisimCommRec },
+        logger_{ logger },
+        outputEnv_{ outputEnv }
     {
     }
+
+    FILE*                   fplog_;
+    t_commrec*              commRec_;
+    const gmx_multisim_t*   multisimCommRec_;
+    const MDLogger&         logger_;
+    const gmx_output_env_t* outputEnv_;
 };
 
 class Profiling
@@ -287,13 +297,8 @@ public:
      * \return  Unique pointer to a Simulator object
      */
     std::unique_ptr<ISimulator> build(bool                             useModularSimulator,
-                                      FILE*                            fplog,
-                                      t_commrec*                       cr,
-                                      const gmx_multisim_t*            ms,
-                                      const MDLogger&                  mdlog,
                                       int                              nfile,
                                       const t_filenm*                  fnm,
-                                      const gmx_output_env_t*          oenv,
                                       VirtualSitesHandler*             vsite,
                                       Constraints*                     constr,
                                       gmx_enfrot*                      enforcedRotation,