Apply clang-format to source tree
[alexxy/gromacs.git] / src / gromacs / mdrun / legacymdrunoptions.h
index d5e47c872b47a03a0a1c212efc27b2ea8e1cb404..796e4794903989e848b5fe774b156cf1ef90494a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014,2015,2016,2017,2018,2019, by the GROMACS development team, led by
+ * Copyright (c) 2011-2019, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -77,201 +77,306 @@ namespace gmx
  * the role of SimulationContext, and should be moved there */
 class LegacyMdrunOptions
 {
-    public:
-        //! Ongoing collection of mdrun options
-        MdrunOptions                     mdrunOptions;
-        //! Options for the domain decomposition.
-        DomdecOptions                    domdecOptions;
-        //! Parallelism-related user options.
-        gmx_hw_opt_t                     hw_opt;
-        //! Command-line override for the duration of a neighbor list with the Verlet scheme.
-        int                              nstlist_cmdline = 0;
-        //! Parameters for replica-exchange simulations.
-        ReplicaExchangeParameters        replExParams;
+public:
+    //! Ongoing collection of mdrun options
+    MdrunOptions mdrunOptions;
+    //! Options for the domain decomposition.
+    DomdecOptions domdecOptions;
+    //! Parallelism-related user options.
+    gmx_hw_opt_t hw_opt;
+    //! Command-line override for the duration of a neighbor list with the Verlet scheme.
+    int nstlist_cmdline = 0;
+    //! Parameters for replica-exchange simulations.
+    ReplicaExchangeParameters replExParams;
 
-        //! Filename options to fill from command-line argument values.
-        std::vector<t_filenm> filenames =
-        {{{ efTPR, nullptr,     nullptr,     ffREAD },
-          { efTRN, "-o",        nullptr,     ffWRITE },
-          { efCOMPRESSED, "-x", nullptr,     ffOPTWR },
-          { efCPT, "-cpi",      nullptr,     ffOPTRD | ffALLOW_MISSING },
-          { efCPT, "-cpo",      nullptr,     ffOPTWR },
-          { efSTO, "-c",        "confout",   ffWRITE },
-          { efEDR, "-e",        "ener",      ffWRITE },
-          { efLOG, "-g",        "md",        ffWRITE },
-          { efXVG, "-dhdl",     "dhdl",      ffOPTWR },
-          { efXVG, "-field",    "field",     ffOPTWR },
-          { efXVG, "-table",    "table",     ffOPTRD },
-          { efXVG, "-tablep",   "tablep",    ffOPTRD },
-          { efXVG, "-tableb",   "table",     ffOPTRDMULT },
-          { efTRX, "-rerun",    "rerun",     ffOPTRD },
-          { efXVG, "-tpi",      "tpi",       ffOPTWR },
-          { efXVG, "-tpid",     "tpidist",   ffOPTWR },
-          { efEDI, "-ei",       "sam",       ffOPTRD },
-          { efXVG, "-eo",       "edsam",     ffOPTWR },
-          { efXVG, "-px",       "pullx",     ffOPTWR },
-          { efXVG, "-pf",       "pullf",     ffOPTWR },
-          { efXVG, "-ro",       "rotation",  ffOPTWR },
-          { efLOG, "-ra",       "rotangles", ffOPTWR },
-          { efLOG, "-rs",       "rotslabs",  ffOPTWR },
-          { efLOG, "-rt",       "rottorque", ffOPTWR },
-          { efMTX, "-mtx",      "nm",        ffOPTWR },
-          { efRND, "-multidir", nullptr,     ffOPTRDMULT},
-          { efXVG, "-awh",      "awhinit",   ffOPTRD },
-          { efDAT, "-membed",   "membed",    ffOPTRD },
-          { efTOP, "-mp",       "membed",    ffOPTRD },
-          { efNDX, "-mn",       "membed",    ffOPTRD },
-          { efXVG, "-if",       "imdforces", ffOPTWR },
-          { efXVG, "-swap",     "swapions",  ffOPTWR }}};
+    //! Filename options to fill from command-line argument values.
+    std::vector<t_filenm> filenames = { { { efTPR, nullptr, nullptr, ffREAD },
+                                          { efTRN, "-o", nullptr, ffWRITE },
+                                          { efCOMPRESSED, "-x", nullptr, ffOPTWR },
+                                          { efCPT, "-cpi", nullptr, ffOPTRD | ffALLOW_MISSING },
+                                          { efCPT, "-cpo", nullptr, ffOPTWR },
+                                          { efSTO, "-c", "confout", ffWRITE },
+                                          { efEDR, "-e", "ener", ffWRITE },
+                                          { efLOG, "-g", "md", ffWRITE },
+                                          { efXVG, "-dhdl", "dhdl", ffOPTWR },
+                                          { efXVG, "-field", "field", ffOPTWR },
+                                          { efXVG, "-table", "table", ffOPTRD },
+                                          { efXVG, "-tablep", "tablep", ffOPTRD },
+                                          { efXVG, "-tableb", "table", ffOPTRDMULT },
+                                          { efTRX, "-rerun", "rerun", ffOPTRD },
+                                          { efXVG, "-tpi", "tpi", ffOPTWR },
+                                          { efXVG, "-tpid", "tpidist", ffOPTWR },
+                                          { efEDI, "-ei", "sam", ffOPTRD },
+                                          { efXVG, "-eo", "edsam", ffOPTWR },
+                                          { efXVG, "-px", "pullx", ffOPTWR },
+                                          { efXVG, "-pf", "pullf", ffOPTWR },
+                                          { efXVG, "-ro", "rotation", ffOPTWR },
+                                          { efLOG, "-ra", "rotangles", ffOPTWR },
+                                          { efLOG, "-rs", "rotslabs", ffOPTWR },
+                                          { efLOG, "-rt", "rottorque", ffOPTWR },
+                                          { efMTX, "-mtx", "nm", ffOPTWR },
+                                          { efRND, "-multidir", nullptr, ffOPTRDMULT },
+                                          { efXVG, "-awh", "awhinit", ffOPTRD },
+                                          { efDAT, "-membed", "membed", ffOPTRD },
+                                          { efTOP, "-mp", "membed", ffOPTRD },
+                                          { efNDX, "-mn", "membed", ffOPTRD },
+                                          { efXVG, "-if", "imdforces", ffOPTWR },
+                                          { efXVG, "-swap", "swapions", ffOPTWR } } };
 
-        //! Print a warning if any force is larger than this (in kJ/mol nm).
-        real                             pforce = -1;
+    //! Print a warning if any force is larger than this (in kJ/mol nm).
+    real pforce = -1;
 
-        //! The value of the -append option
-        bool                             appendOption = true;
+    //! The value of the -append option
+    bool appendOption = true;
 
-        /*! \brief Output context for writing text files
-         *
-         * \todo Clarify initialization, ownership, and lifetime. */
-        gmx_output_env_t                *oenv = nullptr;
+    /*! \brief Output context for writing text files
+     *
+     * \todo Clarify initialization, ownership, and lifetime. */
+    gmx_output_env_t* oenv = nullptr;
 
-        /*! \brief Command line options, defaults, docs and storage for them to fill. */
-        /*! \{ */
-        rvec              realddxyz                                                  = {0, 0, 0};
-        const char       *ddrank_opt_choices[static_cast<int>(DdRankOrder::Count)+1] =
-        { nullptr, "interleave", "pp_pme", "cartesian", nullptr };
-        const char       *dddlb_opt_choices[static_cast<int>(DlbOption::Count)+1] =
-        { nullptr, "auto", "no", "yes", nullptr };
-        const char       *thread_aff_opt_choices[static_cast<int>(ThreadAffinity::Count) + 1] =
-        { nullptr, "auto", "on", "off", nullptr };
-        const char       *nbpu_opt_choices[5] =
-        { nullptr, "auto", "cpu", "gpu", nullptr };
-        const char       *pme_opt_choices[5] =
-        { nullptr, "auto", "cpu", "gpu", nullptr };
-        const char       *pme_fft_opt_choices[5] =
-        { nullptr, "auto", "cpu", "gpu", nullptr };
-        const char       *bonded_opt_choices[5] =
-        { nullptr, "auto", "cpu", "gpu", nullptr };
-        const char       *update_opt_choices[5] =
-        { nullptr, "auto", "cpu", "gpu", nullptr };
-        const char       *gpuIdsAvailable       = "";
-        const char       *userGpuTaskAssignment = "";
+    /*! \brief Command line options, defaults, docs and storage for them to fill. */
+    /*! \{ */
+    rvec        realddxyz                                                    = { 0, 0, 0 };
+    const char* ddrank_opt_choices[static_cast<int>(DdRankOrder::Count) + 1] = {
+        nullptr, "interleave", "pp_pme", "cartesian", nullptr
+    };
+    const char* dddlb_opt_choices[static_cast<int>(DlbOption::Count) + 1] = { nullptr, "auto", "no",
+                                                                              "yes", nullptr };
+    const char* thread_aff_opt_choices[static_cast<int>(ThreadAffinity::Count) + 1] = {
+        nullptr, "auto", "on", "off", nullptr
+    };
+    const char* nbpu_opt_choices[5]    = { nullptr, "auto", "cpu", "gpu", nullptr };
+    const char* pme_opt_choices[5]     = { nullptr, "auto", "cpu", "gpu", nullptr };
+    const char* pme_fft_opt_choices[5] = { nullptr, "auto", "cpu", "gpu", nullptr };
+    const char* bonded_opt_choices[5]  = { nullptr, "auto", "cpu", "gpu", nullptr };
+    const char* update_opt_choices[5]  = { nullptr, "auto", "cpu", "gpu", nullptr };
+    const char* gpuIdsAvailable        = "";
+    const char* userGpuTaskAssignment  = "";
 
 
-        ImdOptions       &imdOptions = mdrunOptions.imdOptions;
+    ImdOptions& imdOptions = mdrunOptions.imdOptions;
 
-        t_pargs           pa[48] = {
+    t_pargs pa[48] = {
 
-            { "-dd",      FALSE, etRVEC, {&realddxyz},
-              "Domain decomposition grid, 0 is optimize" },
-            { "-ddorder", FALSE, etENUM, {ddrank_opt_choices},
-              "DD rank order" },
-            { "-npme",    FALSE, etINT, {&domdecOptions.numPmeRanks},
-              "Number of separate ranks to be used for PME, -1 is guess" },
-            { "-nt",      FALSE, etINT, {&hw_opt.nthreads_tot},
-              "Total number of threads to start (0 is guess)" },
-            { "-ntmpi",   FALSE, etINT, {&hw_opt.nthreads_tmpi},
-              "Number of thread-MPI ranks to start (0 is guess)" },
-            { "-ntomp",   FALSE, etINT, {&hw_opt.nthreads_omp},
-              "Number of OpenMP threads per MPI rank to start (0 is guess)" },
-            { "-ntomp_pme", FALSE, etINT, {&hw_opt.nthreads_omp_pme},
-              "Number of OpenMP threads per MPI rank to start (0 is -ntomp)" },
-            { "-pin",     FALSE, etENUM, {thread_aff_opt_choices},
-              "Whether mdrun should try to set thread affinities" },
-            { "-pinoffset", FALSE, etINT, {&hw_opt.core_pinning_offset},
-              "The lowest logical core number to which mdrun should pin the first thread" },
-            { "-pinstride", FALSE, etINT, {&hw_opt.core_pinning_stride},
-              "Pinning distance in logical cores for threads, use 0 to minimize the number of threads per physical core" },
-            { "-gpu_id",  FALSE, etSTR, {&gpuIdsAvailable},
-              "List of unique GPU device IDs available to use" },
-            { "-gputasks",  FALSE, etSTR, {&userGpuTaskAssignment},
-              "List of GPU device IDs, mapping each PP task on each node to a device" },
-            { "-ddcheck", FALSE, etBOOL, {&domdecOptions.checkBondedInteractions},
-              "Check for all bonded interactions with DD" },
-            { "-ddbondcomm", FALSE, etBOOL, {&domdecOptions.useBondedCommunication},
-              "HIDDENUse special bonded atom communication when [TT]-rdd[tt] > cut-off" },
-            { "-rdd",     FALSE, etREAL, {&domdecOptions.minimumCommunicationRange},
-              "The maximum distance for bonded interactions with DD (nm), 0 is determine from initial coordinates" },
-            { "-rcon",    FALSE, etREAL, {&domdecOptions.constraintCommunicationRange},
-              "Maximum distance for P-LINCS (nm), 0 is estimate" },
-            { "-dlb",     FALSE, etENUM, {dddlb_opt_choices},
-              "Dynamic load balancing (with DD)" },
-            { "-dds",     FALSE, etREAL, {&domdecOptions.dlbScaling},
-              "Fraction in (0,1) by whose reciprocal the initial DD cell size will be increased in order to "
-              "provide a margin in which dynamic load balancing can act while preserving the minimum cell size." },
-            { "-ddcsx",   FALSE, etSTR, {&domdecOptions.cellSizeX},
-              "HIDDENA string containing a vector of the relative sizes in the x "
-              "direction of the corresponding DD cells. Only effective with static "
-              "load balancing." },
-            { "-ddcsy",   FALSE, etSTR, {&domdecOptions.cellSizeY},
-              "HIDDENA string containing a vector of the relative sizes in the y "
-              "direction of the corresponding DD cells. Only effective with static "
-              "load balancing." },
-            { "-ddcsz",   FALSE, etSTR, {&domdecOptions.cellSizeZ},
-              "HIDDENA string containing a vector of the relative sizes in the z "
-              "direction of the corresponding DD cells. Only effective with static "
-              "load balancing." },
-            { "-nb",      FALSE, etENUM, {nbpu_opt_choices},
-              "Calculate non-bonded interactions on" },
-            { "-nstlist", FALSE, etINT, {&nstlist_cmdline},
-              "Set nstlist when using a Verlet buffer tolerance (0 is guess)" },
-            { "-tunepme", FALSE, etBOOL, {&mdrunOptions.tunePme},
-              "Optimize PME load between PP/PME ranks or GPU/CPU" },
-            { "-pme",     FALSE, etENUM, {pme_opt_choices},
-              "Perform PME calculations on" },
-            { "-pmefft", FALSE, etENUM, {pme_fft_opt_choices},
-              "Perform PME FFT calculations on" },
-            { "-bonded",     FALSE, etENUM, {bonded_opt_choices},
-              "Perform bonded calculations on" },
-            { "-update", FALSE, etENUM, {update_opt_choices},
-              "Perform update and constraints on"},
-            { "-v",       FALSE, etBOOL, {&mdrunOptions.verbose},
-              "Be loud and noisy" },
-            { "-pforce",  FALSE, etREAL, {&pforce},
-              "Print all forces larger than this (kJ/mol nm)" },
-            { "-reprod",  FALSE, etBOOL, {&mdrunOptions.reproducible},
-              "Try to avoid optimizations that affect binary reproducibility" },
-            { "-cpt",     FALSE, etREAL, {&mdrunOptions.checkpointOptions.period},
-              "Checkpoint interval (minutes)" },
-            { "-cpnum",   FALSE, etBOOL, {&mdrunOptions.checkpointOptions.keepAndNumberCheckpointFiles},
-              "Keep and number checkpoint files" },
-            { "-append",  FALSE, etBOOL, {&appendOption},
-              "Append to previous output files when continuing from checkpoint instead of adding the simulation part number to all file names" },
-            { "-nsteps",  FALSE, etINT64, {&mdrunOptions.numStepsCommandline},
-              "Run this number of steps (-1 means infinite, -2 means use mdp option, smaller is invalid)" },
-            { "-maxh",   FALSE, etREAL, {&mdrunOptions.maximumHoursToRun},
-              "Terminate after 0.99 times this time (hours)" },
-            { "-replex",  FALSE, etINT, {&replExParams.exchangeInterval},
-              "Attempt replica exchange periodically with this period (steps)" },
-            { "-nex",  FALSE, etINT, {&replExParams.numExchanges},
-              "Number of random exchanges to carry out each exchange interval (N^3 is one suggestion).  -nex zero or not specified gives neighbor replica exchange." },
-            { "-reseed",  FALSE, etINT, {&replExParams.randomSeed},
-              "Seed for replica exchange, -1 is generate a seed" },
-            { "-imdport",    FALSE, etINT, {&imdOptions.port},
-              "HIDDENIMD listening port" },
-            { "-imdwait",  FALSE, etBOOL, {&imdOptions.wait},
-              "HIDDENPause the simulation while no IMD client is connected" },
-            { "-imdterm",  FALSE, etBOOL, {&imdOptions.terminatable},
-              "HIDDENAllow termination of the simulation from IMD client" },
-            { "-imdpull",  FALSE, etBOOL, {&imdOptions.pull},
-              "HIDDENAllow pulling in the simulation from IMD client" },
-            { "-rerunvsite", FALSE, etBOOL, {&mdrunOptions.rerunConstructVsites},
-              "HIDDENRecalculate virtual site coordinates with [TT]-rerun[tt]" },
-            { "-confout", FALSE, etBOOL, {&mdrunOptions.writeConfout},
-              "HIDDENWrite the last configuration with [TT]-c[tt] and force checkpointing at the last step" },
-            { "-stepout", FALSE, etINT, {&mdrunOptions.verboseStepPrintInterval},
-              "HIDDENFrequency of writing the remaining wall clock time for the run" },
-            { "-resetstep", FALSE, etINT, {&mdrunOptions.timingOptions.resetStep},
-              "HIDDENReset cycle counters after these many time steps" },
-            { "-resethway", FALSE, etBOOL, {&mdrunOptions.timingOptions.resetHalfway},
-              "HIDDENReset the cycle counters after half the number of steps or halfway [TT]-maxh[tt]" }
-        };
-        /*! \} */
+        { "-dd", FALSE, etRVEC, { &realddxyz }, "Domain decomposition grid, 0 is optimize" },
+        { "-ddorder", FALSE, etENUM, { ddrank_opt_choices }, "DD rank order" },
+        { "-npme",
+          FALSE,
+          etINT,
+          { &domdecOptions.numPmeRanks },
+          "Number of separate ranks to be used for PME, -1 is guess" },
+        { "-nt",
+          FALSE,
+          etINT,
+          { &hw_opt.nthreads_tot },
+          "Total number of threads to start (0 is guess)" },
+        { "-ntmpi",
+          FALSE,
+          etINT,
+          { &hw_opt.nthreads_tmpi },
+          "Number of thread-MPI ranks to start (0 is guess)" },
+        { "-ntomp",
+          FALSE,
+          etINT,
+          { &hw_opt.nthreads_omp },
+          "Number of OpenMP threads per MPI rank to start (0 is guess)" },
+        { "-ntomp_pme",
+          FALSE,
+          etINT,
+          { &hw_opt.nthreads_omp_pme },
+          "Number of OpenMP threads per MPI rank to start (0 is -ntomp)" },
+        { "-pin",
+          FALSE,
+          etENUM,
+          { thread_aff_opt_choices },
+          "Whether mdrun should try to set thread affinities" },
+        { "-pinoffset",
+          FALSE,
+          etINT,
+          { &hw_opt.core_pinning_offset },
+          "The lowest logical core number to which mdrun should pin the first thread" },
+        { "-pinstride",
+          FALSE,
+          etINT,
+          { &hw_opt.core_pinning_stride },
+          "Pinning distance in logical cores for threads, use 0 to minimize the number of threads "
+          "per physical core" },
+        { "-gpu_id",
+          FALSE,
+          etSTR,
+          { &gpuIdsAvailable },
+          "List of unique GPU device IDs available to use" },
+        { "-gputasks",
+          FALSE,
+          etSTR,
+          { &userGpuTaskAssignment },
+          "List of GPU device IDs, mapping each PP task on each node to a device" },
+        { "-ddcheck",
+          FALSE,
+          etBOOL,
+          { &domdecOptions.checkBondedInteractions },
+          "Check for all bonded interactions with DD" },
+        { "-ddbondcomm",
+          FALSE,
+          etBOOL,
+          { &domdecOptions.useBondedCommunication },
+          "HIDDENUse special bonded atom communication when [TT]-rdd[tt] > cut-off" },
+        { "-rdd",
+          FALSE,
+          etREAL,
+          { &domdecOptions.minimumCommunicationRange },
+          "The maximum distance for bonded interactions with DD (nm), 0 is determine from initial "
+          "coordinates" },
+        { "-rcon",
+          FALSE,
+          etREAL,
+          { &domdecOptions.constraintCommunicationRange },
+          "Maximum distance for P-LINCS (nm), 0 is estimate" },
+        { "-dlb", FALSE, etENUM, { dddlb_opt_choices }, "Dynamic load balancing (with DD)" },
+        { "-dds",
+          FALSE,
+          etREAL,
+          { &domdecOptions.dlbScaling },
+          "Fraction in (0,1) by whose reciprocal the initial DD cell size will be increased in "
+          "order to "
+          "provide a margin in which dynamic load balancing can act while preserving the minimum "
+          "cell size." },
+        { "-ddcsx",
+          FALSE,
+          etSTR,
+          { &domdecOptions.cellSizeX },
+          "HIDDENA string containing a vector of the relative sizes in the x "
+          "direction of the corresponding DD cells. Only effective with static "
+          "load balancing." },
+        { "-ddcsy",
+          FALSE,
+          etSTR,
+          { &domdecOptions.cellSizeY },
+          "HIDDENA string containing a vector of the relative sizes in the y "
+          "direction of the corresponding DD cells. Only effective with static "
+          "load balancing." },
+        { "-ddcsz",
+          FALSE,
+          etSTR,
+          { &domdecOptions.cellSizeZ },
+          "HIDDENA string containing a vector of the relative sizes in the z "
+          "direction of the corresponding DD cells. Only effective with static "
+          "load balancing." },
+        { "-nb", FALSE, etENUM, { nbpu_opt_choices }, "Calculate non-bonded interactions on" },
+        { "-nstlist",
+          FALSE,
+          etINT,
+          { &nstlist_cmdline },
+          "Set nstlist when using a Verlet buffer tolerance (0 is guess)" },
+        { "-tunepme",
+          FALSE,
+          etBOOL,
+          { &mdrunOptions.tunePme },
+          "Optimize PME load between PP/PME ranks or GPU/CPU" },
+        { "-pme", FALSE, etENUM, { pme_opt_choices }, "Perform PME calculations on" },
+        { "-pmefft", FALSE, etENUM, { pme_fft_opt_choices }, "Perform PME FFT calculations on" },
+        { "-bonded", FALSE, etENUM, { bonded_opt_choices }, "Perform bonded calculations on" },
+        { "-update", FALSE, etENUM, { update_opt_choices }, "Perform update and constraints on" },
+        { "-v", FALSE, etBOOL, { &mdrunOptions.verbose }, "Be loud and noisy" },
+        { "-pforce", FALSE, etREAL, { &pforce }, "Print all forces larger than this (kJ/mol nm)" },
+        { "-reprod",
+          FALSE,
+          etBOOL,
+          { &mdrunOptions.reproducible },
+          "Try to avoid optimizations that affect binary reproducibility" },
+        { "-cpt",
+          FALSE,
+          etREAL,
+          { &mdrunOptions.checkpointOptions.period },
+          "Checkpoint interval (minutes)" },
+        { "-cpnum",
+          FALSE,
+          etBOOL,
+          { &mdrunOptions.checkpointOptions.keepAndNumberCheckpointFiles },
+          "Keep and number checkpoint files" },
+        { "-append",
+          FALSE,
+          etBOOL,
+          { &appendOption },
+          "Append to previous output files when continuing from checkpoint instead of adding the "
+          "simulation part number to all file names" },
+        { "-nsteps",
+          FALSE,
+          etINT64,
+          { &mdrunOptions.numStepsCommandline },
+          "Run this number of steps (-1 means infinite, -2 means use mdp option, smaller is "
+          "invalid)" },
+        { "-maxh",
+          FALSE,
+          etREAL,
+          { &mdrunOptions.maximumHoursToRun },
+          "Terminate after 0.99 times this time (hours)" },
+        { "-replex",
+          FALSE,
+          etINT,
+          { &replExParams.exchangeInterval },
+          "Attempt replica exchange periodically with this period (steps)" },
+        { "-nex",
+          FALSE,
+          etINT,
+          { &replExParams.numExchanges },
+          "Number of random exchanges to carry out each exchange interval (N^3 is one suggestion). "
+          " -nex zero or not specified gives neighbor replica exchange." },
+        { "-reseed",
+          FALSE,
+          etINT,
+          { &replExParams.randomSeed },
+          "Seed for replica exchange, -1 is generate a seed" },
+        { "-imdport", FALSE, etINT, { &imdOptions.port }, "HIDDENIMD listening port" },
+        { "-imdwait",
+          FALSE,
+          etBOOL,
+          { &imdOptions.wait },
+          "HIDDENPause the simulation while no IMD client is connected" },
+        { "-imdterm",
+          FALSE,
+          etBOOL,
+          { &imdOptions.terminatable },
+          "HIDDENAllow termination of the simulation from IMD client" },
+        { "-imdpull",
+          FALSE,
+          etBOOL,
+          { &imdOptions.pull },
+          "HIDDENAllow pulling in the simulation from IMD client" },
+        { "-rerunvsite",
+          FALSE,
+          etBOOL,
+          { &mdrunOptions.rerunConstructVsites },
+          "HIDDENRecalculate virtual site coordinates with [TT]-rerun[tt]" },
+        { "-confout",
+          FALSE,
+          etBOOL,
+          { &mdrunOptions.writeConfout },
+          "HIDDENWrite the last configuration with [TT]-c[tt] and force checkpointing at the last "
+          "step" },
+        { "-stepout",
+          FALSE,
+          etINT,
+          { &mdrunOptions.verboseStepPrintInterval },
+          "HIDDENFrequency of writing the remaining wall clock time for the run" },
+        { "-resetstep",
+          FALSE,
+          etINT,
+          { &mdrunOptions.timingOptions.resetStep },
+          "HIDDENReset cycle counters after these many time steps" },
+        { "-resethway",
+          FALSE,
+          etBOOL,
+          { &mdrunOptions.timingOptions.resetHalfway },
+          "HIDDENReset the cycle counters after half the number of steps or halfway "
+          "[TT]-maxh[tt]" }
+    };
+    /*! \} */
 
-        //! Parses the command-line input and prepares to start mdrun.
-        int updateFromCommandLine(int argc, char **argv, ArrayRef<const char *> desc);
+    //! Parses the command-line input and prepares to start mdrun.
+    int updateFromCommandLine(int argc, char** argv, ArrayRef<const char*> desc);
 
-        ~LegacyMdrunOptions();
+    ~LegacyMdrunOptions();
 };
 
 } // end namespace gmx