Make TrotterSequence enum class
[alexxy/gromacs.git] / src / gromacs / mdlib / update_vv.cpp
index d4d1aa416a74367c0b6161ca5e36a11adbea0b32..10feea2d1ed28bd8d202bf1131666be6ad5b5e5d 100644 (file)
 #include "gromacs/timing/wallcycle.h"
 #include "gromacs/topology/topology.h"
 
-void integrateVVFirstStep(int64_t                                  step,
-                          bool                                     bFirstStep,
-                          bool                                     bInitStep,
-                          gmx::StartingBehavior                    startingBehavior,
-                          int                                      nstglobalcomm,
-                          const t_inputrec*                        ir,
-                          t_forcerec*                              fr,
-                          t_commrec*                               cr,
-                          t_state*                                 state,
-                          t_mdatoms*                               mdatoms,
-                          const t_fcdata&                          fcdata,
-                          t_extmass*                               MassQ,
-                          t_vcm*                                   vcm,
-                          const gmx_mtop_t&                        top_global,
-                          const gmx_localtop_t&                    top,
-                          gmx_enerdata_t*                          enerd,
-                          gmx_ekindata_t*                          ekind,
-                          gmx_global_stat*                         gstat,
-                          real*                                    last_ekin,
-                          bool                                     bCalcVir,
-                          tensor                                   total_vir,
-                          tensor                                   shake_vir,
-                          tensor                                   force_vir,
-                          tensor                                   pres,
-                          matrix                                   M,
-                          bool                                     do_log,
-                          bool                                     do_ene,
-                          bool                                     bCalcEner,
-                          bool                                     bGStat,
-                          bool                                     bStopCM,
-                          bool                                     bTrotter,
-                          bool                                     bExchanged,
-                          bool*                                    bSumEkinhOld,
-                          real*                                    saved_conserved_quantity,
-                          gmx::ForceBuffers*                       f,
-                          gmx::Update*                             upd,
-                          gmx::Constraints*                        constr,
-                          gmx::SimulationSignaller*                nullSignaller,
-                          std::array<std::vector<int>, ettTSEQMAX> trotter_seq,
-                          t_nrnb*                                  nrnb,
-                          const gmx::MDLogger&                     mdlog,
-                          FILE*                                    fplog,
-                          gmx_wallcycle*                           wcycle)
+void integrateVVFirstStep(int64_t                   step,
+                          bool                      bFirstStep,
+                          bool                      bInitStep,
+                          gmx::StartingBehavior     startingBehavior,
+                          int                       nstglobalcomm,
+                          const t_inputrec*         ir,
+                          t_forcerec*               fr,
+                          t_commrec*                cr,
+                          t_state*                  state,
+                          t_mdatoms*                mdatoms,
+                          const t_fcdata&           fcdata,
+                          t_extmass*                MassQ,
+                          t_vcm*                    vcm,
+                          const gmx_mtop_t&         top_global,
+                          const gmx_localtop_t&     top,
+                          gmx_enerdata_t*           enerd,
+                          gmx_ekindata_t*           ekind,
+                          gmx_global_stat*          gstat,
+                          real*                     last_ekin,
+                          bool                      bCalcVir,
+                          tensor                    total_vir,
+                          tensor                    shake_vir,
+                          tensor                    force_vir,
+                          tensor                    pres,
+                          matrix                    M,
+                          bool                      do_log,
+                          bool                      do_ene,
+                          bool                      bCalcEner,
+                          bool                      bGStat,
+                          bool                      bStopCM,
+                          bool                      bTrotter,
+                          bool                      bExchanged,
+                          bool*                     bSumEkinhOld,
+                          real*                     saved_conserved_quantity,
+                          gmx::ForceBuffers*        f,
+                          gmx::Update*              upd,
+                          gmx::Constraints*         constr,
+                          gmx::SimulationSignaller* nullSignaller,
+                          gmx::EnumerationArray<TrotterSequence, std::vector<int>> trotter_seq,
+                          t_nrnb*                                                  nrnb,
+                          const gmx::MDLogger&                                     mdlog,
+                          FILE*                                                    fplog,
+                          gmx_wallcycle*                                           wcycle)
 {
     if (!bFirstStep || startingBehavior == gmx::StartingBehavior::NewSimulation)
     {
@@ -144,7 +144,7 @@ void integrateVVFirstStep(int64_t                                  step,
                            gmx::arrayRefFromArray(mdatoms->invmass, mdatoms->nr),
                            MassQ,
                            trotter_seq,
-                           ettTSEQ1);
+                           TrotterSequence::One);
         }
 
         upd->update_coords(*ir,
@@ -255,7 +255,7 @@ void integrateVVFirstStep(int64_t                                  step,
                                gmx::arrayRefFromArray(mdatoms->invmass, mdatoms->nr),
                                MassQ,
                                trotter_seq,
-                               ettTSEQ2);
+                               TrotterSequence::Two);
 
                 /* TODO This is only needed when we're about to write
                  * a checkpoint, because we use it after the restart
@@ -332,39 +332,39 @@ void integrateVVFirstStep(int64_t                                  step,
     }
 }
 
-void integrateVVSecondStep(int64_t                                  step,
-                           const t_inputrec*                        ir,
-                           t_forcerec*                              fr,
-                           t_commrec*                               cr,
-                           t_state*                                 state,
-                           t_mdatoms*                               mdatoms,
-                           const t_fcdata&                          fcdata,
-                           t_extmass*                               MassQ,
-                           t_vcm*                                   vcm,
-                           pull_t*                                  pull_work,
-                           gmx_enerdata_t*                          enerd,
-                           gmx_ekindata_t*                          ekind,
-                           gmx_global_stat*                         gstat,
-                           real*                                    dvdl_constr,
-                           bool                                     bCalcVir,
-                           tensor                                   total_vir,
-                           tensor                                   shake_vir,
-                           tensor                                   force_vir,
-                           tensor                                   pres,
-                           matrix                                   M,
-                           matrix                                   lastbox,
-                           bool                                     do_log,
-                           bool                                     do_ene,
-                           bool                                     bGStat,
-                           bool*                                    bSumEkinhOld,
-                           gmx::ForceBuffers*                       f,
-                           std::vector<gmx::RVec>*                  cbuf,
-                           gmx::Update*                             upd,
-                           gmx::Constraints*                        constr,
-                           gmx::SimulationSignaller*                nullSignaller,
-                           std::array<std::vector<int>, ettTSEQMAX> trotter_seq,
-                           t_nrnb*                                  nrnb,
-                           gmx_wallcycle*                           wcycle)
+void integrateVVSecondStep(int64_t                                                  step,
+                           const t_inputrec*                                        ir,
+                           t_forcerec*                                              fr,
+                           t_commrec*                                               cr,
+                           t_state*                                                 state,
+                           t_mdatoms*                                               mdatoms,
+                           const t_fcdata&                                          fcdata,
+                           t_extmass*                                               MassQ,
+                           t_vcm*                                                   vcm,
+                           pull_t*                                                  pull_work,
+                           gmx_enerdata_t*                                          enerd,
+                           gmx_ekindata_t*                                          ekind,
+                           gmx_global_stat*                                         gstat,
+                           real*                                                    dvdl_constr,
+                           bool                                                     bCalcVir,
+                           tensor                                                   total_vir,
+                           tensor                                                   shake_vir,
+                           tensor                                                   force_vir,
+                           tensor                                                   pres,
+                           matrix                                                   M,
+                           matrix                                                   lastbox,
+                           bool                                                     do_log,
+                           bool                                                     do_ene,
+                           bool                                                     bGStat,
+                           bool*                                                    bSumEkinhOld,
+                           gmx::ForceBuffers*                                       f,
+                           std::vector<gmx::RVec>*                                  cbuf,
+                           gmx::Update*                                             upd,
+                           gmx::Constraints*                                        constr,
+                           gmx::SimulationSignaller*                                nullSignaller,
+                           gmx::EnumerationArray<TrotterSequence, std::vector<int>> trotter_seq,
+                           t_nrnb*                                                  nrnb,
+                           gmx_wallcycle*                                           wcycle)
 {
     /* velocity half-step update */
     upd->update_coords(*ir,
@@ -476,7 +476,7 @@ void integrateVVSecondStep(int64_t                                  step,
                        gmx::arrayRefFromArray(mdatoms->invmass, mdatoms->nr),
                        MassQ,
                        trotter_seq,
-                       ettTSEQ4);
+                       TrotterSequence::Four);
         /* now we know the scaling, we can compute the positions again */
         std::copy(cbuf->begin(), cbuf->end(), state->x.begin());