dat
dlg
edi
-edo
edr
ene
eps
algorithms used in |Gromacs|.
Before version 4.6, |Gromacs| always used pair-lists based on groups of
-particles. These groups of particles were orginally charge-groups, which were
+particles. These groups of particles were originally charge-groups, which were
necessary with plain cut-off electrostatics. With the use of PME (or
reaction-field with a buffer), charge groups are no longer necessary
(and are ignored in the Verlet scheme). In |Gromacs| 4.6 and later, the
with bio-molecular systems dominated by water.
Without PME, the group cut-off scheme should generally be combined
-with a buffered pair-list to help avoid artefacts. However, the
+with a buffered pair-list to help avoid artifacts. However, the
group-scheme kernels that can implement this are much slower than
either the unbuffered group-scheme kernels, or the buffered
Verlet-scheme kernels. Use of the Verlet scheme is strongly encouraged
exact cut-off shift/switch always
potential-shift interactions yes yes
potential-switch interactions yes yes
-force-switch interations yes yes
+force-switch interactions yes yes
switched potential yes yes
switched forces yes yes
non-periodic systems yes Z + walls
slower. The performance of the Verlet scheme with the new non-bonded
kernels is independent of system composition and is intended to always
run with a buffered pair-list. Typically, buffer size is 0 to 10% of
-the cut-off, so you could win a bit of peformance by reducing or
+the cut-off, so you could win a bit of performance by reducing or
removing the buffer, but this might not be a good trade-off of
simulation quality.
by being set in your shell to any non-NULL value. Specific
requirements are described below if other values need to be set. You
should consult the documentation for your shell for instructions on
-how to set environment variables in the current shell, or in config
+how to set environment variables in the current shell, or in configuration
files for future shells. Note that requirements for exporting
environment variables to jobs run under batch control systems vary and
you should consult your local documentation for details.
generic, preferred for input
:ref:`edi`
essential dynamics constraints input for :ref:`gmx mdrun`
-:ref:`edo`
- essential dynamics constraints output for :ref:`gmx mdrun`
:ref:`eps`
Encapsulated Postscript
:ref:`log`
output from the programs in the <tt>ESSDYN</tt> menu of the
<A HREF="http://www.sander.embl-heidelberg.de/whatif/">WHAT IF</A> program.
-.. _edo:
-
-edo
----
-
-Files with the edo file extension are generated by :ref:`gmx mdrun`
-if Molecular Dynamics is performed with Essential Dynamics
-constraints. Depending on the parameters set in the :ref:`edi`:
-file, edo files may contain projections of positions,
-velocities and forces onto selected eigenvectors during the run as well
-as RMSD values, or information about specific types of constraints.
-Specific results can be extracted from the edo files with standard Unix
-utilities like ``awk``.
-
.. _edr:
edr
energies as generated during your :ref:`gmx mdrun`.
The file can be transformed to a portable energy file (portable
-accross hardware platforms), the :ref:`edr` file using the program
+across hardware platforms), the :ref:`edr` file using the program
:ref:`gmx eneconv`.
See also :ref:`gmx energy`.
itp
---
-The itp file extension stands for include toplogy. These files are included in
+The itp file extension stands for include topology. These files are included in
topology files (with the :ref:`top` extension).
.. _log:
thing twice, the **last** is used (:ref:`gmx grompp` gives you a note when
overriding values). Dashes and underscores on the left hand side are ignored.
-The values of the options are reasonable values for a 1 nanosecond
+The values of the options are values for a 1 nanosecond
MD run of a protein in a box of water.
+**Note:** The parameters chosen (*e.g.,* short-range cutoffs) depend on the
+force field being used.
+
::
- title = Yo
- cpp = /lib/cpp
- include = -I../top
- define =
integrator = md
dt = 0.002
nsteps = 500000
- nstxout = 5000
- nstvout = 5000
+
nstlog = 5000
- nstenergy = 250
- nstxout-compressed = 250
- compressed-x-grps = Protein
- energygrps = Protein SOL
- nstlist = 10
- ns-type = grid
- rlist = 0.8
- coulombtype = cut-off
- rcoulomb = 1.4
- rvdw = 0.8
- tcoupl = Berendsen
- tc-grps = Protein SOL
- tau-t = 0.1 0.1
- ref-t = 300 300
- Pcoupl = Berendsen
- tau-p = 1.0
- compressibility = 4.5e-5
- ref-p = 1.0
- gen-vel = yes
- gen-temp = 300
- gen-seed = 173529
+ nstenergy = 5000
+ nstxout-compressed = 5000
+
+ continuation = yes
constraints = all-bonds
+ constraint-algorithm = lincs
-With this input :ref:`gmx grompp` will produce
-an ``mdout.mdp`` with all the options and descriptions:
+ cutoff-scheme = Verlet
-::
+ coulombtype = PME
+ rcoulomb = 1.0
+
+ vdwtype = Cut-off
+ rvdw = 1.0
+ DispCorr = EnerPres
- ; VARIOUS PREPROCESSING OPTIONS =
- title = Yo
- cpp = /lib/cpp
- include = -I../top
- define =
+ tcoupl = V-rescale
+ tc-grps = Protein SOL
+ tau-t = 0.1 0.1
+ ref-t = 300 300
- ; RUN CONTROL PARAMETERS =
- integrator = md
- ; start time and timestep in ps =
- tinit = 0
- dt = 0.002
- nsteps = 500000
- ; number of steps for center of mass motion removal =
- nstcomm = 1
- comm-grps =
-
- ; LANGEVIN DYNAMICS OPTIONS =
- ; Temperature, friction coefficient (amu/ps) and random seed =
- bd-temp = 300
- bd-fric = 0
- ld-seed = 1993
-
- ; ENERGY MINIMIZATION OPTIONS =
- ; Force tolerance and initial step-size =
- emtol = 100
- emstep = 0.01
- ; Max number of iterations in relax-shells =
- niter = 20
- ; Frequency of steepest descents steps when doing CG =
- nstcgsteep = 1000
-
- ; OUTPUT CONTROL OPTIONS =
- ; Output frequency for coords (x), velocities (v) and forces (f) =
- nstxout = 5000
- nstvout = 5000
- nstfout = 0
- ; Output frequency for energies to log file and energy file =
- nstlog = 5000
- nstenergy = 250
- ; Output frequency and precision for xtc file =
- nstxout-compressed = 250
- compressed-x-precision = 1000
- ; This selects the subset of atoms for the xtc file. You can =
- ; select multiple groups. By default all atoms will be written. =
- compressed-x-grps = Protein
- ; Selection of energy groups =
- energygrps = Protein SOL
-
- ; NEIGHBORSEARCHING PARAMETERS =
- ; nblist update frequency =
- nstlist = 10
- ; ns algorithm (simple or grid) =
- ns-type = grid
- ; Periodic boundary conditions: xyz or none =
- pbc = xyz
- ; nblist cut-off =
- rlist = 0.8
-
- ; OPTIONS FOR ELECTROSTATICS AND VDW =
- ; Method for doing electrostatics =
- coulombtype = cut-off
- rcoulomb-switch = 0
- rcoulomb = 1.4
- ; Dielectric constant (DC) for cut-off or DC of reaction field =
- epsilon-r = 1
- ; Method for doing Van der Waals =
- vdw-type = Cut-off
- ; cut-off lengths =
- rvdw-switch = 0
- rvdw = 0.8
- ; Apply long range dispersion corrections for Energy and Pressure =
- DispCorr = No
- ; Spacing for the PME/PPPM FFT grid =
- fourierspacing = 0.12
- ; FFT grid size, when a value is 0 fourierspacing will be used =
- fourier-nx = 0
- fourier-ny = 0
- fourier-nz = 0
- ; EWALD/PME/PPPM parameters =
- pme-order = 4
- ewald-rtol = 1e-05
- epsilon-surface = 0
-
- ; OPTIONS FOR WEAK COUPLING ALGORITHMS =
- ; Temperature coupling =
- tcoupl = Berendsen
- ; Groups to couple separately =
- tc-grps = Protein SOL
- ; Time constant (ps) and reference temperature (K) =
- tau-t = 0.1 0.1
- ref-t = 300 300
- ; Pressure coupling =
- Pcoupl = Berendsen
- Pcoupltype = Isotropic
- ; Time constant (ps), compressibility (1/bar) and reference P (bar) =
- tau-p = 1.0
+ pcoupl = Parrinello-Rahman
+ tau-p = 2.0
compressibility = 4.5e-5
ref-p = 1.0
- ; SIMULATED ANNEALING CONTROL =
- annealing = no
- ; Time at which temperature should be zero (ps) =
- zero-temp-time = 0
-
- ; GENERATE VELOCITIES FOR STARTUP RUN =
- gen-vel = yes
- gen-temp = 300
- gen-seed = 173529
-
- ; OPTIONS FOR BONDS =
- constraints = all-bonds
- ; Type of constraint algorithm =
- constraint-algorithm = Lincs
- ; Do not constrain the start configuration =
- unconstrained-start = no
- ; Relative tolerance of shake =
- shake-tol = 0.0001
- ; Highest order in the expansion of the constraint coupling matrix =
- lincs-order = 4
- ; Lincs will write a warning to the stderr if in one step a bond =
- ; rotates over more degrees than =
- lincs-warnangle = 30
- ; Convert harmonic bonds to morse potentials =
- morse = no
-
- ; NMR refinement stuff =
- ; Distance restraints type: No, Simple or Ensemble =
- disre = No
- ; Force weighting of pairs in one distance restraint: Equal or Conservative =
- disre-weighting = Equal
- ; Use sqrt of the time averaged times the instantaneous violation =
- disre-mixed = no
- disre-fc = 1000
- disre-tau = 0
- ; Output frequency for pair distances to energy file =
- nstdisreout = 100
-
- ; Free energy control stuff =
- free-energy = no
- init-lambda = 0
- delta-lambda = 0
- sc-alpha = 0
- sc-sigma = 0.3
-
- ; Non-equilibrium MD stuff =
- acc-grps =
- accelerate =
- freezegrps =
- freezedim =
- cos-acceleration = 0
- energygrp-excl =
-
- ; Electric fields =
- ; Format is number of terms (int) and for all terms an amplitude (real) =
- ; and a phase angle (real) =
- E-x =
- E-xt =
- E-y =
- E-yt =
- E-z =
- E-zt =
-
- ; User defined thingies =
- user1-grps =
- user2-grps =
- userint1 = 0
- userint2 = 0
- userint3 = 0
- userint4 = 0
- userreal1 = 0
- userreal2 = 0
- userreal3 = 0
- userreal4 = 0
+With this input :ref:`gmx grompp` will produce a commented file with the default name
+``mdout.mdp``. That file will contain the above options, as well as all other
+options not explicitly set, showing their default values.
.. _mtx:
databank file format describes the positions of atoms in a molecular
structure. Coordinates are read from the ATOM and HETATM records,
until the file ends or an ENDMDL record is encountered.
-GROMACS programs can read and write a simlation box in the
+GROMACS programs can read and write a simulation box in the
CRYST1 entry.
The pdb format can also be used as a trajectory format:
-several structures, seperated by ENDMDL, can be read from
+several structures, separated by ENDMDL, can be read from
or written to one file.
Example
+++++++
-An pdb file should look like this::
+A pdb file should look like this::
ATOM 1 H1 LYS 1 14.260 6.590 34.480 1.00 0.00
ATOM 2 H2 LYS 1 13.760 5.000 34.340 1.00 0.00
rtp
---
-The rtp file extension stands for residue toplogy.
+The rtp file extension stands for residue topology.
Such a file is needed by :ref:`gmx pdb2gmx`
to make a GROMACS topology for a protein contained in a :ref:`pdb`
file. The file contains the default interaction type for the 4 bonded
:ref:`gmx pdb2gmx` sets the number exclusions to 3, which
means that interactions between atoms connected by at most 3 bonds are
excluded. Pair interactions are generated for all pairs of atoms which are
-seperated by 3 bonds (except pairs of hydrogens).
+separated by 3 bonds (except pairs of hydrogens).
When more interactions need to be excluded, or some pair interactions should
not be generated, an ``[exclusions]`` field can be added, followed by
-pairs of atom names on seperate lines. All non-bonded and pair interactions
+pairs of atom names on separate lines. All non-bonded and pair interactions
between these atoms will be excluded.
A sample is included below.
:ref:`gmx trjconv`). It is easier to do a correct "single-point" energy
evaluation with this feature than a 0-step simulation.
-Neighbour searching is normally performed for every frame in the
+Neighbor searching is normally performed for every frame in the
trajectory, since :ref:`gmx mdrun` can no longer assume anything about how the
structures were generated. If :mdp:`nstlist` is zero, then only one
-neighbour list will be constructed. Naturally, no update or constraint
+neighbor list will be constructed. Naturally, no update or constraint
algorithms are ever used.
Running a simulation in reproducible mode
more control is useful. `mdrun -nsteps 100` overrides the [.mdp] file
and executes 100 steps. `mdrun -maxh 2.5` will terminate the
simulation shortly before 2.5 hours elapse, which can be useful when
-running under cluster queues (as long as the queueing system does not
+running under cluster queues (as long as the queuing system does not
ever suspend the simulation).
Running a membrane protein embedding simulation
with a procedure similar to genbox, but since lipids are much larger
than water molecules it will lead to a large vacuum layer between the
protein and membrane if we remove all molecules where any atom is
-overlapping. Instead, this module works by first artifically shrinking
+overlapping. Instead, this module works by first artificially shrinking
the protein in the xy-plane, then it removes lipids that overlap with
a much smaller core, after which we gradually push the protein atoms
back to their initial positions, while using normal dynamics for the
To use membrane embedding, start by building a lipid bilayer that is
just-so-slightly larger in the xy-plane than what you expect to need
in the end, and make sure you have enough water outside the membrane
-to accomodate globular domains. Place the protein in the same coordinate
+to accommodate globular domains. Place the protein in the same coordinate
file (and topology) as your lipid bilayer, and make sure it is in the
orientation and position you want right in the middle of the bilayer.
and configurable intelligence to detect your hardware and make pretty
effective use of that hardware. For a lot of casual and serious use of
:ref:`gmx mdrun`, the automatic machinery works well enough. But to get the
-most from your hardware to maximise your scientific quality, read on!
+most from your hardware to maximize your scientific quality, read on!
Hardware background information
-------------------------------
inform the user about the choices made and possible consequences.
A number of command-line parameters are available to vary the default
-behaviour.
+behavior.
``-nt``
The total number of threads to use. The default, 0, will start as
``-ntomp``
The total number of OpenMP threads per rank to start. The
default, 0, will start one thread on each available core.
- Alternatively, mdrun will honour the appropriate system
+ Alternatively, mdrun will honor the appropriate system
environment variable (e.g. ``OMP_NUM_THREADS``) if set.
``-npme``
comes for free with the non-bonded communication. Particles beyond
the non-bonded cut-off are only communicated when they have
missing bonded interactions; this means that the extra cost is
- minor and nearly indepedent of the value of ``-rdd``. With dynamic
+ minor and nearly independent of the value of ``-rdd``. With dynamic
load balancing, option ``-rdd`` also sets the lower limit for the
domain decomposition cell sizes. By default ``-rdd`` is determined
by :ref:`gmx mdrun` based on the initial coordinates. The chosen value will
# and this shell supports extended globbing
if test -n "${BASH_VERSION+set}" && (complete) > /dev/null 2>&1; then
if (shopt -s extglob) > /dev/null 2>&1; then
+ shopt -s extglob
+ if [ -f $GMXBIN/gmx-completion.bash ]; then
+ source $GMXBIN/gmx-completion.bash
+ for cfile in $GMXBIN/gmx-completion-*.bash ; do
+ source $cfile
+ done
+ fi
+ fi
+elif test -n "${ZSH_VERSION+set}" > /dev/null 2>&1 ; then
+ autoload bashcompinit
+ if (bashcompinit) > /dev/null 2>&1; then
+ bashcompinit
if [ -f $GMXBIN/gmx-completion.bash ]; then
source $GMXBIN/gmx-completion.bash
for cfile in $GMXBIN/gmx-completion-*.bash ; do
done
fi
fi
-# read zsh completions if understand how to use them
-# Currently disabled, since the completions don't work with the new
-# gmx binary with subcommands.
-# Contributions to get the functionality back are welcome.
-#elif test -n "${ZSH_VERSION+set}" && compctl >& /dev/null; then
-# if [ -f $GMXBIN/gmx-completion.zsh ]; then
-# source $GMXBIN/gmx-completion.zsh;
-# fi
fi
void ShellCompletionWriter::startCompletions()
{
impl_->file_.reset(new TextWriter(impl_->binaryName_ + "-completion.bash"));
- impl_->file_->writeLine("shopt -s extglob");
}
void ShellCompletionWriter::writeModuleCompletions(
"with [TT]-cpi[tt]. If you wish to change the ensemble or things",
"like output frequency, then supplying the checkpoint file to",
"[THISMODULE] with [TT]-t[tt] along with a new [REF].mdp[ref] file",
- "with [TT]-f[tt] is the recommended procedure.[PAR]",
+ "with [TT]-f[tt] is the recommended procedure. Actually preserving",
+ "the ensemble (if possible) still requires passing the checkpoint",
+ "file to [gmx-mdrun] [TT]-cpi[tt].[PAR]",
"By default, all bonded interactions which have constant energy due to",
"virtual site constructions will be removed. If this constant energy is",
ndh_tot += 1;
}
/* as data blocks: 1 real per dH point */
- cio += div_nsteps(nsteps, ir->fepvals->nstdhdl)*(ndh+ndhdl)*sizeof(real);
+ cio += div_nsteps(nsteps, ir->fepvals->nstdhdl)*ndh_tot*sizeof(real);
}
else
{
nq = 0;
nlj = 0;
*bChargePerturbed = FALSE;
+ *bTypePerturbed = FALSE;
for (mb = 0; mb < mtop->nmolblock; mb++)
{
molt = &mtop->moltype[mtop->molblock[mb].type];
nqlj = 0;
nq = 0;
*bChargePerturbed = FALSE;
+ *bTypePerturbed = FALSE;
for (mb = 0; mb < mtop->nmolblock; mb++)
{
molt = &mtop->moltype[mtop->molblock[mb].type];
std::string FileNameOptionManager::completeDefaultFileName(
const std::string &prefix, const FileNameOptionInfo &option)
{
- if (option.isDirectoryOption() || impl_->bInputCheckingDisabled_)
+ if (option.isDirectoryOption())
{
return std::string();
}
const bool bInput = option.isInputFile() || option.isInputOutputFile();
const std::string realPrefix
= !impl_->defaultFileName_.empty() ? impl_->defaultFileName_ : prefix;
- const bool bAllowMissing = option.allowMissing();
- if (bInput)
+ if (bInput && !impl_->bInputCheckingDisabled_)
{
const std::string completedName
= findExistingExtension(realPrefix, option, impl_->redirector_);
{
return completedName;
}
- if (bAllowMissing)
+ if (option.allowMissing())
{
return realPrefix + option.defaultExtension();
}
EXPECT_EQ("testfile.trr", value);
}
+TEST_F(FileNameOptionManagerTest, DefaultNameOptionWorksWithoutInputChecking)
+{
+ std::string value;
+ ASSERT_NO_THROW_GMX(manager_.disableInputOptionChecking(true));
+ ASSERT_NO_THROW_GMX(options_.addOption(
+ FileNameOption("f").store(&value).required()
+ .filetype(gmx::eftIndex).inputFile()
+ .defaultBasename("default")
+ .allowMissing()));
+ ASSERT_NO_THROW_GMX(manager_.addDefaultFileNameOption(&options_, "deffnm"));
+ EXPECT_EQ("default.ndx", value);
+
+ gmx::OptionsAssigner assigner(&options_);
+ EXPECT_NO_THROW_GMX(assigner.start());
+ EXPECT_NO_THROW_GMX(assigner.startOption("deffnm"));
+ EXPECT_NO_THROW_GMX(assigner.appendValue("missing"));
+ EXPECT_NO_THROW_GMX(assigner.finishOption());
+ EXPECT_NO_THROW_GMX(assigner.finish());
+ EXPECT_NO_THROW_GMX(options_.finish());
+
+ EXPECT_EQ("missing.ndx", value);
+}
+
} // namespace
AnalysisDataPlotModulePointer plotm(
new AnalysisDataPlotModule(settings.plotSettings()));
plotm->setFileName(fnAtomArea_);
- plotm->setTitle("Area per residue over the trajectory");
+ plotm->setTitle("Area per atom over the trajectory");
plotm->setXLabel("Atom");
plotm->setXFormat(8, 0);
plotm->setYLabel("Area (nm\\S2\\N)");
}
{
AnalysisDataAverageModulePointer avem(new AnalysisDataAverageModule);
+ int prevResind = -1;
+ int row = 0;
for (int i = 0; i < surfaceSel_.posCount(); ++i)
{
const int atomIndex = surfaceSel_.position(i).atomIndices()[0];
const int residueIndex = atoms.atom[atomIndex].resind;
- avem->setXAxisValue(i, atoms.resinfo[residueIndex].nr);
+ if (residueIndex != prevResind)
+ {
+ avem->setXAxisValue(row, atoms.resinfo[residueIndex].nr);
+ prevResind = residueIndex;
+ ++row;
+ }
}
residueArea_.addModule(avem);
if (!fnResidueArea_.empty())
AnalysisDataPlotModulePointer plotm(
new AnalysisDataPlotModule(settings.plotSettings()));
plotm->setFileName(fnResidueArea_);
- plotm->setTitle("Area per atom over the trajectory");
+ plotm->setTitle("Area per residue over the trajectory");
plotm->setXLabel("Residue");
plotm->setXFormat(8, 0);
plotm->setYLabel("Area (nm\\S2\\N)");
/* Check if we have more than 1 physical core, if detected,
* or more than 1 hardware thread if physical cores were not detected.
*/
+#if !(defined GMX_OPENMP) && !(defined GMX_MPI)
if ((hwinfo->ncore > 1) ||
(hwinfo->ncore == 0 && hwinfo->nthreads_hw_avail > 1))
{
md_print_warn(cr, fplog, "NOTE: GROMACS was compiled without OpenMP and (thread-)MPI support, can only use a single CPU core\n");
}
+#else
+ GMX_UNUSED_VALUE(hwinfo);
+ GMX_UNUSED_VALUE(cr);
+ GMX_UNUSED_VALUE(fplog);
+#endif
+
#endif /* GMX_OPENMP && GMX_MPI */
}