MD Workflow Generator
Set up a whole GROMACS run, every .mdp file explained and checked, index groups and the job script, or a whole LAMMPS run, every input line explained and checked, for SLURM, PBS, LSF or Grid Engine, or a PLUMED input for enhanced sampling.
Cluster
Directives use #SBATCH; submit with sbatch submit.sh.
Site-specific. List the names with qconf -spl; a shared-memory PE (often smp) for threaded runs, an MPI one for ranks across nodes.
Leave unset unless the run needs specific hardware; the scheduler then has more freedom.
1-10, 1-100:2, or 1-50%4 to cap tasks in flight.
Each task runs in prefix + index, e.g. run_3.
Force field and system
GROMACS 2025Files for the newest release. gmx --version says which one a cluster has.
Thermostat and barostat
Barostat and thermostat guide
Thermostats
- V-rescale recommended
- Stochastic velocity rescaling (Bussi, Donadio and Parrinello 2007). It relaxes the temperature like a first-order coupling, so it is safe from the first step of NVT, and its random term gives the correct canonical distribution, so it is just as good in production.
tau-t0.1 ps (1 ps for Martini). - Nose-Hoover
- An extended system with the correct ensemble and no random numbers. The temperature oscillates around the target, strongly if it starts far from it, so use it after equilibration. Its
tau-tis the period of those oscillations: 4 to 5 times a first-order constant, 0.5 ps here (4 ps for Martini). - Berendsen deprecated
- Suppresses the natural fluctuations of the kinetic energy, so the ensemble is wrong. Kept in GROMACS to reproduce old runs; grompp warns, so the job script adds
-maxwarn. - tc-grps
- Couple separately the parts that exchange heat slowly (solute and solvent, a bilayer and the water), but give every group hundreds of atoms at least, or its temperature is noise. Never a group per ion or per small ligand. Every atom must be in exactly one group.
Barostats
- C-rescale recommended
- Stochastic cell rescaling (Bernetti and Bussi 2020). It relaxes the pressure exponentially, so it is stable far from equilibrium, and its random term gives the correct volume fluctuations: the manual says it can be used for both equilibration and production.
tau-p1 ps (4 ps for Martini). In GROMACS 2025 it scales isotropically, semi-isotropically or with a surface tension, not anisotropically. - Parrinello-Rahman
- The box vectors get an equation of motion. Correct fluctuations and any box shape, but it oscillates, very strongly if started away from the target pressure, and grompp notes that it is unstable with position restraints. So when you choose it, NPT equilibration here uses C-rescale and Parrinello-Rahman takes over in production, except with anisotropic scaling, which C-rescale cannot do. Its
tau-pis a period: 5 ps (12 ps for Martini). - Berendsen deprecated
- Wrong volume fluctuations; the manual recommends against it for new simulations and grompp warns.
- tau-p and compressibility
tau-pis how quickly the box answers a pressure difference; too short and the box rings. The compressibility says how much the volume changes per bar (water at 300 K: 4.5e-5 bar−1). Together they set how hard the barostat pushes; the equilibrium density does not depend on them, so an approximate compressibility is fine.
Box scaling
- Isotropic
- x, y and z scale together and the box keeps its shape: liquids, solutions, proteins in water. One value each for
ref-pandcompressibility. - Semi-isotropic
- The membrane plane (x/y) and the normal (z) scale separately, so the area per lipid and the thickness relax independently. Use it for bilayers and flat interfaces. Two values each: x/y, then z.
- Anisotropic
- All six box components scale on their own: crystals and solids under stress. The manual warns it can deform the box drastically. C-rescale cannot do it in GROMACS 2025, so the page uses Parrinello-Rahman instead (Berendsen can too, but is deprecated). Six values each; the off-diagonal compressibilities are 0, so the box angles stay fixed and the box must be rectangular: a rhombic dodecahedron or other triclinic box becomes too skewed as it shrinks, and mdrun stops.
Position restraints under pressure
A restrained atom is pulled towards a reference position. When the box scales, that reference has to move with it, or the restraints fight the barostat: grompp warns about absolute restraints with pressure coupling. refcoord-scaling = com scales the centre of mass of the references with the box and keeps their shape, so every restrained stage with a barostat gets it. The coordinates grompp reads with -r (here the start of that stage) are the references.
From the GROMACS 2025.1 manual: temperature coupling, pressure coupling and the reference manual on coupling algorithms.
Time step and bonds
Makes hydrogens three times heavier, taking the mass from the atom each is bonded to, so a 4 fs step stays stable. Needs GROMACS 2024 or newer.
What it does, and its limits
The fastest motions left once the bonds to hydrogen are rigid are the angles that move a hydrogen; they set the 2 fs limit. mass-repartition-factor = 3 makes grompp find the lightest atom (hydrogen, 1.008 u), raise every atom lighter than three times that to 3.024 u, and take the difference from the one atom it is bonded to. The total mass is unchanged, so densities and equilibrium properties are too, while those vibrations slow down enough for 4 fs.
- 4 fs is the limit. The manual: with
constraints = h-bonds, a factor of 3 "will usually enable a time step of 4 fs". Go beyond it and other motions become unstable; the page warns above 4 fs. - GROMACS 2024 or newer. The option arrived in 2024 (release notes). An older grompp does not know it and warns, so without
-maxwarnit stops (the script passes none for this); with-maxwarnit would run without repartitioning, which at 4 fs crashes. So with GROMACS 2023 or 2022 chosen under GROMACS version, the switch is off and the files keep 2 fs: for 4 fs, repartition the topology itself (for example with ParmEd'sHMassRepartition, factor 3) and type 4 as the time step. - Dynamics run a little slower. The manual: it "does not affect equilibrium distributions, but makes dynamics slightly slower", so rates and diffusion from an HMR run need care.
- grompp stops when a light atom has more than one bond, when the atom it is bonded to would become too light, or with perturbed masses in a free-energy run; it warns about light atoms with no bond, which cannot be repartitioned. It also notes that bonds such as C=O now oscillate in fewer than ten time steps, when the molecules have them (water and ions do not): expected at 4 fs with only the bonds to hydrogen rigid.
- Water hydrogens are repartitioned too, which is harmless: rigid water has no internal motion.
Topology header
Combination rule and 1‑4 fudge factors are set automatically to match the force field. Why?
The workflow at a glance
The atom count gives the output sizes (it is filled in when you load a structure under Index groups); the speed, from the end of an earlier md.log, gives the run time.
Energy minimisation
Relieves the clashes left by building and solvating, so the first step of dynamics does not blow up.
NVT equilibration
Brings the system to the target temperature at constant volume while the solute is held, so the solvent settles around it.
NPT equilibration
Lets the density settle at the target pressure, still holding the solute. With Parrinello-Rahman chosen for production, this stage uses C-rescale, unless the box scales anisotropically.
Production
The run you analyse: restraints released, with the thermostat and barostat chosen under System.
Simulated annealing
Heats and cools along a schedule of temperatures, to anneal a structure or to melt and quench a material.
Pairs separated by commas; the temperature changes linearly between them.
Pulling
Pulls one group from another along a coordinate: a fixed umbrella-sampling window, or steered MD at a constant rate.
Group names must exist in the index: build it under Index groups, where these fields offer every group.
Index groups from your structure
Drop the structure grompp will read
The groups gmx make_ndx would make, the ones a set-up needs (ligand, complex, pocket, membrane, solvent) and the temperature groups for it, numbered as GROMACS numbers atoms. The file stays in your browser.
.gro.pdb
| Residue | GROMACS calls it | Role | Residues | Atoms |
|---|
Temperature groups for this system
Groups in index.ndx
Numbered as gmx make_ndx numbers them. The suggested groups can be left out; your own are added at the end.
Make a group
Fill in what the atoms have in common; every line you fill in must hold. Names take * and ? as in make_ndx, and lists are separated by spaces or commas.
Or write a selection
The selection language of the Structure Inspector; distances in nm. It is combined with the fields above.
Input files and restarts
Use gmx_mpi if the module provides the MPI build (which gmx gmx_mpi after loading it); with more than one node the script starts it on every node through srun or mpirun, while the thread-MPI gmx stays on one. Each grompp reads the previous stage's .gro with -c, and its checkpoint with -t when velocities carry over.
Each stage runs only while its final .gro is missing, and mdrun continues from its checkpoint (-cpi). If the job hits its wall time, submit the same script again and it carries on where it stopped. Off, every stage runs from its start each time, with no checkpoint read.
GPU offload (mdrun)
The GPU flags apply only when GPUs per node is above 0; each offloads the named calculation to the GPU. -ntmpi applies to every run of the thread-MPI build.
PLUMED
-plumed to mdrun
The run files do not include it: build plumed.dat in the PLUMED tab, download it there with any file its INCLUDE lines read, and put it next to the run files. submit.sh stops before the first stage while it is missing. Energy minimisation is never coupled.
Where the atoms come from
Drop the data file LAMMPS will read
Optional. With it, the page knows the atom types, the water and the charge, and the files use them: SHAKE on the right types, groups for restraints, the atom count for the output sizes. The file stays in your browser.
data.**.data*.lmp
Atom types
| Type | Element | Mass | Atoms | Charge (e) |
|---|
A restart file holds the atoms, velocities and box of the run that wrote it, and the styles, but not the fixes, computes or output: the stages here set those again.
Force field and units
LAMMPSStyle lines (pair_style, bond_style, ...) go before the data file is read; coefficients and the rest go into the shared settings file every stage reads.
Bonded styles
Empty fields keep the force field's styles. A data file made for other styles needs its coefficients to match them.
Extra lines for the shared settings
Added at the end of the shared settings file, so every stage reads them.
Temperature and pressure
Thermostat and barostat guide
Time step and bonds
Cut-offs and electrostatics
The workflow at a glance
The atom count gives the output sizes (it is filled in when you load a data file under System); the speed, from the Performance: line at the end of an earlier log, gives the run time.
Velocities, restraints and output
The first dynamics stage draws them (velocity create); every later stage carries them over in its restart file.
Empty: the group solute_heavy when Groups keeps it, else the solute's heavy atoms from the data file. Otherwise a group's name, or what the group command takes after the name, such as type 1:12 or molecule 1.
Energy minimisation
Relieves the overlaps left by building the system, so the first steps of dynamics do not blow up.
It stops when the energy changes by less than etol (relative), when the largest force is below ftol (kcal/(mol·Å)), or after the iterations above, whichever comes first.
NVT equilibration
Brings the system to the temperature at constant volume; restrained atoms stay near their start while the rest settles.
NPT equilibration
Lets the box relax to the pressure, so the density settles, carrying on from the NVT stage.
Production
The run you analyse, with the restraints released, carried on across jobs from its newest restart file.
Groups of atoms
Groups name sets of atoms: the ones the restraints hold, or any you want for your own analysis. LAMMPS always has all; the groups kept here are group lines in in.settings, so every stage has them, and the restrained atoms under Stages can name one. A group called solute_heavy is what the restraints hold unless you name another. Optional.
Load the data file under System, and the groups a set-up needs (the solute, the water, the ions) are suggested from its types and molecules.
Make a group
What the job runs
Every stage runs only while its last restart file is missing, and one that was stopped carries on from its newest restart file: if the job reaches its wall time, submit the same script again. LAMMPS ends each run cleanly the margin above before the wall time (timer timeout), so nothing since the last restart file is lost.
submit.sh runs your input as it is, with the accelerator's flags. Check it under Check a file first.
Accelerator
LAMMPS is MPI-parallel: set the MPI tasks per node in the cluster card. GPU and KOKKOS use GPUs; OPENMP is hybrid (set CPUs per task); INTEL and OPT accelerate CPU-only runs. Acceleration is not always faster: benchmark for your system and styles.
PLUMED
fix plumed)
Build the input in the PLUMED tab: it goes into the zip with the files its INCLUDE lines read. LAMMPS needs the PLUMED package (lmp -h lists it), and PLUMED numbers atoms by their LAMMPS atom IDs.
Atoms from your structure
Drop the structure the run starts from
Optional. With it, atoms are picked by name, not typed by number, and every atom list is checked. The file stays in your browser.
.gro.pdb
| Residue | Copies | Atoms each | Atom numbers |
|---|
Pick atoms
The same atoms of every copy of a residue
Files written for this input
Each is read by an INCLUDE line and must sit beside plumed.dat when the job runs. The input file does not carry them: download each with its button above.
System and setup
PLUMED defaults to nm, kJ/mol, ps. A UNITS line is written only when you change one. Starting values you have not changed follow the new units, each by its own unit (lengths and switching functions, a length's grid and SIGMA, HEIGHT and BARRIER, and the AT and KAPPA of restraints and walls; a count or an angle has no length); every length and energy you type (R_0, D_MAX, HEIGHT, KAPPA) must then be in the chosen units.
WHOLEMOLECULES) ?
Written once, right after MOLINFO and before the CVs. Each line becomes ENTITY0, ENTITY1, … Not needed if the secondary-structure CVs all use TYPE=DRMSD.
RESTART) ?
Step 1: Add collective variables
Functions of the variables
Optional. A function combines values defined above into a new one, which is printed and can be biased like any variable: a weighted sum fitted by a dimensionality-reduction method, or the difference of two distances.
Step 2: Choose the bias and sampling method
Method parameters
What these numbers mean
Speed and replicas
Every walker must share the same WALKERS_DIR and use a different WALKERS_ID (0, 1, 2, …). Not supported by OPES; use MPI mode there.
For a large COORDINATION, enable NLIST with a tuned NL_CUTOFF and NL_STRIDE on the variable itself; D_MAX does not speed it up. See the method notes below.
Walls and restraints
Optional, and in addition to the method above. A wall keeps the run inside the region of interest: an upper wall on a distance stops a ligand from leaving for the bulk while metadynamics acts on the same distance.
Output files
Every .mdp option GROMACS 2025.1
Check an .mdp file
Every command and style LAMMPS
Check a LAMMPS input
What your LAMMPS has: the packages from lmp -h
Paste what lmp -h prints on the machine that runs the job. The check then knows which styles your build has, and says so when a line needs a package it lacks. Without it, every package counts as installed.
submit.sh SLURM
Check a PLUMED input
Analyse a run
Drop a COLVAR, a HILLS file, or both
A COLVAR from a short run with no bias gives the hill width and the grid of each variable. HILLS from a metadynamics run gives the free-energy surface and shows whether it has settled. The files stay in your browser.
COLVARHILLS
The variables
| Value | Mean | Std. dev. | Range seen | Sigma | Grid | Notes |
|---|
The bias
Figures
Figure
Drawing the figure
It is drawn at the size it will be saved, and styled with the Style button.
topol.top header
How to build an MD workflow
Each tab below has its own video and steps. The files are written as you type, checked the way the engine checks them and explained line by line, and the page remembers your settings between visits.
Choose your engine, then follow its steps:
System: the physics every stage shares
Choose the force field (AMBER, CHARMM36, GROMOS 54A7, OPLS-AA or Martini 3), which sets the cut-offs, dispersion correction and time step it was parametrised with, and what you simulate: a solute in water, a membrane (semi-isotropic pressure coupling) or a liquid. Then the temperature and pressure, the thermostat and barostat (the guide next to them explains each), the rigid bonds and the time step, with hydrogen mass repartitioning for 4 fs.
Stages: what runs, and for how long
Switch stages on or off and give each a length in ps or ns, its output intervals, and whether the solute is held by position restraints. Velocities are handled for you: new ones for the first dynamics stage, carried over through the checkpoint after it. The panel at the top shows the workflow at a glance, with the steps, frames and file sizes.
Index groups, when you need them
Drop the .gro or .pdb grompp will read: you get the groups gmx make_ndx makes, suggestions for the ligand, the complex, the pocket, the membrane and the solvent, the temperature groups this system should use (applied to the .mdp files), and a builder for groups of your own. index.ndx goes into the zip and the script passes it with -n.
Job, then download all
Set the scheduler (SLURM, PBS Pro / OpenPBS, LSF or Grid Engine), resources, GPU offload and an optional PLUMED file. Every file is on the right with a tab of its own, and Download all gives submit.sh, the .mdp files, index.ndx and a README in one zip. Put your coordinates and topology next to them and submit with the command shown: sbatch, qsub, or bsub < submit.sh for LSF.
.mdp option of GROMACS 2025.1 by section, with its default, values and the manual's text; set a value there and it goes into the file you choose. Check a file reads an .mdp you already have, says whether grompp will stop, explains every line, and opens it in the builder to continue from it.System: force field and data file
Choose a force field (CHARMM36, CHARMM22/27, AMBER, OPLS-AA, COMPASS/PCFF, a water model, EAM, Tersoff, Stillinger-Weber, ReaxFF or a Lennard-Jones fluid) and the page fills in the units, styles, cut-offs and time step of that model. Drop in your data file: it is read in your browser, as read_data reads it, and the page reports the atoms and molecules, the net charge, the density and the water model it recognises. in.system makes the system; in.settings holds what every stage reads again, because a restart file does not keep the long-range solver or the neighbour-list settings.
Stages: lengths become steps
Four cards, for minimisation, NVT, NPT and production, each with a switch. Give each a length in fs, ps or ns and the page turns it into steps at the time step. Every stage is its own file, chained by restart files: the variable rstep is −1 for a fresh start and holds the step to carry on from after a stop, run … upto finishes at the same step however often a stage restarted, and timer timeout ends the run cleanly before the wall time. The job script runs the stages in order, skips one that finished and continues a stopped one from its newest restart file.
Groups, when you need them
Under Groups the page suggests sets of atoms from your data file, such as the water and the hydrogens, with their atom counts. Make your own with a name, how to select (by atom type, molecule ID or atom ID) and the values, numbers or a range such as 1:20; it becomes a group line in in.settings.
Job, then download all
On the Job step the Cluster card sets the resources; its wall-time margin makes LAMMPS stop a few minutes (ten by default) before the wall time, so nothing since the last restart file is lost. The card starts with one GPU, so with no accelerator the page warns you: set GPUs per node to zero for a CPU-only run. Pick an accelerator package (GPU, KOKKOS, INTEL, OPENMP or OPT) and the page lists which styles in your files have that variant. Download all gives one zip with every input and submit.sh, but not your data file: put it next to them. Couple PLUMED adds a fix plumed line and puts the PLUMED file in the zip. Already have an input? Choose My own input and only the job script is written.
pppm, say) to see its package, its accelerated variants and where your files use it, or tick Only those in the files. Check a file reads a LAMMPS input you already have the way LAMMPS does, says whether LAMMPS would stop and on which line, and explains every command; paste what lmp -h prints and the check knows which packages your build has.Variables and atoms
Add a collective variable from its category (a distance, an angle or torsion, an order parameter, or your own line under Custom). Each shows PLUMED’s own keywords, and every variable needs atoms. Drop in a .gro or .pdb file, or press Load a sample; the file stays in your browser. Pick atoms by name with a query (residue name, residue numbers, atom name) and press Use. Atom numbers count from one in the order of the file, as GROMACS passes them; under LAMMPS, PLUMED uses atom IDs. Give each variable a short label: the bias refers to it by name.
Bias: the method and its numbers
Well-tempered metadynamics is the default; the menu also offers standard metadynamics, OPES, restraints, walls and none. Height is the size of each hill, pace the steps between hills, and a higher bias factor lets the run explore higher barriers; What these numbers mean turns the settings into energies in kT. Some methods need a module (OPES, for one), and the page warns when a default build leaves it out. Set the PLUMED version to what plumed info --version prints on your cluster: keywords are checked against that release.
Grid, walkers and restarts
Keep Store the bias on a grid ticked; without it every step re-sums all hills and the run slows down as it proceeds. Several walkers can share one bias: in shared-directory mode each needs its own walker ID, so you save one copy of the file for each. Continue an earlier run adds a restart line; switch it on only for a continuation, with the files of the first part in place. PLUMED writes an input file, not a job, so this tab has no Job step.
Widths from a trial run, then read the result
Run a short trial with the method set to None, open Analyse a run and pick its COLVAR file: you get the mean, standard deviation and range of each variable, sigma as half the standard deviation, and a grid wider than the range seen. Use puts them into the builder. For a finished metadynamics run, load its COLVAR and HILLS files and open Free energy, Convergence, Hill heights and Re-weighted. A biased run spreads wider than one basin would, so the page declines to suggest widths from it.
plumed.dat the way PLUMED does, lists each error with its line number and explains every action and keyword under Line by line; Open in the builder loads it as editable cards. The checker sees only the file: the final word is plumed driver --plumed plumed.dat --natoms N --parse-only on the machine that runs the job. Figures export as PDF, PNG or SVG, or as a Python script that redraws them with matplotlib.Describe the job once
On the Job step the Cluster card takes the job name, wall time, nodes, CPUs, GPUs and memory; hover a ? for advice. The summary counts cores, GPUs and core hours: eight cores for 24 hours is 192 core hours. Under LAMMPS the card asks for MPI tasks per node instead of CPUs per task.
Switch scheduler, keep the request
Choose SLURM, PBS Pro / OpenPBS, LSF or Grid Engine and the same request becomes that scheduler’s directives, with memory converted (32G becomes 32gb). LSF reads its directives only from standard input, so you submit with bsub < submit.sh. Grid Engine adds a parallel-environment field, because those names are specific to each site, and has no standard GPU request, so a commented placeholder and a warning ask for your site’s name.
Arrays and warnings
Turn on Job array for many tasks, with how many run at once; memory is per task, so the summary counts every task. The page warns when multi-node GPU runs scale poorly and that plain gmx is the thread-MPI build, which stays on one node. A wall time that is not a time is replaced by 24:00:00, and you are told.
Save, share, then submit
Export settings writes everything you set to a small JSON file and Import settings reads it back, so a group can share one cluster set-up; Reset to defaults puts every field back. The page also remembers your choices in this browser. Before you submit, note that the SLURM submit line starts with mkdir -p logs (SLURM opens its log file before the script runs), and that module names, partitions and GPU resource names are placeholders to adjust.
#!/bin/bash -e, requests memory explicitly, and writes per-job or per-array logs under logs/. These are deliberate HPC best practices, not noise, see the reasons in the sections below. Anything the vendor leaves to the site (a GPU resource name, a parallel-environment name, a memory unit) is marked as site-specific in a comment inside the script.What the generator does, and why
Every .mdp file checked like grompp
The .mdp files are written from the GROMACS 2025.1 option table, generated from grompp's own reader and the manual, and each one is checked against grompp's consistency rules as you type. Choose GROMACS 2024, 2023 or 2022 under System and the files use only the options that release reads, checked as its grompp checks them. The page says, before you submit, whether grompp would stop, which warnings to expect and why, and adds -maxwarn only where a warning cannot be avoided.
Index groups numbered as GROMACS numbers them
The default groups follow gmx make_ndx exactly, quirks included, and the structure is read with GROMACS's own column rules, so a group name offered here is one grompp will find, holding the atoms it expects. One change is deliberate: the group make_ndx leaves nameless, for a blank residue name, is called Group, because GROMACS cannot read its own [ ] back. The temperature groups are checked to cover every atom exactly once, as grompp requires.
Coupled force-field parameters
The combination rule and 1‑4 fudge factors are not free choices: each force field ships a specific [ defaults ] line. Selecting a force field sets both for you, and any manual override that diverges from the canonical values is flagged.
One request, four schedulers
Explicit memory, wall-time validation, #!/bin/bash -e and per-job or per-array logs under logs/ follow published cluster best-practice guides so jobs fail loudly instead of silently. The same request becomes #SBATCH, #PBS, #BSUB or #$ directives, with the matching job-id, array-index and launch conventions.
Hybrid CPU/GPU threading
Under SLURM OMP_NUM_THREADS is tied to SLURM_CPUS_PER_TASK, and SRUN_CPUS_PER_TASK is exported for Slurm > 22.05; PBS sets NCPUS from ompthreads, which the script reads with the requested count as the fallback; LSF and Grid Engine expose only slot counts, so for them the requested thread count is written next to the directive it matches. gmx mdrun runs with -ntomp and -pin auto, which pins threads when mdrun uses every CPU it can see (on a cluster that binds jobs to their CPUs, its own allocation), so jobs sharing a node do not land on the same cores; the thread-MPI gmx gets -ntmpi too, so that it keeps to the CPUs the job was given, and a job without GPUs gets -nb cpu, so that it leaves alone a GPU the node shows but the job did not ask for.
Everything stays local
The whole tool runs in your browser. Nothing you type is uploaded, logged, or sent anywhere, safe for unpublished systems and internal project names.
.mdp file alone decides; your topology decides the rest, so read grompp's own output (the page lists what to expect), and confirm module names, partitions and GPU flags against your own cluster's documentation.Method & references, by engine
The parameters and best practices below are grouped by tool. Switch tabs to see the details relevant to your workflow.
How the .mdp files are written
Each .mdp file is complete and commented: every line says what it does, and the Explained view and the pointer over a line give the manual's meaning with a link to the option in the GROMACS 2025.1 manual. The option names, kinds, defaults and allowed values come from a table generated from the GROMACS 2025.1 source, grompp's own reader (readir.cpp) and the manual page (mdp-options.rst).
What each force field sets, from its GROMACS port or the GROMACS manual's force-field page:
| Force field | Electrostatics | Lennard-Jones | Dispersion correction | Time step | tau-t / tau-p |
|---|---|---|---|---|---|
| AMBER | PME, 1.0 nm | 1.0 nm, potential-shift | EnerPres | 2 fs, h-bonds | 0.1 / 1.0 ps (5.0 Parrinello-Rahman) |
| CHARMM36 | PME, 1.2 nm | force-switch 1.0–1.2 nm | no | 2 fs, h-bonds | 0.1 / 1.0 ps (5.0) |
| GROMOS 54A7 | PME, 1.4 nm | 1.4 nm, potential-shift | no | 2 fs, all-bonds | 0.1 / 1.0 ps (5.0) |
| OPLS-AA | PME, 1.0 nm | 1.0 nm, potential-shift | EnerPres | 2 fs, h-bonds | 0.1 / 1.0 ps (5.0) |
| Martini 3 | reaction field, εr 15, 1.1 nm | 1.1 nm, potential-shift | no | 20 fs, none | 1.0 / 4.0 ps (12.0) |
- Stages. Minimisation uses steepest descent with flexible bonds and stops below the force you set; conjugate gradient, when chosen, runs after a steepest-descent stage of its own, which relieves the clashes of a freshly solvated system faster, and with flexible water (
define = -DFLEXIBLE), because GROMACS cannot use SETTLE in conjugate gradient. NVT and NPT equilibration hold the solute with the topology's position restraints (define = -DPOSRES, and grompp-rwith the stage's start coordinates); production releases them. Lengths in ps or ns becomenstepsat the time step, output intervals becomenstxout-compressed,nstenergyandnstlog, andnstcalcenergyis the largest divisor ofnstenergyup to 100. - Velocities. The first dynamics stage draws new velocities (
gen-vel = yes,continuation = no); every later one carries them over (gen-vel = no,continuation = yes), and grompp reads the previous stage's checkpoint with-t. Each stage can override this. - Thermostat and barostat. V-rescale and C-rescale are the defaults, as the GROMACS manual recommends. When Parrinello-Rahman is chosen, NPT equilibration uses C-rescale, because Parrinello-Rahman oscillates when the box starts away from equilibrium; when the box must scale anisotropically, which C-rescale does not support in GROMACS 2025, Parrinello-Rahman is used instead of C-rescale, and the box must be rectangular. A Berendsen barostat, when chosen, is kept in every stage, with
-maxwarn. Restrained stages under pressure getrefcoord-scaling = com. A membrane couples semi-isotropically. - Hydrogen mass repartitioning adds
mass-repartition-factor = 3and a 4 fs time step to every dynamics stage. grompp makes the lightest atoms three times heavier, taking the mass from the atom each is bonded to; the option exists since GROMACS 2024. - What grompp will say. Each file is checked against grompp's consistency rules; the tab of every file shows the verdict. The job script passes
-maxwarnonly to a grompp call whose file draws warnings that cannot be avoided, with a comment naming them: every GROMOS topology draws one (its twin-range parametrisation), and a Berendsen thermostat or barostat, when chosen, draws one each. - Restarts. With Skip stages that already finished on (the default), each stage runs only while its final
.grois missing, andmdrun -cpicontinues from its checkpoint, so a job that reaches its wall time can be submitted again and carries on; off, every stage runs from its start each time and no checkpoint is read. With a job array the.mdpfiles and an index built on the page stay in the submission directory and every task reads them there, so every run directory must hold the system that index was built from, atom for atom. - Index groups. The default groups port
analyse()from GROMACS'sindex.cppand matchgmx make_ndxbyte for byte, except that a nameless group is written as[ Group ]. make_ndx writes[ ]for a blank residue name, which GROMACS cannot read back: it takes the brackets for atom numbers and adds the group's atoms to the group before it. The suggested temperature groups couple solute and solvent (or membrane and solvent) separately when each is large enough, and are checked to cover every atom once, as grompp'sdo_numberingrequires.
Zips downloaded from this page were run with GROMACS 2025 (grompp and a short mdrun for every stage) on an AMBER protein with C-rescale, a CHARMM bilayer with semi-isotropic coupling, a GROMOS system as a job array with -maxwarn, a 4 fs run with hydrogen mass repartitioning, simulated annealing with OPLS-AA, steered pulling between groups built on the page with Parrinello-Rahman in production, and a coarse-grained system with Martini settings. Every preset was also passed through grompp 2022.6, 2023.5 and 2024.6, written for each of those releases.
The parameters behind the topology header
A GROMACS [ defaults ] directive declares the non-bonded function, the combination rule, whether 1‑4 pairs are generated, and the 1‑4 scaling factors fudgeLJ and fudgeQQ. These are properties of the force field and must match it.
The [ defaults ] line has the form:
; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ
nbfunc selects the non-bonded form (1 = Lennard-Jones). comb-rule selects how pair parameters are combined: rule 2 is Lorentz–Berthelot (arithmetic–geometric), while rules 1 and 3 are geometric. gen-pairs = yes generates missing 1‑4 pairs from the normal LJ parameters scaled by fudgeLJ. fudgeLJ scales 1‑4 Lennard-Jones interactions (used only when gen-pairs is yes); fudgeQQ scales 1‑4 electrostatics and is always applied.
Canonical values shipped by each force field:
| Force field | comb-rule | gen-pairs | fudgeLJ | fudgeQQ |
|---|---|---|---|---|
| AMBER (e.g. 99SB-ILDN) | 2 | yes | 0.5 | 0.8333 |
| CHARMM36 / CHARMM36m | 2 | yes | 1.0 | 1.0 |
| OPLS-AA | 3 | yes | 0.5 | 0.5 |
| GROMOS 54A7 | 1 | no | 1.0 | 1.0 |
| Martini 3 | 2 | no | 1.0 | 1.0 |
Because grompp reads whichever [ defaults ] line the topology supplies rather than inferring it from the force field name, an inconsistent combination (for example OPLS atom types with rule 2, or AMBER scaling on a CHARMM field) is accepted silently and yields physically wrong non-bonded and 1‑4 interactions. grompp also accepts only one [ defaults ] directive, and each force field's forcefield.itp already contains it, so the header includes that file and shows its values as a comment rather than writing a second copy. An override is written as instructions for editing a local copy of the force field, with a warning that it departs from the canonical values. AMBER99SB-ILDN, GROMOS 54A7 and OPLS-AA ship with GROMACS (amber99sb-ildn.ff, gromos54a7.ff, oplsaa.ff); CHARMM36 is a separate download from the MacKerell lab, and Martini 3 from cgmartini.nl, whose martini_v3.0.0.itp carries the [ defaults ] line. GROMOS lists its 1‑4 pairs explicitly, so it generates none. The topology header is not in the zip, so it cannot overwrite the topology you already have.
GPU offload & mdrun performance
The GPU flags follow the GROMACS developers' own performance guidance. mdrun can offload the short-range non-bonded (-nb), long-range PME (-pme), bonded (-bonded) and update/constraints (-update) work to the GPU. The tool enforces the documented rules:
- PME on GPU allows only one PME rank. When more than one rank is requested with
-pme gpu, the tool adds-npme 1automatically. - PME and bonded forces run on the GPU only in dynamics. mdrun refuses
-pme gpuand-bonded gpufor energy minimisation, and-pme gpufor a file without PME electrostatics (Martini’s reaction field), so the script leaves them out of those stages, with a comment above themdrunline. - Thread-MPI or MPI. The thread-MPI
gmxgets-ntmpi(1 unless you set it), with or without GPUs: given-ntompalone, a thread-MPImdrunstarts ranks until they fill every core the node shows, beyond the CPUs the job was given, and with a GPU in use it stops. The MPI buildgmx_mpirejects-ntmpi; it takes its ranks fromsrunormpirun, which the script uses when you ask for more than one node. Double-precision builds have no GPU support, so they get no GPU flags. -bonded gpurequires-nb gpu. Bonded offload is part of the same particle-particle workload, so the short-range non-bonded task must also be on the GPU; the tool warns if it is not.- GPU-resident mode (
-update gpu) cannot constrain all bonds of a protein (choose bonds to hydrogen), and mdrun refuses it with Nose-Hoover, virtual sites (a TIP4P water) and in minimisation, so the script leaves it out of every stage that has one of those and says why. It disables dynamic load balancing, and benefits from infrequent temperature/pressure coupling and a largernstcalcenergy(the developers suggest coupling every ≥ 50–100 steps). - Use
constraints = h-bonds, notall-bonds, with a 2 fs step: it is faster, required for GPU-resident mode, and is what most force fields were parametrised with. GROMOS is the exception: it was parametrised with every bond rigid, so the page writesall-bondsfor it, and mdrun then refuses-update gpufor a protein. - 1–3 MPI ranks per GPU is generally optimal; with GPU-resident mode and direct GPU communication, 1 rank/GPU is usually best.
- After a run, check
ns/dayand the PP/PME balance at the end ofmd.logto see where time is going.
The developers' reference example for a single fast GPU with a weak CPU is gmx mdrun -ntmpi 1 -nb gpu -pme gpu -bonded gpu -update gpu. The toggles default to -nb gpu -pme gpu, with -ntmpi 1 for the thread-MPI gmx; energy minimisation keeps only -nb gpu, and a stage without PME drops -pme gpu. Tick -bonded gpu and -update gpu to get the full example.
How the LAMMPS inputs are written
The LAMMPS tab writes an input for every stage, the two files they share and the job script that runs them in order. Every line that holds a choice carries the reason for it, and a click on a line under Run files (or the Explained view) says what it does in plain words, with its units and a link to its page in the LAMMPS manual. The command and style names, the packages, accelerated variants, syntax skeletons, keywords and defaults come from a table generated from the LAMMPS 29 Aug 2024 source and documentation; the explanations are STEMKit's own words, and the full text is on docs.lammps.org.
What each force field sets, from the LAMMPS manual's pages for its styles and the force field's own papers:
| Force field | Units | Pair style | Long-range | Time step | Rigid bonds |
|---|---|---|---|---|---|
| CHARMM36 | real | lj/charmmfsw/coul/long, switched 10–12 Å | PPPM, 10−6 | 2 fs | SHAKE |
| CHARMM22/27 | real | lj/charmm/coul/long, switched 10–12 Å | PPPM, 10−6 | 2 fs | SHAKE |
| AMBER | real | lj/cut/coul/long 10 Å, tail correction | PPPM, 10−5 | 2 fs | SHAKE |
| OPLS-AA | real | lj/cut/coul/long 11 Å, geometric mixing | PPPM, 10−5 | 2 fs | SHAKE |
| COMPASS / PCFF | real | lj/class2/coul/long 9.5 Å | PPPM, 10−5 | 1 fs | none |
| TIP3P, SPC/E water | real | lj/cut/coul/long 10 Å | PPPM, 10−5 | 2 fs | SHAKE |
| TIP4P/2005 water | real | lj/cut/tip4p/long 8.5 Å | pppm/tip4p, 10−5 | 2 fs | SHAKE |
| EAM, EAM alloy, Finnis-Sinclair | metal | eam, eam/alloy, eam/fs with your potential file | none | 1 fs | none |
| Tersoff, Stillinger-Weber | metal | tersoff, sw with your potential file | none | 1 fs | none |
| ReaxFF | real | reaxff, with fix qeq/reaxff | none | 0.25 fs | none |
| Lennard-Jones fluid | lj | lj/cut 2.5 σ | none | 0.005 τ | none |
- The files.
in.systemmakes the system (units, atom style, the styles, thenread_dataor a crystal built withlatticeandcreate_atoms); only the first stage reads it.in.settingsholds what a restart file does not keep (the long-range solver, neighbour lists, groups, the time step, and the coefficients of pair styles such aseamorreaxffthat write no restart data), and every stage reads it.in.min,in.nvt,in.nptandin.prodare the stages, chained by restart files:min.restart, thennvt.restart.<step>,npt.restart.<step>and production'srestart.<step>. - Stages. Minimisation (conjugate gradient by default) stops at the energy and force tolerances or the iteration limit. NVT equilibration draws new velocities at the temperature; NPT equilibration lets the density settle; production runs with the restraints released. Lengths in fs, ps or ns (τ in lj units) become steps at the time step, and output intervals become
thermo,dumpandrestartintervals. Restrained stages hold the solute's heavy atoms, or the group you name, withfix spring/selfat 1000 kJ/(mol·nm²), the strength of GROMACS'sposre.itp. - Thermostats and barostats. Nosé-Hoover chains (
fix nvt,fix npt) by default, withTdamp100 time steps andPdamp1000, as the LAMMPS manual suggests; stochastic velocity rescaling (fix temp/csvr) and Langevin are offered, and Berendsen for equilibration only, since it does not sample the right ensemble. The guide under the thermostat and barostat explains each. - Wall time and restarts. Each stage file takes two variables from
submit.sh:rstep, the step of the restart file to carry on from (−1 starts the stage), andtime_limit, the wall time LAMMPS may use.timer timeoutends the run cleanly before the job is killed, a restart file is written, andrun ... uptofinishes the same number of steps when the job is submitted again.submit.shskips the stages whose last restart file exists, carries on the one that was stopped, and keeps the three newest restart files of each stage. - Checked as LAMMPS reads it. Each input is read the way LAMMPS reads a script:
#comments,&at the end of a line, single, double and triple quotes, and$x,${name}and$(formula)substitutions. It is then followed from top to bottom, with each stage read together with the files it includes, and the page reports what LAMMPS would stop on (a style used before the box exists, a coefficient missing for a type, a group or fix that was never defined, a style the build lacks), what it warns about, and what could be better. The tab of every file shows the result, and the warnings LAMMPS will print on purpose (the wall-time stop, for one) are listed with the reason they are fine. - The data file stays in your browser. A data file dropped under System is read as
read_datareads it: the header, every section and its line count, the atom style from theAtomsline or its columns. The masses give the elements, the charges and geometry of the water give its model, and the summary gives the net charge and the density. The files then use it: SHAKE on the hydrogen masses and the water's angle type, the solute's heavy atoms for the restraints, the groups under Groups, the atom count for the output sizes.
Zips downloaded from this page were run with LAMMPS 29 Aug 2024 on two MPI ranks, every stage from minimisation to production with a job script that was stopped and submitted again: the solvated peptide of the LAMMPS examples with the CHARMM22/27 settings, and a copper crystal with the Cu_u3.eam embedded-atom potential.
LAMMPS accelerator packages & benchmarking
LAMMPS ships five accelerator packages, each appending a suffix to any supported style. The tool emits the correct command-line switches for each:
| Package | Suffix | Hardware | Switches |
|---|---|---|---|
| GPU | gpu | NVIDIA / AMD / Intel GPUs | -sf gpu -pk gpu N |
| KOKKOS | kk | GPUs, Xeon Phi, OpenMP | -k on g N -sf kk -pk kokkos |
| INTEL | intel | Intel CPUs / Xeon Phi | -sf intel -pk intel 0 |
| OPENMP | omp | Multicore CPUs (hybrid) | -sf omp -pk omp N |
| OPT | opt | Generic CPU pair styles | -sf opt |
LAMMPS parallelises with MPI, so the SLURM request uses --ntasks-per-node (ranks), not --cpus-per-task. The OPENMP package is the exception: it is a hybrid MPI × OpenMP scheme, so it uses both, srun -n R -c T lmp -sf omp -pk omp T, where -pk omp T matches --cpus-per-task. For GPU and KOKKOS runs, the number of MPI ranks per node usually matches the number of GPUs per node.
Performance and per-section timing lines LAMMPS prints at the end of the run, and only scale up the combination that measurably helps. Not every style has an accelerated variant, check the style's doc page for the available suffixes.PLUMED collective variables & enhanced sampling
The PLUMED tab builds a plumed.dat file for PLUMED 2.9, 2.10 or 2.11, chosen in the header of the System and setup panel, and checks its keywords, defaults and modules against that release. An action the chosen release lacks stays in the CV list but is marked (“needs PLUMED ≥ 2.10”, or “not in PLUMED 2.10”) and cannot be added; where the chosen release has a replacement, the page names it. Collective variables are grouped by category and each exposes the exact keywords from the PLUMED source, so you get correct syntax without reading the code. Add one or more CVs, give them labels, then choose a bias method.
A CV line has the form label: ACTION KEY=VALUE ..., for example phi: TORSION ATOMS=5,7,9,15. Labels become the ARG list of the bias. The generator supports standard, well-tempered (adding BIASFACTOR and TEMP) and parallel-bias (PBMETAD) metadynamics, OPES (OPES_METAD), a harmonic RESTRAINT for umbrella windows, a MOVINGRESTRAINT for steered MD, UPPER_WALLS and LOWER_WALLS, and ABMD.
Speed optimisations (from the PLUMED performance guidance):
- Store the bias on a grid (
GRID_MIN/MAX/BIN). Without it, every step re-sums all deposited hills, so a long metadynamics run slows down continuously; with a grid the cost stays flat. CALC_RCTwithRCT_USTRIDE>1computes the time-dependentc(t)reweighting factor on the fly; a larger stride reduces its overhead. It requires the bias to be on a grid.- Set
D_MAXon the switching function of every multicolvar (COORDINATIONNUMBER, the SteinhardtQ3/Q4/Q6and theirLOCAL_forms,TETRAHEDRAL). These sum over every pair of atoms; withD_MAXset, PLUMED finds the pairs closer than it with linked cells instead of scanning them all, which the developers call a "colossal speedup". The tool foldsR_0/D_0/D_MAXinto a singleSWITCH={RATIONAL ...}block for you and warns ifD_MAXis missing. - A neighbour list for
COORDINATION.COORDINATIONis not a multicolvar and has no linked cells: it visits every pair on its list at every step, with or withoutD_MAX, which only brings the switching function to zero there. What speeds up a largeCOORDINATIONisNLIST: PLUMED rebuilds the list of pairs closer thanNL_CUTOFFeveryNL_STRIDEsteps and computes only those in between, and for a small group against a large one (a ligand in water) it asks the MD code for the nearby atoms only. SetNL_CUTOFFwell beyond where the switch has decayed, andNL_STRIDEshort enough that no atom comes into range between two updates. The tool warns ifNLISTis set without both, or withNL_CUTOFFunder twiceR_0. WALKERS_MPIruns multiple walkers that share one bias, which fills the free-energy surface faster on an MPI build.
plumed info --version prints on the machine that runs the job, and read an action's keywords there with plumed manual --action=<NAME>. The file's header names the target release and the command that checks the file before the run, plumed driver --natoms N --parse-only --plumed plumed.dat, with N the number of atoms. Grid bounds default to the CV range placeholders (e.g. -pi/pi for torsions), set them to your actual CV limits.Structure / order parameters
The Steinhardt parameters Q3, Q4 and Q6 are bond-orientational order parameters that quantify local crystalline structure, the standard way to follow nucleation, melting and phase changes. They act on a SPECIES group with a switching function (R_0, D_0), and the MEAN flag reduces the per-atom values to one scalar CV suitable for biasing. Q6 is the most widely used; Q4 helps separate cubic (FCC/BCC) environments. A per-atom COORDINATIONNUMBER (local neighbour count) is offered in the same category.
Custom CVs
The Custom category lets you write any PLUMED action line directly, the tool only prepends the label. Use it for CVs outside the catalogue, for optional keywords a preset does not expose, or to combine existing CVs with the CUSTOM/MATHEVAL function action, e.g. diff: CUSTOM ARG=d1,d2 FUNC=x-y PERIODIC=NO. Whatever you type is passed through verbatim, so it is as flexible as writing plumed.dat by hand while keeping the labelling, bias wiring and PRINT list consistent.
The scheduler side
The batch script follows widely published cluster best-practice guides, whichever scheduler is selected.
#!/bin/bash -e, a failing command aborts the job immediately, so failures surface asFAILEDinsacct(or the equivalent) instead of continuing with a corrupt state. Whether the-eon that first line reaches bash depends on how the scheduler starts the script: Grid Engine's defaultshell_start_modeignores the shebang line and runs the script through the-Sshell, and LSF's documentation does not say whether the options on it survive, so the PBS, LSF and Grid Engine scripts repeat it as an explicitset -e.- Explicit memory, without it, many sites apply a small default (often ~1 GB/CPU) that quietly kills MD jobs. The request is translated into each scheduler's own unit:
--mem=32G,mem=32gbin a PBS chunk,rusage[mem=32768]in MB for LSF,h_vmem=32Gfor Grid Engine. OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK(plusSRUN_CPUS_PER_TASKfor Slurm > 22.05), prevents thread over-subscription in hybrid runs. PBS setsNCPUSfromompthreadsfor rank 0, so the script reads it with the requested count as the fallback; LSF and Grid Engine expose only slot counts, so the requested value is written in, next to the directive it matches.- Only set
--cpus-per-taskfor multithreaded codes andntasks>1for MPI codes,gmx mdrunis the hybrid case handled here. - Minimal partition specification, leaving the partition or queue unset (unless special hardware is needed) gives the scheduler more freedom and shortens queue time.
- Request only what you use, over-requesting CPUs, memory or GPUs leaves resources idle (nobody else can use them) and lengthens your own queue time. Get a job working on one GPU and confirm it is actually used before scaling up, and size memory from the job's real peak usage (e.g. the
MaxRSSfield insacct).
How the request maps onto each scheduler
| Request | SLURM | PBS Pro / OpenPBS | LSF | Grid Engine |
|---|---|---|---|---|
| Threaded (GROMACS) | --nodes=N --ntasks-per-node=1 --cpus-per-task=C | select=N:ncpus=C:mpiprocs=1:ompthreads=C | -n N×C -R "span[ptile=C]" | -pe <pe> N×C |
| MPI (LAMMPS) | --ntasks-per-node=M --cpus-per-task=T | ncpus=M×T:mpiprocs=M:ompthreads=T | -n N×M×T -R "span[ptile=M×T]" | -pe <pe> N×M×T |
| GPUs per node | --gres=gpu:G | :ngpus=G (site-specific name) | -gpu "num=G" | commented placeholder, site-specific |
| Memory per node | --mem=32G | :mem=32gb | rusage[mem=32768] (MB by default) | -l h_vmem=32G (often per slot) |
| Wall time | --time=D-HH:MM:SS | -l walltime=HH:MM:SS | -W HH:MM (seconds rounded up) | -l h_rt=HH:MM:SS |
| Job array | --array=1-10%2, $SLURM_ARRAY_TASK_ID | -J 1-10%2, $PBS_ARRAY_INDEX | -J "name[1-10]%2", $LSB_JOBINDEX | -t 1-10 -tc 2 (1-based), $SGE_TASK_ID |
| Launch | srun | mpirun -np $(wc -l < "$PBS_NODEFILE") | mpirun -np $LSB_DJOB_NUMPROC | mpirun -np $NSLOTS |
| Submit | sbatch submit.sh | qsub submit.sh | bsub < submit.sh | qsub submit.sh |
N nodes, C threads per task, M MPI tasks per node, T threads per task. LSF and Grid Engine count slots (cores on most sites) rather than tasks, so a hybrid run divides the slot count by the thread count at launch. SLURM and Grid Engine open the log file as the job starts, so logs/ must exist before submission; the submit hint under the script includes the mkdir. PBS and LSF spool the streams and copy them back when the job ends, so the script's own mkdir -p logs is in time there.
References & documentation
- GROMACS reference manual. Topology file formats (
[ defaults ], comb-rule, fudgeLJ/fudgeQQ). manual.gromacs.org. - GROMACS user guide. System preparation (EM → NVT → NPT staging;
-rrestraints,-tcheckpoint continuation). system preparation. - GROMACS user guide. Getting good performance from mdrun (GPU offload rules: PME = 1 rank,
-bondedneeds-nb gpu, GPU-resident constraints, ranks-per-GPU). mdrun-performance. - GROMACS 2025.1 user guide. Molecular dynamics parameters (.mdp options), every option the page writes, lists and links to, and Force fields (the cut-off conventions of each). mdp-options, force-fields.
- GROMACS 2025.1 reference manual. Molecular dynamics: temperature coupling, pressure coupling and position restraints under pressure. molecular-dynamics. GROMACS 2024 release notes, Flexible hydrogen mass repartitioning using grompp. release notes.
gmx make_ndx: gmx make_ndx. - Bussi, G., Donadio, D., & Parrinello, M. (2007). Canonical sampling through velocity rescaling. J. Chem. Phys., 126, 014101. (V-rescale.)
- Bernetti, M., & Bussi, G. (2020). Pressure control using stochastic cell rescaling. J. Chem. Phys., 153, 114107. (C-rescale.)
- Parrinello, M., & Rahman, A. (1981). Polymorphic transitions in single crystals: A new molecular dynamics method. J. Appl. Phys., 52, 7182–7190.
- Hopkins, C. W., Le Grand, S., Walker, R. C., & Roitberg, A. E. (2015). Long-time-step molecular dynamics through hydrogen mass repartitioning. J. Chem. Theory Comput., 11, 1864–1874.
- Force-field
forcefield.itpfiles, the[ defaults ]lines used for the table above:amber99sb-ildn.ffandoplsaa.ffas distributed with GROMACS, and the MacKerell lab's GROMACS port of CHARMM36, which is not distributed with GROMACS. - LAMMPS documentation. Accelerator packages (GPU, KOKKOS, INTEL, OPENMP, OPT; suffixes
gpu/kk/intel/omp/opt) and command-line options. Speed_packages, Run_options. - LAMMPS documentation (29 Aug 2024). Commands, every command and style the LAMMPS tab writes, lists and links to; read_data, read_restart and write_restart (what a restart file keeps), fix nvt/npt/nph (damping times), fix shake, timer (stopping before the wall time) and units. Commands_all, read_data, read_restart, fix_nh, fix_shake, timer, units.
- Thompson, A. P., et al. (2022). LAMMPS: a flexible simulation tool for particle-based materials modeling at the atomic, meso, and continuum scales. Comp. Phys. Comm., 271, 108171.
- Martyna, G. J., Tobias, D. J., & Klein, M. L. (1994). Constant pressure molecular dynamics algorithms. J. Chem. Phys., 101, 4177–4189. (The barostat of
fix npt.) - Ryckaert, J.-P., Ciccotti, G., & Berendsen, H. J. C. (1977). Numerical integration of the cartesian equations of motion of a system with constraints: molecular dynamics of n-alkanes. J. Comput. Phys., 23, 327–341. (SHAKE.)
- University of Chicago RCC and NatLab Rockies HPC. LAMMPS on SLURM (OPENMP hybrid
-sf omp -pk omp Nwithsrun -n R -c T; INTEL/OPT usage; benchmarking). RCC, NatLabRockies. - SchedMD. Slurm
sbatchdocumentation and Quick Start User Guide. slurm.schedmd.com/sbatch, quickstart. - Altair Engineering. PBS Professional 2021.1 User's Guide (submitting jobs,
selectandplace, job arrays, environment variables), and the OpenPBSqsub(1B)andpbs_resources(7B)man pages (mpiprocs,ompthreads,place). PBS Professional User's Guide, qsub.1B, pbs_resources.7B. - IBM. IBM Spectrum LSF 10.1 command reference:
bsub(-n,-R "span[ptile]",-R "rusage[mem]",-gpu,-W, job arrays,%J/%I) and the lsf.conf reference (LSF_UNIT_FOR_LIMITS,LSB_GPU_NEW_SYNTAX,LSB_BSUB_PARSE_SCRIPT). bsub, LSB_GPU_NEW_SYNTAX, LSB_BSUB_PARSE_SCRIPT. - Open Grid Scheduler.
qsub(1)(-pe,-l h_rt,-t/-tc,-owith a directory,-S,-cwd, environment variables),sge_types(1)(memory specifiers) andqueue_conf(5)(shell_start_mode) man pages. qsub, sge_types, queue_conf. - EuroCC Spain. SLURM Best Practice Guide for HPC Users (bash
-e, memory, parallelism, job arrays). - NASA NCCS. Slurm Best Practices on Discover (minimal partition specification; time/memory/node requirements). nccs.nasa.gov.
- RIT Research Computing. Slurm Quick Start Tutorial (sbatch options,
%x/%jlog variables, memory units, requesting only what you use, verifying GPU utilisation). research-computing.git-pages.rit.edu. - PLUMED consortium. CV documentation and METAD reference (PLUMED v2.9). colvar list, METAD. CV keywords verified against the
colvarmodule source. - Tribello, G. A., Bonomi, M., Branduardi, D., Camilloni, C., & Bussi, G. (2014). PLUMED 2: New feathers for an old bird. Comp. Phys. Comm., 185(2), 604–613. See also the PLUMED performance-optimisation guidance (grid, neighbour lists,
RCT_USTRIDE). - Barducci, A., Bussi, G., & Parrinello, M. (2008). Well-tempered metadynamics. Phys. Rev. Lett., 100, 020603.
- Steinhardt, P. J., Nelson, D. R., & Ronchetti, M. (1983). Bond-orientational order in liquids and glasses. Phys. Rev. B, 28, 784. (Basis of the
Q3/Q4/Q6order parameters; see the PLUMEDQ6action docs.) - Abraham, M. J., et al. (2015). GROMACS: High performance molecular simulations. SoftwareX, 1–2, 19–25.
Frequently asked questions
GROMACS
Why did the tool add -npme 1 or warn about my GPU flags?
-npme 1 is added when you request -pme gpu with more than one rank. -bonded gpu requires -nb gpu because bonded offload is part of the same particle-particle workload. -pme gpu, -bonded gpu and -update gpu run only in dynamics, so energy minimisation keeps -nb gpu alone; -pme gpu needs PME electrostatics, so a Martini (reaction-field) stage leaves it out; and -update gpu (GPU-resident mode) cannot constrain all bonds of a protein and is refused with Nose-Hoover or virtual sites such as TIP4P’s, so stages with those leave it out. The script says above each mdrun line what it left out and why. The thread-MPI gmx also gets -ntmpi 1, which a GPU run given -ntomp needs and which keeps a run without GPUs to the CPUs the job was given, and the MPI build gmx_mpi never gets -ntmpi, which it rejects.How are the GROMACS stages chained together?
grompp reads the previous stage's .gro via -c, and, when velocities carry over, its checkpoint via -t (NVT → NPT → Production); the .mdp file then says continuation = yes and gen-vel = no. Energy minimisation writes no checkpoint, so the first dynamics stage draws new velocities instead. When a stage has position restraints, -r is added pointing at the same coordinate file. Production has restraints switched off by default, and a warning appears if you tick them. With Skip stages that already finished on (the default), each stage is skipped once its final .gro exists, so a resubmitted job carries on where it stopped; off, every stage runs from its start each time.Which thermostat and barostat should I use?
tau-t, tau-p, the compressibility and semi-isotropic coupling for membranes.What does hydrogen mass repartitioning do, and which GROMACS do I need?
mass-repartition-factor = 3, grompp makes every hydrogen three times heavier and takes the extra mass from the atom it is bonded to, so the total mass, and with it the equilibrium properties, do not change, while the fast angle vibrations of hydrogens slow down enough for a 4 fs time step with the bonds to hydrogen constrained. The dynamics run slightly slower, which matters for rates and diffusion. The option exists since GROMACS 2024, so with 2023 or 2022 chosen under GROMACS version the switch is off; for those, repartition the topology itself and set the time step to 4 fs. grompp notes that bonds such as C=O then oscillate in fewer than ten steps, which is expected (a box of water and ions has no such bonds, and no note).Why does submit.sh pass -maxwarn for GROMOS?
-maxwarn a single warning stops it. The page counts the warnings each .mdp file will draw and passes exactly that many, with a comment above the call naming each one; files that draw none get no -maxwarn, so an unexpected warning still stops the job.Where do the temperature groups come from, and when do I need an index file?
Protein Non-Protein for a solute in water, which GROMACS makes by itself, System for a liquid, and SOLU MEMB SOLV for a membrane, as CHARMM-GUI names them in its index file. Load your structure under Index groups and the page recommends groups for it, builds index.ndx, checks that the groups cover every atom exactly once, and passes the file with -n. Any name GROMACS does not make itself needs an index file.Can I check, or continue from, an .mdp file I already have?
Can I set an option the builder has no field for?
.mdp option of GROMACS 2025.1, by section, with its default, unit, allowed values and the manual's text. Set a value for one file or for all of them; the file then shows it with a comment, and Reset to generated puts back what the builder writes.Why does choosing a force field change the combination rule and fudge factors?
[ defaults ] line: AMBER uses rule 2 with 0.5/0.8333, CHARMM36 uses rule 2 with 1.0/1.0, OPLS-AA uses rule 3 with 0.5/0.5, and GROMOS 54A7 rule 1 with no generated pairs. Mixing them produces a silently wrong topology. The same choice sets the cut-offs and time step of the .mdp files.What exactly are fudgeLJ and fudgeQQ?
fudgeLJ scales the 1‑4 Lennard-Jones term and is applied only when gen-pairs is yes; fudgeQQ scales the 1‑4 electrostatics and is always applied.Can I override the auto-set parameters?
LAMMPS
Why does LAMMPS use tasks instead of CPUs per task?
--ntasks-per-node (MPI ranks per node), whereas GROMACS mdrun is threaded and uses --cpus-per-task. The one exception is the LAMMPS OPENMP package, a hybrid MPI × OpenMP scheme that uses both, the tool then sets -pk omp N to match CPUs per task. For GPU or KOKKOS runs, MPI ranks per node usually matches GPUs per node.Which LAMMPS accelerator should I pick?
Performance and timing breakdown LAMMPS prints at the end, and scale up only what measurably helps.What files does the LAMMPS tab write?
submit.sh, an input for every stage switched on (in.min, in.nvt, in.npt, in.prod), in.system, which makes the system and is read by the first stage only, in.settings, which every stage reads because a restart file does not keep what it sets, and a README that says what each file is for and how to run them by hand. With PLUMED coupled, the PLUMED tab's plumed.dat and the files its INCLUDE lines read go in too. Your data file, or the potential file of a metal, goes next to them; submit.sh stops before the first stage if one is missing.How does a LAMMPS job carry on after its wall time?
timer timeout ends the run cleanly before the scheduler kills the job, after a restart file is written. Submit the same submit.sh again: stages whose last restart file exists are skipped, the stopped one reads its newest restart file (-var rstep) and finishes the same number of steps (run ... upto), and its log and trajectory are appended to, with no frame written twice. LAMMPS prints "Wall time limit reached" when that happens; it is expected.Can I check a LAMMPS input I already have?
& continuation lines, quotes and $ variables) and followed from top to bottom, loops and if included, and you get what LAMMPS would stop on, what it warns about and what could be better, each with its line and a link to the command's page in the manual, then every line explained in plain words with its units. Paste what lmp -h prints on your cluster and the check knows which packages your build has; drop a data file and it is summarised (atoms, types and their elements, water, charge, density) and checked as read_data reads it. From the builder checks the file shown under Run files.What does All commands list in the LAMMPS tab?
/gpu, /kk, /omp, /intel, /opt), with a link to its page on docs.lammps.org. The ones your run files use are marked, with the lines that use them.PLUMED
How does the PLUMED builder help me?
NOPBC or COMPONENTS, so you get correct plumed.dat syntax without reading the code. You add CVs, label them, pick a bias method (standard, well-tempered or parallel-bias MetaD, OPES, a harmonic or moving restraint, upper or lower walls, or ABMD), and toggle speed options. The output targets PLUMED 2.9, 2.10 or 2.11, whichever you pick in the header of the System and setup panel, and its keywords are checked against that release.What is the difference between standard and well-tempered metadynamics here?
BIASFACTOR (and TEMP), so the bias converges more smoothly. The builder adds those two keywords when you select the well-tempered variant, and OPES is offered as a modern alternative.Why does the PLUMED tab warn about grids and CALC_RCT?
CALC_RCT (on-the-fly c(t) reweighting) only works when the bias is on a grid, so the tool warns if you enable reweighting without it.Schedulers and job scripts
Why did the script add things I did not ask for (bash -e, memory, log files)?
#!/bin/bash -e makes the job stop and report FAILED on the first error; explicit --mem stops a small site default from killing the job; and --output/--error capture logs per job or per array task under logs/.Which schedulers are supported, and what changes between them?
#SBATCH, #PBS, #BSUB or #$ directives, with the matching job-id and array-index variables, the launch command (srun or mpirun with the task count taken from the allocation) and the submit command under the script. The mapping table in the method section lists every directive. The SLURM output is unchanged from earlier versions of this tool.Why does LSF need bsub < submit.sh rather than bsub submit.sh?
bsub reads the #BSUB lines only when the script arrives on standard input. Given as an argument, the file runs as a plain command and every directive is ignored, so the job would be submitted with the queue defaults.What does "site-specific" mean in the generated script?
ngpus on most sites) or Grid Engine (no standard at all, so the script carries a commented placeholder), the Grid Engine parallel-environment name (qconf -spl lists them), the memory resource and its unit, and whether an LSF slot is a core. Check each against your cluster's documentation before submitting; the comment sits next to the line it concerns.Why does the submit hint start with mkdir -p logs?
logs/ does not exist yet, the job fails before the script's own mkdir can run. PBS and LSF spool the output and copy it back when the job ends, so for them the mkdir inside the script is in time.This page
Where are my settings kept, and how do I share them?
Is this a validated production input?
.mdp files pass grompp's rules as the page reproduces them, and zips from the page have been run with GROMACS 2025, but your topology and system decide the rest. Read grompp's own output (the page lists what to expect), check the temperature, pressure and density of the equilibration before production, and check module names, partitions, GPU flags and account settings against your own cluster's documentation.Is my data uploaded anywhere?
The generator runs entirely in your browser, no data leaves your device.