Conformers
**********

**Conformers** is a flexible tool for conformer generation. It
implements the RDKit [1], CREST [2] and Simulated Annealing conformer
generation methods and can be combined with any AMS engine.

Tip:

  You can use **Conformers** from the Graphical User Interface or from
  python with PLAMS.

See also:

  Tutorial on Conformer generation and Boltzmann-weighted spectra


New in Conformers-2025
======================

* Initial conformer sets in many different formats can be used as
  input to the conformers tool (Input molecule(s)).

* Details about the equivalence filtering can be written to output
  (Conformers Equivalence).


Overview
--------

This is a simple example showing how to generate conformers of
ethanol:

   #!/bin/sh

   $AMSBIN/conformers << EOF

      Task Generate

      System
         Atoms
            C -4.537101 -0.602542 -0.008859
            C -3.601843 -1.804345  0.037274
            O -2.267293 -1.387375 -0.058902
            H -4.301877  0.096761  0.821305
            H -5.588912 -0.942676  0.095614
            H -4.425039 -0.071643 -0.977931
            H -3.829607 -2.474689 -0.818032
            H -3.766077 -2.377916  0.977441
            H -2.012143 -1.043722  0.837186
         End
      End

      Engine ForceField
      EndEngine
   EOF

The most important input options are:

* **Task**: the task for the Conformers tool. Here we simply
  **Generate** a set of conformers starting from an initial structure.
  See the Tasks section for more information.

* **System**: in the System block we specify the initial structure of
  the molecule for which you want to generate conformers, in this case
  an ethanol molecule.

* **Engine**: during the conformers generation, atomistic calculations
  will be executed under the hood to compute energy and forces. With
  the engine block you can specify which atomistic engine to use and
  the options for the engine.

Tip:

  By default, the computationally fast (but not very accurate)
  ForceField engine is used to compute energy and forces. If you need
  more accurate geometries and energies for your conformers, you can
  specify a more accurate (but slow) engine in the generation step.
  Alternatively, you can use the "Optimize", "Filter" and "Score"
  tasks to efficiently get accurate geometries and energies while
  keeping the computational cost to a minimum. See Workflow for an
  example.

When running the script above, a folder called "conformers.results"
will be created and the generated conformers will be saved in there
(in ".xyz" and ".rkf" formats). See the general Input, execution and
output section for more information.


Main Input Options
------------------


Tasks
~~~~~

You can specify the task for the Conformers tool via the "Task" input
option:

   Task [Generate | Optimize | Filter | Score | Expand]

The main (and default) **Task** is **Generate**: given an initial
structure, the Conformers tool will generate a set of conformers.

The other tasks, described below, can be used to refine or combine
previously generated conformer sets. The Workflow example shows how
the various tasks can be combined in a simple workflow to efficiently
obtain accurate conformers.

"Task"
   Type:
      Multiple Choice

   Default value:
      Generate

   Options:
      [Generate, Optimize, Filter, Score, Expand]

   Description:
      The task to be performed by the Conformers tool.
      'Generate': given a molecule, generate a set of conformers.
      Note: this task will automatically optimize, filter and score
      the conformers.                   'Optimize': given a previously
      generated set of conformers, optimize, filter and score the
      structures using the specified engine.
      'Filter': given one or more previously generated set of
      conformers, merge them into a single conformer set and filter
      out duplicate conformers. Note: this will not optimize or re-
      score the conformers.                   'Score' given one or
      more previously generated set of conformers, re-score them by
      computing the energy using the specified engine. Note: this will
      only do a single point calculation, and will not optimize the
      structures.                   In case of 'Optimize', 'Filter'
      and 'Score' you can specify the input conformer set(s) using the
      'InputConformersSet' keyword.


Input molecule(s)
~~~~~~~~~~~~~~~~~

For the "Generate" task you can use the "System" or "LoadSystem"
blocks to specify the input molecule. See the System block
documentation for a detailed description.

For the "Optimize", "Filter" and "Score" tasks, you should instead
provide the results of a previously run Conformers calculation as
input via the "InputConformersSet" keyword. See also the Constraints,
Restraints, Walls section.

   InputConformersSet string

"InputConformersSet"
   Type:
      String

   Recurring:
      True

   Description:
      The path to a file containing a set of conformers.
      The file should be either an 'conformers.rkf' file (i.e. the
      results file of conformers), a concatenated .xyz file, a .sdf
      file, or even .dcd file. In the case of a .dcd file, an
      additional System block is required. If the specified file does
      not contain energies in the AMS conformers format (as produced
      by the conformers tool), all conformer energies will be set to
      zero.                   You can specify multiple input
      conformers sets by including the InputConformersSet keyword
      multiple times.

When loading conformers using the "InputConformersSet" key, you can
optionally specify the "InputMaxEnergy" option:

   InputMaxEnergy float

"InputMaxEnergy"
   Type:
      Float

   Unit:
      kcal/mol

   Description:
      Threshold for filtering out high-energy conformers when loading
      conformers sets using the InputConformerSet keyword. Conformers
      with an larger relative energy will not be loaded.

A similar option is the "InputMaxConfs" key, which will use only the k
lowest energy conformers for an integer input k:

   InputMaxConfs integer

"InputMaxConfs"
   Type:
      Integer

   Description:
      The maximum number of conformers to carry forward when loading
      conformer sets.  If this input is not specified, this limit will
      not be imposed.


Engine
~~~~~~

With the **Engine block** you can specify which atomistic engine to
use and the options for the engine. See the AMS engine documentation
for more info.

If no engine block is specified, the ForceField engine (with the UFF
force field) will be used as default.


Generators
~~~~~~~~~~

Three different methods of conformer generation are implemented: RDKit
[1], CREST [2] and ANNEALING. The **default** generation method is
**RDKit**.

You can select which method to use in the "Generator" block:

   Generator
      Method [RDKit | CREST | ANNEALING]
   End

"Generator"
   Type:
      Block

   Description:
      Options for the conformer generator.

   "Method"
      Type:
         Multiple Choice

      Default value:
         RDKit

      Options:
         [RDKit, CREST, ANNEALING]

      GUI name:
         Generator method

      Description:
         Method used to generate the conformers.
         The RDKit generator is based on random distance matrix
         method. This is the recommended (and default) method.
         The CREST Generator uses a multi-step workflow with meta-
         dynamics simulations to explore the conformers space of a
         molecule. This can be a powerful conformer search method, but
         it is generally computationally expensive compared to the
         RDKit generator.                      The ANNEALING generator
         performs a simulated annealing simulation to explore
         conformer space.

Input options for the various methods can be specified in their
respective input blocks. See the section Other input options for the
complete set of input options.


Conformers Equivalence
~~~~~~~~~~~~~~~~~~~~~~

An important aspect of conformers generation is the reduction of a set
of geometries into a set of unique conformers. As the Conformers tool
generates new potential conformers, it needs to be able to determine
whether a structure is a new conformer (in which case it is added to
the list of unique conformers) or whether it is simply a slightly
different geometry of an already observed conformer (in which case,
the structure is discarded).

The conformer tool therefore needs a procedure that, given two
geometries, is able to discriminate between the following situations:

* the two geometries correspond to the same conformer

* the two geometries correspond to distinct conformers

In the "Equivalence" block various options related to this equivalence
procedure can be specified.

   Equivalence
      Method [AMS | TFD | RMSD | CREST]
   End

"Equivalence"
   Type:
      Block

   Description:
      Options for the procedure determining whether two structures are
      equivalent or distinct conformers.

   "Method"
      Type:
         Multiple Choice

      Default value:
         CREST

      Options:
         [AMS, TFD, RMSD, CREST]

      GUI name:
         Equivalence method

      Description:
         Method used to determine (and filter out) equivalent
         conformers.                      The CREST equivalence method
         relies on rotational constants comparisons. For this reason,
         conformers with the same rotational constants (such as mirror
         images) will be considered equivalent conformers.
         The AMS equivalence method uses a distance matrix and
         dihedrals to compare conformers. This equivalence method can
         be computationally expensive for large molecules.
         The TFD equivalence method uses the Torsion Fingerprint
         Difference as implemented in RDKit.                      The
         RMSD equivalence method uses the RDKit GetBestRMS
         implementation.

Whenever the equivalence procedure is employed, details about the
detected duplicates can be written to file with the "LogDuplicates"
keyword.

   Equivalence
      LogDuplicates Yes/No
   End

"Equivalence"
   Type:
      Block

   Description:
      Options for the procedure determining whether two structures are
      equivalent or distinct conformers.

   "LogDuplicates"
      Type:
         Bool

      Default value:
         No

      Description:
         If set to True, print information on equivalence to logfile
         and standard output.

Input options for the various methods can be specified in their
respective input blocks. See the section Other input options for the
complete set of input options.


Filtering
~~~~~~~~~

The Conformers tool can automatically filter out conformers based on
some criteria, e.g. it will discard high energy conformers.

The filtering options can be specified in the "Filter" block:

   Filter
      MaxEnergy float
      RemoveNonMinima Yes/No
   End

"Filter"
   Type:
      Block

   Description:
      Options for the conformer filtering.

   "MaxEnergy"
      Type:
         Float

      Unit:
         kcal/mol

      Description:
         Threshold for filtering out high-energy conformers. If the
         relative energy of a conformer with respect to the lowest
         conformer is larger than this value, the conformer will be
         discarded.

   "RemoveNonMinima"
      Type:
         Bool

      Default value:
         No

      Description:
         For the final set of conformers, explicitly check that the
         geometry corresponds to a local minimum, and remove it if it
         does not. Note: this will run a PES point characterization,
         which can be computationally expensive!


Constraints, Restraints, Walls
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The Conformers tool can be used in combination with Constraints
(constraints), Restraints (restraints), and EngineAddons (engine
addons).

The constraints fix the specified degrees of freedom to certain
values, while the restraints restrict the specified degrees of freedom
to be near the specified values using an added potential energy
function. The engine add-ons cover a wide range of functionality, but
the most important one for conformers is the "WallPotential", which
adds a spherical repulsive potential around the origin, trapping the
atoms inside.

The RDKit "Generate" method consists of two steps:

1. Call to RDKit ETKDG method for initial conformer generation

2. Geometry optimization of all conformer candidates with an AMS
   engine

Step 1 only accepts fixed atom constraints. Distance, angle, and
dihedral constraints will be ignored during the initial conformer
generation, and reapplied during the subsequent geometry optimization.

The other "Generate" methods of the Conformers tool make use of both
molecular dynamics simulations (Crest and Annealing) and geometry
optimizations. Not all constraints can be used in molecular dynamics
simulations, so where possible constraints are automatically converted
to the corresponding restraints.


Conformer Generation with Multiple Molecules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The wall potential described above can be used in combination with the
"Crest" and "Annealing" methods to generate conformers for systems
with multiple molecules. A simple example below demonstrates this for
an acetic acid molecule in the presence of water. The radius of the
spherical constraint is manually set to 4.5 Angstrom.

   #!/bin/sh

   "$AMSBIN/conformers" << eor
       Engine ForceField
       EndEngine
       Generator
           Method CREST
       End
       System
           Atoms
               C -5.168356138856709 -0.9040308913456915 -0.14509537743978
               C -3.674177007131515 -0.8549162177628133 -0.1466485108795087
               O -3.036130963738181 0.3677379219191289 -0.1592569297095029
               O -3.033827233992448 -1.897394223042741 -0.1762700959655665
               H -5.578445514437495 0.05058176564435996 0.2458678935590599
               H -5.524620190394747 -1.732922198697688 0.5010944819578638
               H -5.536566707641177 -1.061832129921519 -1.180309622581397
               H -2.058681010424327 0.197909193054116 -0.1773409518219506
               O -4.51655946130152 -4.444022963974381 0.9796661086035751
               H -4.406160106170592 -3.748388119201934 1.675984760241468
               H -5.428884582974359 -4.296939008632186 0.6238436183248668
           End
           BondOrders
             1 2 1.0
             1 5 1.0
             1 6 1.0
             1 7 1.0
             2 3 1.0
             2 4 2.0
             3 8 1.0
             9 10 1.0
             9 11 1.0
           End
       End
       EngineAddons
           WallPotential
               Enabled Yes
               Radius 4.5
           End
       End
   eor


Examples
--------


Workflow
~~~~~~~~

During the conformers generation (i.e. the "generate" task), a large
number of atomistic calculations will be executed under the hood. This
can get computationally very expensive if an accurate engine (such as
ADF) is used. This is why the default engine is the computationally
fast (but not very accurate) ForceField engine.

By combining the "Generate", "Optimize" and "Score" tasks you can
build a simple workflow to get accurate geometries and energies while
keeping the computational cost to a minimum.

A typical workflow might look like this:

1. Generate a set of conformers using "Task Generate" with the fast
   but approximate ForceField engine

2. Re-optimize the geometries generated in the previous step using
   "Task Optimize" with a more accurate engine (e.g. DFTB)

3. Re-score the conformers using the using "Task Score" with an
   accurate engine (e.g. ADF)

   #!/bin/sh

   # Simple workflow:
   # - generate an initial set of 1-bromo-3-chloropropane conformers with UFF (ForceField engine)
   # - re-optimize the conformers with GFN1-xTB (DFTB engine)
   # - re-score the GFN1-xTB-optimized conformers using DFT energies (ADF engine)

   AMS_JOBNAME=generate_uff $AMSBIN/conformers << EOF

       Task Generate

       System
           Atoms
               Br     -4.16969843       2.48953245      -0.00000000
               C      -2.69926018       3.75062981      -0.00000000
               C      -1.36372383       3.00977020      -0.00000000
               C      -0.19648214       3.99512105       0.00000000
               Cl      1.35297276       3.11657146       0.00000000
               H      -2.78129583       4.39009878       0.90457474
               H      -2.78129583       4.39009878      -0.90457474
               H      -1.30112035       2.36381643      -0.90271681
               H      -1.30112035       2.36381643       0.90271681
               H      -0.24025734       4.63864134       0.90438917
               H      -0.24025734       4.63864134      -0.90438917
           End
       End

       Engine ForceField
           Type UFF
       EndEngine
   EOF


   AMS_JOBNAME=optimize_gfn1xtb $AMSBIN/conformers << EOF

       Task Optimize

       InputConformersSet generate_uff.results/conformers.rkf

       Engine DFTB
           Model GFN1-xTB
       EndEngine
   EOF


   AMS_JOBNAME=score_dft $AMSBIN/conformers << EOF

       Task Score

       InputConformersSet optimize_gfn1xtb.results/conformers.rkf

       # Here we use the default ADF settings. For real calculations, you 
       # should use a larger basis set (e.g. TZP) and a better XC functional

       Engine ADF
       EndEngine
   EOF


   echo "Final conformers:"
   cat score_dft.results/conformers.xyz


References
----------

[1] G. Landrum, *Rdkit documentation* Release 2013

[2] P. Pracht, F. Bohle, S. Grimme, *Automated exploration of the low-
    energy chemical space with fast quantum chemical methods* Physical
    Chemistry Chemical Physics: PCCP, 19 Feb 2020, 22(14):7169-7192


Other input options
-------------------

Here we document more advanced input options for the Conformer tool.
**See the section** Main Input Options **for the most important input
option.**

"Output"
   Type:
      Block

   Description:
      Options regarding the output and result files.

   "KeepWorkDir"
      Type:
         Bool

      Default value:
         No

      Description:
         Do not remove the working directories after the conformer
         generation is finished.

   "rkf"
      Type:
         Bool

      Default value:
         Yes

      Description:
         Save the final conformers in .rkf format. The file
         'conformers.rkf' will be located in the results directory.
         You can visualize this file using the AMSMovie GUI module.

   "sdf"
      Type:
         Bool

      Default value:
         Yes

      Description:
         Save the final conformers in .sdf format. The file
         'conformers.sdf' will be located in the results directory.

   "xyz"
      Type:
         Bool

      Default value:
         Yes

      Description:
         Save the final conformers in .xyz format. The file
         'conformers.xyz' will be located in the results directory.

"RNGSeed"
   Type:
      Integer

   Description:
      Initial seed for the (pseudo)random number generator. If this is
      unset, the generator will be seeded randomly from external
      sources of entropy and the generated conformers will be non-
      deterministic.

"Generator"
   Type:
      Block

   Description:
      Options for the conformer generator.

   "ANNEALING"
      Type:
         Block

      Description:
         Options for the annealing generator. This generator creates
         conformers by performing a simulated annealing simulation.

      "MolecularDynamics"
         Type:
            Block

         Description:
            Configures molecular dynamics (with the velocity-Verlet
            algorithm) with and without thermostats. This block allows
            to specify the details of the molecular dynamics
            calculation. Default values will be ignored.

         "Checkpoint"
            Type:
               Block

            Description:
               Sets the frequency for storing the entire MD state
               necessary for restarting the calculation.

            "Frequency"
               Type:
                  Integer

               Default value:
                  1000

               GUI name:
                  Checkpoint frequency

               Description:
                  Write the MD state to the Molecule and MDResults
                  sections on ams.rkf once every N steps. Setting this
                  to zero disables checkpointing during the
                  simulation, but one checkpoint at the very end of
                  the simulation will always be written.
                  NOTE: This no longer controls the frequency of
                  writing MDStep*.rkf files, set
                  Trajectory%EngineResultsFreq instead.

            "WriteProperties"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Honor top-level Properties input block when writing
                  engine results files.
                  DEPRECATED: This input option will be removed in
                  AMS2026 and will be considered always enabled. If
                  you rely on it being disabled, please contact SCM
                  support.

         "InitialVelocities"
            Type:
               Block

            Description:
               Sets the frequency for printing to stdout and storing
               the molecular configuration on the .rkf file.

            "File"
               Type:
                  String

               Description:
                  AMS RKF file containing the initial velocities.

            "RandomVelocitiesMethod"
               Type:
                  Multiple Choice

               Default value:
                  Exact

               Options:
                  [Exact, Boltzmann, Gromacs]

               GUI name:
                  Velocity randomization method

               Description:
                  Specifies how are random velocities generated. Three
                  methods are available.
                  Exact: Velocities are scaled to exactly match set
                  random velocities temperature.
                  Boltzmann: Velocities are not scaled and sample
                  Maxwell-Boltzmann distribution. However, the
                  distribution is not corrected for constraints.
                  Gromacs: Velocities are scaled to match set random
                  velocities temperature, but removal of net momentum
                  is performed only after the scaling. Resulting
                  kinetic energy is lower based on how much net
                  momentum the system had.

            "Temperature"
               Type:
                  Float

               Unit:
                  Kelvin

               GUI name:
                  Initial temperature

               Description:
                  Sets the temperature for the Maxwell-Boltzmann
                  distribution when the type of the initial velocities
                  is set to random, in which case specifying this key
                  is mandatory.                               AMSinput
                  will use the first temperature of the first
                  thermostat as default.

            "Type"
               Type:
                  Multiple Choice

               Default value:
                  Random

               Options:
                  [Zero, Random, FromFile, Input]

               GUI name:
                  Initial velocities

               Description:
                  Specifies the initial velocities to assign to the
                  atoms. Three methods to assign velocities are
                  available.                               Zero: All
                  atom are at rest at the beginning of the
                  calculation.                               Random:
                  Initial atom velocities follow a Maxwell-Boltzmann
                  distribution for the temperature given by the
                  [MolecularDynamics%InitialVelocities%Temperature]
                  keyword.                               FromFile:
                  Load the velocities from a previous ams result file.
                  Input: Atom's velocities are set to the values
                  specified in the
                  [MolecularDynamics%InitialVelocities%Values] block,
                  which can be accessed via the Expert AMS panel in
                  AMSinput.

            "Values"
               Type:
                  Non-standard block

               Description:
                  This block specifies the velocity of each atom, in
                  Angstrom/fs, when
                  [MolecularDynamics%InitialVelocities%Type] is set to
                  Input. Each row must contain three floating point
                  values (corresponding to the x,y,z component of the
                  velocity vector) and a number of rows equal to the
                  number of atoms must be present, given in the same
                  order as the [System%Atoms] block.

         "NSteps"
            Type:
               Integer

            Default value:
               1000

            GUI name:
               Number of steps

            Description:
               The number of steps to be taken in the MD simulation.

         "Preserve"
            Type:
               Block

            Description:
               Periodically remove numerical drift accumulated during
               the simulation to preserve different whole-system
               parameters.

            "AngularMomentum"
               Type:
                  Bool

               Default value:
                  Yes

               GUI name:
                  : Angular momentum

               Description:
                  Remove overall angular momentum of the system. This
                  option is ignored for 2D and 3D-periodic systems,
                  and disabled by default for systems which are not
                  translationally invariant (for example when frozen
                  atoms are present).

            "CenterOfMass"
               Type:
                  Bool

               Default value:
                  No

               GUI name:
                  : Center of mass

               Description:
                  Translate the system to keep its center of mass at
                  the coordinate origin. This option is not very
                  useful for 3D-periodic systems.

            "Momentum"
               Type:
                  Bool

               Default value:
                  Yes

               GUI name:
                  Preserve: Total momentum

               Description:
                  Remove overall (linear) momentum of the system. This
                  is disabled by default for systems which are not
                  translationally invariant (for example when frozen
                  atoms are present).

         "Print"
            Type:
               Block

            Description:
               This block controls the printing of additional
               information to stdout.

            "System"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Print the chemical system before and after the
                  simulation.

            "Velocities"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Print the atomic velocities before and after the
                  simulation.

         "Restart"
            Type:
               String

            GUI name:
               Restart from

            Description:
               The path to the ams.rkf file from which to restart the
               simulation.

         "Shake"
            Type:
               Block

            Description:
               Parameters of the Shake/Rattle algorithm.

            "All"
               Type:
                  String

               Recurring:
                  True

               GUI name:
                  Constrain all

               Description:
                  Constraint description in one the following formats:
                  All [bondOrder] bonds at1 at2 [to distance]
                  All triangles at1 at2 at3
                  The first option constrains all bonds between atoms
                  at1 at2 to a certain length, while the second -
                  bonds at1-at2 and at2-at3 and the angle between
                  them.                               The [bondOrder]
                  can be a number or a string such as single, double,
                  triple or aromatic. If it's omitted then all bonds
                  between specified atoms will be constrained. Atom
                  names are case-sensitive and they must be as they
                  are in the Atoms block, or an asterisk '*' denoting
                  any atom. The distance, if present, must be in
                  Angstrom. If it is omitted then the bond length from
                  the initial geometry is used.
                  Important: only the bonds present in the system at
                  certain points of the simulation (at the start or
                  right after adding/removing atoms) can be
                  constrained, which means that the bonds may need to
                  be specified in the System block.
                  Warning: the triangles constraint should be used
                  with care because each constrained bond or angle
                  means removing one degree of freedom from the
                  dynamics. When there are too many constraints (for
                  example, "All triangles H C H" in methane) some of
                  them may be linearly dependent, which will lead to
                  an error in the temperature computation.
                  Valid examples:                               All
                  single bonds C C to 1.4
                  All bonds O H to 0.98
                  All bonds O H                               All
                  bonds H *                               All
                  triangles H * H

            "ConvergeR2"
               Type:
                  Float

               Default value:
                  1e-08

               Description:
                  Convergence criterion on the max squared difference,
                  in atomic units.

            "ConvergeRV"
               Type:
                  Float

               Default value:
                  1e-08

               Description:
                  Convergence criterion on the orthogonality of the
                  constraint and the relative atomic velocity, in
                  atomic units.

            "ExcludeRegion"
               Type:
                  String

               Default value:
               Description:
                  Exclude all atoms covered by this region expression
                  from all constraints. If both atoms of a bond belong
                  to ExcludeRegion, the bond will be kept
                  unconstrained, regardless of Shake%All or engine-
                  specific constraints.

            "Iterations"
               Type:
                  Integer

               Default value:
                  100

               Description:
                  Number of iterations.

            "ShakeInitialCoordinates"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Apply constraints before computing the first energy
                  and gradients.

         "Thermostat"
            Type:
               Block

            Recurring:
               True

            Description:
               This block allows to specify the use of a thermostat
               during the simulation. Depending on the selected
               thermostat type, different additional options may be
               needed to characterize the specific thermostat's
               behavior.

            "BerendsenApply"
               Type:
                  Multiple Choice

               Default value:
                  Global

               Options:
                  [Local, Global]

               GUI name:
                  Apply Berendsen

               Description:
                  Select how to apply the scaling correction for the
                  Berendsen thermostat:
                  - per-atom-velocity (Local)
                  - on the molecular system as a whole (Global).

            "ChainLength"
               Type:
                  Integer

               Default value:
                  10

               GUI name:
                  NHC chain length

               Description:
                  Number of individual thermostats forming the NHC
                  thermostat

            "Duration"
               Type:
                  Integer List

               GUI name:
                  Duration(s)

               Description:
                  Specifies how many steps should a transition from a
                  particular temperature to the next one in sequence
                  take.

            "Region"
               Type:
                  String

               Default value:
                  *

               Description:
                  The identifier of the region to thermostat. The
                  default *** applies the thermostat to the entire
                  system. The value can by a plain region name, or a
                  region expression, e.g. **-myregion* to thermostat
                  all atoms that are not in myregion, or
                  *regionA+regionB* to thermostat the union of the
                  'regionA' and 'regionB'. Note that if multiple
                  thermostats are used, their regions may not overlap.

            "Tau"
               Type:
                  Float

               Unit:
                  Femtoseconds

               GUI name:
                  Damping constant

               Description:
                  The time constant of the thermostat.

            "Temperature"
               Type:
                  Float List

               Unit:
                  Kelvin

               GUI name:
                  Temperature(s)

               Description:
                  The target temperature of the thermostat.
                  You can specify multiple temperatures (separated by
                  spaces). In that case the Duration field specifies
                  how many steps to use for the transition from one T
                  to the next T (using a linear ramp). For NHC
                  thermostat, the temperature may not be zero.

            "Type"
               Type:
                  Multiple Choice

               Default value:
                  None

               Options:
                  [None, Berendsen, NHC]

               GUI name:
                  Thermostat

               Description:
                  Selects the type of the thermostat.

         "TimeStep"
            Type:
               Float

            Default value:
               0.25

            Unit:
               Femtoseconds

            Description:
               The time difference per step.

         "Trajectory"
            Type:
               Block

            Description:
               Sets the frequency for printing to stdout and storing
               the molecular configuration on the .rkf file.

            "EngineResultsFreq"
               Type:
                  Integer

               Default value:
                  0

               GUI name:
                  Engine results frequency

               Description:
                  Write MDStep*.rkf files with engine-specific results
                  once every N steps. Setting this to zero disables
                  writing engine results files except for one file at
                  the end of the simulation. If this is set to a
                  negative value, the value of Checkpoint%Frequency
                  will be used instead.

            "ExitConditionFreq"
               Type:
                  Integer

               GUI name:
                  Exit condition frequency

               Description:
                  Check the exit conditions every N steps. By default
                  this is done every SamplingFreq steps.

            "PrintFreq"
               Type:
                  Integer

               GUI name:
                  Printing frequency

               Description:
                  Print current thermodynamic properties to the output
                  every N steps. By default this is done every
                  SamplingFreq steps.

            "SamplingFreq"
               Type:
                  Integer

               Default value:
                  100

               GUI name:
                  Sample frequency

               Description:
                  Write the molecular geometry (and possibly other
                  properties) to the ams.rkf file once every N steps.

            "TProfileGridPoints"
               Type:
                  Integer

               Default value:
                  0

               Description:
                  Number of points in the temperature profile. If
                  TProfileGridPoints > 0, a temperature profile along
                  each of the three lattice axes will be written to
                  the .rkf file. The temperature at a given profile
                  point is calculated as the total temperature of all
                  atoms inside the corresponding slice of the
                  simulation box, time-averaged over all MD steps
                  since the previous snapshot.​ By default, no profile
                  is generated.

            "WriteBonds"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write detected bonds to the .rkf file.

            "WriteCharges"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write current atomic point charges (if available) to
                  the .rkf file. Disable this to reduce trajectory
                  size if you do not need to analyze charges.

            "WriteCoordinates"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write atomic coordinates to the .rkf file.

            "WriteEngineGradients"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Write atomic gradients (negative of the atomic
                  forces, as calculated by the engine) to the History
                  section of ams.rkf.

            "WriteMolecules"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write the results of molecule analysis to the .rkf
                  file.

            "WriteVelocities"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write velocities to the .rkf file. Disable this to
                  reduce trajectory size if you do not need to analyze
                  the velocities.

      "NMolDynStepsFactor"
         Type:
            Integer

         Description:
            If the number of MD steps for the metadynamics and regular
            MD are not explicitly set in the respecive blocks, then
            the number of steps determined from the flexibility of the
            system will be multiplied by this value.

      "Temperatures"
         Type:
            Float List

         Default value:
            [298.0, 798.0]

         Unit:
            Kelvin

         Description:
            The minimum and maximum temperature of the annealing
            simulation. The simulation will start at the highest
            temperature, and cool down to the lowest.

      "UseShake"
         Type:
            Bool

         Default value:
            No

         Description:
            Constrain all -H bonds with shake. If turned on, the MD
            timestep is automatically increased.

   "AdjustInputBonds"
      Type:
         Bool

      Default value:
         Yes

      Description:
         If geometry optimization of the initial conformer results in
         bond changes, adjust the reference connectivity. If the
         changes are too severe, the calculation will stop.

   "CREST"
      Type:
         Block

      Description:
         Options for the CREST generator. The CREST generator performs
         a set of metadynamics simulations (using the METADYNAMICS
         generator), then a set of MD simulations (using the MD
         expander), and finally it does a combinatorial expansion of
         the generated conformers using the GC expander. This sequence
         is repeated in an iterative fashion until the lowest energy
         conformer no longer changes.

      "ConvergenceQualityCrude"
         Type:
            Multiple Choice

         Default value:
            None

         Options:
            [Normal, Good, VeryGood, Excellent, None]

         Description:
            The tightness of the convergence of the crude geometry
            pre-optimizations. If set to none it will be selected two
            levels below ConvergenceQuality.

      "ConvergenceQualityTight"
         Type:
            Multiple Choice

         Default value:
            None

         Options:
            [Normal, Good, VeryGood, Excellent, None]

         Description:
            The tightness of the convergence of the final geometry
            optimizations. If set to none it will be selected the same
            as ConvergenceQuality.

      "GCStep"
         Type:
            Bool

         Default value:
            Yes

         Description:
            Wether or not to include the combinatorial expansion of
            the conformers using the GC Generator. For big systems
            this step can be very time consuming. By default it is set
            to True.

      "NCycles"
         Type:
            Integer

         Default value:
            10

         Description:
            The maximum number of CREST cycles (by default the number
            is 10). If the lowest conformer energy converges before
            then, Crest exits.

      "NMolDynStepsFactor"
         Type:
            Integer

         Description:
            If the number of MD steps for the metadynamics and regular
            MD are not explicitly set in the respecive blocks, then
            the number of steps determined from the flexibility of the
            system will be multiplied by this value.

      "UseShake"
         Type:
            Bool

         Default value:
            Yes

         Description:
            Wether or not SHAKE should be turned on in the MD and
            Metadynamics simulations. If this is turned on, the MD
            timestep is automatically increased (from 2 to 5 fs).

   "METADYNAMICS"
      Type:
         Block

      Description:
         Produces conformers by running a set of CREST-RMSD
         metadynamics simulations with different biases, extracting
         snapshots, and optimizing those.

      "ConvergenceQualityCrude"
         Type:
            Multiple Choice

         Default value:
            none

         Options:
            [normal, good, verygood, excellent, none]

         Description:
            The tightness of the convergence of the crude geometry
            pre-optimizations. If set to none it will be selected two
            levels below ConvergenceQuality.

      "MolecularDynamics"
         Type:
            Block

         Description:
            Configures molecular dynamics (with the velocity-Verlet
            algorithm) with and without thermostats. This block allows
            to specify the details of the molecular dynamics
            calculation. Default values will be ignored.

         "Checkpoint"
            Type:
               Block

            Description:
               Sets the frequency for storing the entire MD state
               necessary for restarting the calculation.

            "Frequency"
               Type:
                  Integer

               Default value:
                  1000

               GUI name:
                  Checkpoint frequency

               Description:
                  Write the MD state to the Molecule and MDResults
                  sections on ams.rkf once every N steps. Setting this
                  to zero disables checkpointing during the
                  simulation, but one checkpoint at the very end of
                  the simulation will always be written.
                  NOTE: This no longer controls the frequency of
                  writing MDStep*.rkf files, set
                  Trajectory%EngineResultsFreq instead.

            "WriteProperties"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Honor top-level Properties input block when writing
                  engine results files.
                  DEPRECATED: This input option will be removed in
                  AMS2026 and will be considered always enabled. If
                  you rely on it being disabled, please contact SCM
                  support.

         "InitialVelocities"
            Type:
               Block

            Description:
               Sets the frequency for printing to stdout and storing
               the molecular configuration on the .rkf file.

            "File"
               Type:
                  String

               Description:
                  AMS RKF file containing the initial velocities.

            "RandomVelocitiesMethod"
               Type:
                  Multiple Choice

               Default value:
                  Exact

               Options:
                  [Exact, Boltzmann, Gromacs]

               GUI name:
                  Velocity randomization method

               Description:
                  Specifies how are random velocities generated. Three
                  methods are available.
                  Exact: Velocities are scaled to exactly match set
                  random velocities temperature.
                  Boltzmann: Velocities are not scaled and sample
                  Maxwell-Boltzmann distribution. However, the
                  distribution is not corrected for constraints.
                  Gromacs: Velocities are scaled to match set random
                  velocities temperature, but removal of net momentum
                  is performed only after the scaling. Resulting
                  kinetic energy is lower based on how much net
                  momentum the system had.

            "Temperature"
               Type:
                  Float

               Unit:
                  Kelvin

               GUI name:
                  Initial temperature

               Description:
                  Sets the temperature for the Maxwell-Boltzmann
                  distribution when the type of the initial velocities
                  is set to random, in which case specifying this key
                  is mandatory.                               AMSinput
                  will use the first temperature of the first
                  thermostat as default.

            "Type"
               Type:
                  Multiple Choice

               Default value:
                  Random

               Options:
                  [Zero, Random, FromFile, Input]

               GUI name:
                  Initial velocities

               Description:
                  Specifies the initial velocities to assign to the
                  atoms. Three methods to assign velocities are
                  available.                               Zero: All
                  atom are at rest at the beginning of the
                  calculation.                               Random:
                  Initial atom velocities follow a Maxwell-Boltzmann
                  distribution for the temperature given by the
                  [MolecularDynamics%InitialVelocities%Temperature]
                  keyword.                               FromFile:
                  Load the velocities from a previous ams result file.
                  Input: Atom's velocities are set to the values
                  specified in the
                  [MolecularDynamics%InitialVelocities%Values] block,
                  which can be accessed via the Expert AMS panel in
                  AMSinput.

            "Values"
               Type:
                  Non-standard block

               Description:
                  This block specifies the velocity of each atom, in
                  Angstrom/fs, when
                  [MolecularDynamics%InitialVelocities%Type] is set to
                  Input. Each row must contain three floating point
                  values (corresponding to the x,y,z component of the
                  velocity vector) and a number of rows equal to the
                  number of atoms must be present, given in the same
                  order as the [System%Atoms] block.

         "NSteps"
            Type:
               Integer

            Default value:
               1000

            GUI name:
               Number of steps

            Description:
               The number of steps to be taken in the MD simulation.

         "Preserve"
            Type:
               Block

            Description:
               Periodically remove numerical drift accumulated during
               the simulation to preserve different whole-system
               parameters.

            "AngularMomentum"
               Type:
                  Bool

               Default value:
                  Yes

               GUI name:
                  : Angular momentum

               Description:
                  Remove overall angular momentum of the system. This
                  option is ignored for 2D and 3D-periodic systems,
                  and disabled by default for systems which are not
                  translationally invariant (for example when frozen
                  atoms are present).

            "CenterOfMass"
               Type:
                  Bool

               Default value:
                  No

               GUI name:
                  : Center of mass

               Description:
                  Translate the system to keep its center of mass at
                  the coordinate origin. This option is not very
                  useful for 3D-periodic systems.

            "Momentum"
               Type:
                  Bool

               Default value:
                  Yes

               GUI name:
                  Preserve: Total momentum

               Description:
                  Remove overall (linear) momentum of the system. This
                  is disabled by default for systems which are not
                  translationally invariant (for example when frozen
                  atoms are present).

         "Print"
            Type:
               Block

            Description:
               This block controls the printing of additional
               information to stdout.

            "System"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Print the chemical system before and after the
                  simulation.

            "Velocities"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Print the atomic velocities before and after the
                  simulation.

         "Restart"
            Type:
               String

            GUI name:
               Restart from

            Description:
               The path to the ams.rkf file from which to restart the
               simulation.

         "Shake"
            Type:
               Block

            Description:
               Parameters of the Shake/Rattle algorithm.

            "All"
               Type:
                  String

               Recurring:
                  True

               GUI name:
                  Constrain all

               Description:
                  Constraint description in one the following formats:
                  All [bondOrder] bonds at1 at2 [to distance]
                  All triangles at1 at2 at3
                  The first option constrains all bonds between atoms
                  at1 at2 to a certain length, while the second -
                  bonds at1-at2 and at2-at3 and the angle between
                  them.                               The [bondOrder]
                  can be a number or a string such as single, double,
                  triple or aromatic. If it's omitted then all bonds
                  between specified atoms will be constrained. Atom
                  names are case-sensitive and they must be as they
                  are in the Atoms block, or an asterisk '*' denoting
                  any atom. The distance, if present, must be in
                  Angstrom. If it is omitted then the bond length from
                  the initial geometry is used.
                  Important: only the bonds present in the system at
                  certain points of the simulation (at the start or
                  right after adding/removing atoms) can be
                  constrained, which means that the bonds may need to
                  be specified in the System block.
                  Warning: the triangles constraint should be used
                  with care because each constrained bond or angle
                  means removing one degree of freedom from the
                  dynamics. When there are too many constraints (for
                  example, "All triangles H C H" in methane) some of
                  them may be linearly dependent, which will lead to
                  an error in the temperature computation.
                  Valid examples:                               All
                  single bonds C C to 1.4
                  All bonds O H to 0.98
                  All bonds O H                               All
                  bonds H *                               All
                  triangles H * H

            "ConvergeR2"
               Type:
                  Float

               Default value:
                  1e-08

               Description:
                  Convergence criterion on the max squared difference,
                  in atomic units.

            "ConvergeRV"
               Type:
                  Float

               Default value:
                  1e-08

               Description:
                  Convergence criterion on the orthogonality of the
                  constraint and the relative atomic velocity, in
                  atomic units.

            "ExcludeRegion"
               Type:
                  String

               Default value:
               Description:
                  Exclude all atoms covered by this region expression
                  from all constraints. If both atoms of a bond belong
                  to ExcludeRegion, the bond will be kept
                  unconstrained, regardless of Shake%All or engine-
                  specific constraints.

            "Iterations"
               Type:
                  Integer

               Default value:
                  100

               Description:
                  Number of iterations.

            "ShakeInitialCoordinates"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Apply constraints before computing the first energy
                  and gradients.

         "Thermostat"
            Type:
               Block

            Recurring:
               True

            Description:
               This block allows to specify the use of a thermostat
               during the simulation. Depending on the selected
               thermostat type, different additional options may be
               needed to characterize the specific thermostat's
               behavior.

            "BerendsenApply"
               Type:
                  Multiple Choice

               Default value:
                  Global

               Options:
                  [Local, Global]

               GUI name:
                  Apply Berendsen

               Description:
                  Select how to apply the scaling correction for the
                  Berendsen thermostat:
                  - per-atom-velocity (Local)
                  - on the molecular system as a whole (Global).

            "ChainLength"
               Type:
                  Integer

               Default value:
                  10

               GUI name:
                  NHC chain length

               Description:
                  Number of individual thermostats forming the NHC
                  thermostat

            "Duration"
               Type:
                  Integer List

               GUI name:
                  Duration(s)

               Description:
                  Specifies how many steps should a transition from a
                  particular temperature to the next one in sequence
                  take.

            "Region"
               Type:
                  String

               Default value:
                  *

               Description:
                  The identifier of the region to thermostat. The
                  default *** applies the thermostat to the entire
                  system. The value can by a plain region name, or a
                  region expression, e.g. **-myregion* to thermostat
                  all atoms that are not in myregion, or
                  *regionA+regionB* to thermostat the union of the
                  'regionA' and 'regionB'. Note that if multiple
                  thermostats are used, their regions may not overlap.

            "Tau"
               Type:
                  Float

               Unit:
                  Femtoseconds

               GUI name:
                  Damping constant

               Description:
                  The time constant of the thermostat.

            "Temperature"
               Type:
                  Float List

               Unit:
                  Kelvin

               GUI name:
                  Temperature(s)

               Description:
                  The target temperature of the thermostat.
                  You can specify multiple temperatures (separated by
                  spaces). In that case the Duration field specifies
                  how many steps to use for the transition from one T
                  to the next T (using a linear ramp). For NHC
                  thermostat, the temperature may not be zero.

            "Type"
               Type:
                  Multiple Choice

               Default value:
                  None

               Options:
                  [None, Berendsen, NHC]

               GUI name:
                  Thermostat

               Description:
                  Selects the type of the thermostat.

         "TimeStep"
            Type:
               Float

            Default value:
               0.25

            Unit:
               Femtoseconds

            Description:
               The time difference per step.

         "Trajectory"
            Type:
               Block

            Description:
               Sets the frequency for printing to stdout and storing
               the molecular configuration on the .rkf file.

            "EngineResultsFreq"
               Type:
                  Integer

               Default value:
                  0

               GUI name:
                  Engine results frequency

               Description:
                  Write MDStep*.rkf files with engine-specific results
                  once every N steps. Setting this to zero disables
                  writing engine results files except for one file at
                  the end of the simulation. If this is set to a
                  negative value, the value of Checkpoint%Frequency
                  will be used instead.

            "ExitConditionFreq"
               Type:
                  Integer

               GUI name:
                  Exit condition frequency

               Description:
                  Check the exit conditions every N steps. By default
                  this is done every SamplingFreq steps.

            "PrintFreq"
               Type:
                  Integer

               GUI name:
                  Printing frequency

               Description:
                  Print current thermodynamic properties to the output
                  every N steps. By default this is done every
                  SamplingFreq steps.

            "SamplingFreq"
               Type:
                  Integer

               Default value:
                  100

               GUI name:
                  Sample frequency

               Description:
                  Write the molecular geometry (and possibly other
                  properties) to the ams.rkf file once every N steps.

            "TProfileGridPoints"
               Type:
                  Integer

               Default value:
                  0

               Description:
                  Number of points in the temperature profile. If
                  TProfileGridPoints > 0, a temperature profile along
                  each of the three lattice axes will be written to
                  the .rkf file. The temperature at a given profile
                  point is calculated as the total temperature of all
                  atoms inside the corresponding slice of the
                  simulation box, time-averaged over all MD steps
                  since the previous snapshot.​ By default, no profile
                  is generated.

            "WriteBonds"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write detected bonds to the .rkf file.

            "WriteCharges"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write current atomic point charges (if available) to
                  the .rkf file. Disable this to reduce trajectory
                  size if you do not need to analyze charges.

            "WriteCoordinates"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write atomic coordinates to the .rkf file.

            "WriteEngineGradients"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Write atomic gradients (negative of the atomic
                  forces, as calculated by the engine) to the History
                  section of ams.rkf.

            "WriteMolecules"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write the results of molecule analysis to the .rkf
                  file.

            "WriteVelocities"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write velocities to the .rkf file. Disable this to
                  reduce trajectory size if you do not need to analyze
                  the velocities.

      "NCycles"
         Type:
            Integer

         Default value:
            5

         Description:
            The maximum number of cycles of metadynamics simulations.
            The generator stops when either this number is reached, or
            the conformer set is stable.

      "NMolDynStepsFactor"
         Type:
            Integer

         Description:
            If the number of MD steps for the metadynamics and regular
            MD are not explicitly set in the respecive blocks, then
            the number of steps determined from the flexibility of the
            system will be multiplied by this value.

      "NWidthsHeights"
         Type:
            Integer List

         Default value:
            [4, 3]

         Description:
            The number of different Gaussian widths and heights
            respectively used in the metadynamics simulations. By
            default 4 different widths are used and 3 different
            heights, resulting in 12 different metadynamics
            simulations.

      "SimulationSuccessFraction"
         Type:
            Float

         Default value:
            0.4

         Description:
            The fraction of planned metadynamics steps that has to
            have succeeded in order for the metadynamics iteration to
            be considered a success.

      "UseShake"
         Type:
            Bool

         Default value:
            No

         Description:
            Constrain all -H bonds with shake. If turned on, the MD
            timestep is automatically increased.

   "MaxEnergy"
      Type:
         Float

      Unit:
         kcal/mol

      Description:
         Threshold for filtering out high-energy conformers. If the
         relative energy of a conformer with respect to the lowest
         conformer is larger than this value, the conformer will be
         discarded.

   "Method"
      Type:
         Multiple Choice

      Default value:
         RDKit

      Options:
         [RDKit, CREST, ANNEALING]

      GUI name:
         Generator method

      Description:
         Method used to generate the conformers.
         The RDKit generator is based on random distance matrix
         method. This is the recommended (and default) method.
         The CREST Generator uses a multi-step workflow with meta-
         dynamics simulations to explore the conformers space of a
         molecule. This can be a powerful conformer search method, but
         it is generally computationally expensive compared to the
         RDKit generator.                      The ANNEALING generator
         performs a simulated annealing simulation to explore
         conformer space.

   "Preoptimization"
      Type:
         Block

      Description:
         If this block is enabled geometries will be preoptimized.
         After preoptimization the high energy conformers will be
         discarded, and then from the remaining set the unoptimized
         geometries will be optimized at higher level. This is to
         prevent the preoptimizer from collapsing different conformers
         into a single false minimum. As a result, preoptimization is
         only useful if MaxEnergy is chosen low.

      "Enable"
         Type:
            Bool

         Default value:
            No

         Description:
            Perform preoptimization at a low level of accuracy.

      "Engine"
         Type:
            Block

         Description:
            The engine specifics to be used for preoptimization.

      "PreoptFactor"
         Type:
            Integer

         Default value:
            2

         Description:
            This factor is multiplied with MaxEnergy, to determine
            which high energy conformers can be discarded after
            preoptimization.

   "RDKit"
      Type:
         Block

      Description:
         Options for the RDKit generator. This generator produces
         initial guesses for conformers using the RDKit ETKDG method,
         followed by AMS geometry optimizations.

      "InitialNConformers"
         Type:
            Integer

         GUI name:
            Initial no. of conformers

         Description:
            Number of geometries initially created by RDKit, before
            AMS geometry optimization and filtering. If not set, the
            number will be automatically set, based on the number of
            rotational bonds.

      "MaxConfs"
         Type:
            Integer

         Default value:
            5000

         Description:
            If InitialNConformers is not set, then the number of
            conformers will be automatically set, with a maximum of
            MaxConfs.

      "MinConfs"
         Type:
            Integer

         Default value:
            10

         Description:
            If InitialNConformers is not set, then the number of
            conformers will be automatically set, with a minimum of
            MinConfs.

      "NconfsEstimationFactor"
         Type:
            Integer

         Default value:
            100

         Description:
            If InitialNConformers is not set, then the number of
            conformers will be automatically set based on the number
            of rotational bonds. The resulting number is then
            multiplied by this factor (default: 100), to ensure that
            enough conformers will be created.

   "RDKitETKDG"
      Type:
         Block

      Description:
         Settings for the call to RDKits ETKDG conformer generator
         tool.

      "BestRMSDThreshold"
         Type:
            Float

         Default value:
            -1.0

         Description:
            After ETKDG conformer generation by RDKit, RDKit can be
            used to remove duplicates via the BestRMS algorithm. This
            filter does exactly the same as the RMSD equivalence
            detector in the Equivalence block.

      "ConstrainedAtoms"
         Type:
            Integer List

         Description:
            The indices of the atoms to constrain during ETKDG
            conformer generation.

      "Forcefield"
         Type:
            Multiple Choice

         Default value:
            None

         Options:
            [None, UFF, MMFF]

         Description:
            The name of the RDKit forcefield to use for geometry
            optimization at the end of ETKDG conformer generation (by
            default no geometry optimization is performed). Using the
            RDKit internal optimization may make the subsequent
            geometry optimizations with AMS faster.

      "Parallel"
         Type:
            Bool

         Default value:
            No

         Description:
            Experimental: Parallelize the RDKit generation step by
            calling the RDKit conformer generation method in parallel
            from multiple processes.

      "RMSDThreshold"
         Type:
            Float

         Default value:
            -1.0

         Description:
            Root Mean Square deviation threshold for removing
            similar/equivalent conformations during the RDKit ETKDG
            procedure. By default there is no pruning (value: -1).

      "UseExpTorsionAnglePrefs"
         Type:
            String

         Default value:
            default

         Description:
            Impose experimental torsion angle preferences in RDKit
            ETKDG conformer generation. By default the RDKit version
            determines whether or not to switch this on.

   "RNGSeed"
      Type:
         Integer

      Description:
         Initial guesses for conformers can be randomly generated by
         RDKit, using the ETKDG algorithm. For reproducibility, a
         random number seed can be provided here.

   "TORSION"
      Type:
         Block

      Description:
         Options for the TorsionGenerator, which generates geometries
         by enumerative rotation around rotatable bonds. This is the
         slowest of all generator, and quickly becomes infeasible for
         large systems. Currently does not work for systems with
         interconnected rings.

      "Dtheta"
         Type:
            Float

         Default value:
            60.0

         Description:
            The angle over which the bonds are rotated, in order to
            create a new conformer.

"Expander"
   Type:
      Block

   Description:
      Options for the conformer expander. The Expander expands an
      existing conformer set, by adding new conformers to it. The new
      conformers are generated from the original conformers in the
      set. Unlike the generators, the outcome of an expander is
      therefore very dependent on the input conformations.
      The GC generator uses a genetic algorithm to create a
      combinatorial expansion by combining local substructures.
      The MD expander start MD simulations from the conformers in the
      set, and extracts snapshots to create new conformers. Both these
      expanders are part of the CREST generator.

   "AdjustInputBonds"
      Type:
         Bool

      Default value:
         Yes

      Description:
         If geometry optimization of the initial conformer results in
         bond changes, adjust the reference connectivity. If the
         changes are too severe, the calculation will stop.

   "GC"
      Type:
         Block

      Description:
         Options for the genetic algorithm for combinatorial expansion
         of conformer geometries. This generator only  works if a non-
         zero set of conformers is already provided.

      "MaxGCenergy"
         Type:
            Float

         Default value:
            6.0

         Description:
            The maximum energy (relative to the lowest in the set) of
            the conformers we are going to use for expansion. The
            default is 6.0 kcal/mol, but if MaxEnergy was set, then
            that value is used.

      "Parallel"
         Type:
            Bool

         Default value:
            Yes

         Description:
            Determines if the combinatorial expansion of conformers
            should be performed in parallel or not (default: True).

      "RMSDThreshold"
         Type:
            Float

         Default value:
            0.25

         Description:
            Newly generated geometries are only considered unique if
            their RMSD from all other newly generated geometries is
            larger than this threshold.

   "MD"
      Type:
         Block

      Description:
         Produces conformers by running a set of MD simulations at
         different elevated temperatures, extracting snapshots, and
         optimizing those.

      "MolecularDynamics"
         Type:
            Block

         Description:
            Configures molecular dynamics (with the velocity-Verlet
            algorithm) with and without thermostats. This block allows
            to specify the details of the molecular dynamics
            calculation. Default values will be ignored.

         "Checkpoint"
            Type:
               Block

            Description:
               Sets the frequency for storing the entire MD state
               necessary for restarting the calculation.

            "Frequency"
               Type:
                  Integer

               Default value:
                  1000

               GUI name:
                  Checkpoint frequency

               Description:
                  Write the MD state to the Molecule and MDResults
                  sections on ams.rkf once every N steps. Setting this
                  to zero disables checkpointing during the
                  simulation, but one checkpoint at the very end of
                  the simulation will always be written.
                  NOTE: This no longer controls the frequency of
                  writing MDStep*.rkf files, set
                  Trajectory%EngineResultsFreq instead.

            "WriteProperties"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Honor top-level Properties input block when writing
                  engine results files.
                  DEPRECATED: This input option will be removed in
                  AMS2026 and will be considered always enabled. If
                  you rely on it being disabled, please contact SCM
                  support.

         "InitialVelocities"
            Type:
               Block

            Description:
               Sets the frequency for printing to stdout and storing
               the molecular configuration on the .rkf file.

            "File"
               Type:
                  String

               Description:
                  AMS RKF file containing the initial velocities.

            "RandomVelocitiesMethod"
               Type:
                  Multiple Choice

               Default value:
                  Exact

               Options:
                  [Exact, Boltzmann, Gromacs]

               GUI name:
                  Velocity randomization method

               Description:
                  Specifies how are random velocities generated. Three
                  methods are available.
                  Exact: Velocities are scaled to exactly match set
                  random velocities temperature.
                  Boltzmann: Velocities are not scaled and sample
                  Maxwell-Boltzmann distribution. However, the
                  distribution is not corrected for constraints.
                  Gromacs: Velocities are scaled to match set random
                  velocities temperature, but removal of net momentum
                  is performed only after the scaling. Resulting
                  kinetic energy is lower based on how much net
                  momentum the system had.

            "Temperature"
               Type:
                  Float

               Unit:
                  Kelvin

               GUI name:
                  Initial temperature

               Description:
                  Sets the temperature for the Maxwell-Boltzmann
                  distribution when the type of the initial velocities
                  is set to random, in which case specifying this key
                  is mandatory.                               AMSinput
                  will use the first temperature of the first
                  thermostat as default.

            "Type"
               Type:
                  Multiple Choice

               Default value:
                  Random

               Options:
                  [Zero, Random, FromFile, Input]

               GUI name:
                  Initial velocities

               Description:
                  Specifies the initial velocities to assign to the
                  atoms. Three methods to assign velocities are
                  available.                               Zero: All
                  atom are at rest at the beginning of the
                  calculation.                               Random:
                  Initial atom velocities follow a Maxwell-Boltzmann
                  distribution for the temperature given by the
                  [MolecularDynamics%InitialVelocities%Temperature]
                  keyword.                               FromFile:
                  Load the velocities from a previous ams result file.
                  Input: Atom's velocities are set to the values
                  specified in the
                  [MolecularDynamics%InitialVelocities%Values] block,
                  which can be accessed via the Expert AMS panel in
                  AMSinput.

            "Values"
               Type:
                  Non-standard block

               Description:
                  This block specifies the velocity of each atom, in
                  Angstrom/fs, when
                  [MolecularDynamics%InitialVelocities%Type] is set to
                  Input. Each row must contain three floating point
                  values (corresponding to the x,y,z component of the
                  velocity vector) and a number of rows equal to the
                  number of atoms must be present, given in the same
                  order as the [System%Atoms] block.

         "NSteps"
            Type:
               Integer

            Default value:
               1000

            GUI name:
               Number of steps

            Description:
               The number of steps to be taken in the MD simulation.

         "Preserve"
            Type:
               Block

            Description:
               Periodically remove numerical drift accumulated during
               the simulation to preserve different whole-system
               parameters.

            "AngularMomentum"
               Type:
                  Bool

               Default value:
                  Yes

               GUI name:
                  : Angular momentum

               Description:
                  Remove overall angular momentum of the system. This
                  option is ignored for 2D and 3D-periodic systems,
                  and disabled by default for systems which are not
                  translationally invariant (for example when frozen
                  atoms are present).

            "CenterOfMass"
               Type:
                  Bool

               Default value:
                  No

               GUI name:
                  : Center of mass

               Description:
                  Translate the system to keep its center of mass at
                  the coordinate origin. This option is not very
                  useful for 3D-periodic systems.

            "Momentum"
               Type:
                  Bool

               Default value:
                  Yes

               GUI name:
                  Preserve: Total momentum

               Description:
                  Remove overall (linear) momentum of the system. This
                  is disabled by default for systems which are not
                  translationally invariant (for example when frozen
                  atoms are present).

         "Print"
            Type:
               Block

            Description:
               This block controls the printing of additional
               information to stdout.

            "System"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Print the chemical system before and after the
                  simulation.

            "Velocities"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Print the atomic velocities before and after the
                  simulation.

         "Restart"
            Type:
               String

            GUI name:
               Restart from

            Description:
               The path to the ams.rkf file from which to restart the
               simulation.

         "Shake"
            Type:
               Block

            Description:
               Parameters of the Shake/Rattle algorithm.

            "All"
               Type:
                  String

               Recurring:
                  True

               GUI name:
                  Constrain all

               Description:
                  Constraint description in one the following formats:
                  All [bondOrder] bonds at1 at2 [to distance]
                  All triangles at1 at2 at3
                  The first option constrains all bonds between atoms
                  at1 at2 to a certain length, while the second -
                  bonds at1-at2 and at2-at3 and the angle between
                  them.                               The [bondOrder]
                  can be a number or a string such as single, double,
                  triple or aromatic. If it's omitted then all bonds
                  between specified atoms will be constrained. Atom
                  names are case-sensitive and they must be as they
                  are in the Atoms block, or an asterisk '*' denoting
                  any atom. The distance, if present, must be in
                  Angstrom. If it is omitted then the bond length from
                  the initial geometry is used.
                  Important: only the bonds present in the system at
                  certain points of the simulation (at the start or
                  right after adding/removing atoms) can be
                  constrained, which means that the bonds may need to
                  be specified in the System block.
                  Warning: the triangles constraint should be used
                  with care because each constrained bond or angle
                  means removing one degree of freedom from the
                  dynamics. When there are too many constraints (for
                  example, "All triangles H C H" in methane) some of
                  them may be linearly dependent, which will lead to
                  an error in the temperature computation.
                  Valid examples:                               All
                  single bonds C C to 1.4
                  All bonds O H to 0.98
                  All bonds O H                               All
                  bonds H *                               All
                  triangles H * H

            "ConvergeR2"
               Type:
                  Float

               Default value:
                  1e-08

               Description:
                  Convergence criterion on the max squared difference,
                  in atomic units.

            "ConvergeRV"
               Type:
                  Float

               Default value:
                  1e-08

               Description:
                  Convergence criterion on the orthogonality of the
                  constraint and the relative atomic velocity, in
                  atomic units.

            "ExcludeRegion"
               Type:
                  String

               Default value:
               Description:
                  Exclude all atoms covered by this region expression
                  from all constraints. If both atoms of a bond belong
                  to ExcludeRegion, the bond will be kept
                  unconstrained, regardless of Shake%All or engine-
                  specific constraints.

            "Iterations"
               Type:
                  Integer

               Default value:
                  100

               Description:
                  Number of iterations.

            "ShakeInitialCoordinates"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Apply constraints before computing the first energy
                  and gradients.

         "Thermostat"
            Type:
               Block

            Recurring:
               True

            Description:
               This block allows to specify the use of a thermostat
               during the simulation. Depending on the selected
               thermostat type, different additional options may be
               needed to characterize the specific thermostat's
               behavior.

            "BerendsenApply"
               Type:
                  Multiple Choice

               Default value:
                  Global

               Options:
                  [Local, Global]

               GUI name:
                  Apply Berendsen

               Description:
                  Select how to apply the scaling correction for the
                  Berendsen thermostat:
                  - per-atom-velocity (Local)
                  - on the molecular system as a whole (Global).

            "ChainLength"
               Type:
                  Integer

               Default value:
                  10

               GUI name:
                  NHC chain length

               Description:
                  Number of individual thermostats forming the NHC
                  thermostat

            "Duration"
               Type:
                  Integer List

               GUI name:
                  Duration(s)

               Description:
                  Specifies how many steps should a transition from a
                  particular temperature to the next one in sequence
                  take.

            "Region"
               Type:
                  String

               Default value:
                  *

               Description:
                  The identifier of the region to thermostat. The
                  default *** applies the thermostat to the entire
                  system. The value can by a plain region name, or a
                  region expression, e.g. **-myregion* to thermostat
                  all atoms that are not in myregion, or
                  *regionA+regionB* to thermostat the union of the
                  'regionA' and 'regionB'. Note that if multiple
                  thermostats are used, their regions may not overlap.

            "Tau"
               Type:
                  Float

               Unit:
                  Femtoseconds

               GUI name:
                  Damping constant

               Description:
                  The time constant of the thermostat.

            "Temperature"
               Type:
                  Float List

               Unit:
                  Kelvin

               GUI name:
                  Temperature(s)

               Description:
                  The target temperature of the thermostat.
                  You can specify multiple temperatures (separated by
                  spaces). In that case the Duration field specifies
                  how many steps to use for the transition from one T
                  to the next T (using a linear ramp). For NHC
                  thermostat, the temperature may not be zero.

            "Type"
               Type:
                  Multiple Choice

               Default value:
                  None

               Options:
                  [None, Berendsen, NHC]

               GUI name:
                  Thermostat

               Description:
                  Selects the type of the thermostat.

         "TimeStep"
            Type:
               Float

            Default value:
               0.25

            Unit:
               Femtoseconds

            Description:
               The time difference per step.

         "Trajectory"
            Type:
               Block

            Description:
               Sets the frequency for printing to stdout and storing
               the molecular configuration on the .rkf file.

            "EngineResultsFreq"
               Type:
                  Integer

               Default value:
                  0

               GUI name:
                  Engine results frequency

               Description:
                  Write MDStep*.rkf files with engine-specific results
                  once every N steps. Setting this to zero disables
                  writing engine results files except for one file at
                  the end of the simulation. If this is set to a
                  negative value, the value of Checkpoint%Frequency
                  will be used instead.

            "ExitConditionFreq"
               Type:
                  Integer

               GUI name:
                  Exit condition frequency

               Description:
                  Check the exit conditions every N steps. By default
                  this is done every SamplingFreq steps.

            "PrintFreq"
               Type:
                  Integer

               GUI name:
                  Printing frequency

               Description:
                  Print current thermodynamic properties to the output
                  every N steps. By default this is done every
                  SamplingFreq steps.

            "SamplingFreq"
               Type:
                  Integer

               Default value:
                  100

               GUI name:
                  Sample frequency

               Description:
                  Write the molecular geometry (and possibly other
                  properties) to the ams.rkf file once every N steps.

            "TProfileGridPoints"
               Type:
                  Integer

               Default value:
                  0

               Description:
                  Number of points in the temperature profile. If
                  TProfileGridPoints > 0, a temperature profile along
                  each of the three lattice axes will be written to
                  the .rkf file. The temperature at a given profile
                  point is calculated as the total temperature of all
                  atoms inside the corresponding slice of the
                  simulation box, time-averaged over all MD steps
                  since the previous snapshot.​ By default, no profile
                  is generated.

            "WriteBonds"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write detected bonds to the .rkf file.

            "WriteCharges"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write current atomic point charges (if available) to
                  the .rkf file. Disable this to reduce trajectory
                  size if you do not need to analyze charges.

            "WriteCoordinates"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write atomic coordinates to the .rkf file.

            "WriteEngineGradients"
               Type:
                  Bool

               Default value:
                  No

               Description:
                  Write atomic gradients (negative of the atomic
                  forces, as calculated by the engine) to the History
                  section of ams.rkf.

            "WriteMolecules"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write the results of molecule analysis to the .rkf
                  file.

            "WriteVelocities"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Write velocities to the .rkf file. Disable this to
                  reduce trajectory size if you do not need to analyze
                  the velocities.

      "NMolDynStepsFactor"
         Type:
            Integer

         Description:
            If the number of MD steps for the metadynamics and regular
            MD are not explicitly set in the respecive blocks, then
            the number of steps determined from the flexibility of the
            system will be multiplied by this value.

      "Ngeoms"
         Type:
            Integer

         Default value:
            4

         Description:
            At each temperature, MD simulations are started from
            Ngeoms different starting geometries. The starting
            geometries are extracted from the provided conformer set.
            If the conformer set is empty, then no more than a single
            geometry per temperature can be provided, limiting the
            total number of MD simulations.

      "Temperatures"
         Type:
            Float List

         Default value:
            [400.0, 500.0]

         Unit:
            Kelvin

         Description:
            The list of different temperatures at which MD simulations
            are run.

      "UseShake"
         Type:
            Bool

         Default value:
            No

         Description:
            Constrain all -H bonds with shake. If turned on, the MD
            timestep is automatically increased.

   "MaxEnergy"
      Type:
         Float

      Unit:
         kcal/mol

      Description:
         Threshold for filtering out high-energy conformers. If the
         relative energy of a conformer with respect to the lowest
         conformer is larger than this value, the conformer will be
         discarded.

   "Method"
      Type:
         Multiple Choice

      Default value:
         GC

      Options:
         [MD, GC]

      GUI name:
         Generator method

      Description:
         Method used to generate the conformers.

   "Preoptimization"
      Type:
         Block

      Description:
         If this block is enabled geometries will be preoptimized.
         After preoptimization the high energy conformers will be
         discarded, and then from the remaining set the unoptimized
         geometries will be optimized at higher level. This is to
         prevent the preoptimizer from collapsing different conformers
         into a single false minimum. As a result, preoptimization is
         only useful if MaxEnergy is chosen low.

      "Enable"
         Type:
            Bool

         Default value:
            No

         Description:
            Perform preoptimization at a low level of accuracy.

      "Engine"
         Type:
            Block

         Description:
            The engine specifics to be used for preoptimization.

      "PreoptFactor"
         Type:
            Integer

         Default value:
            2

         Description:
            This factor is multiplied with MaxEnergy, to determine
            which high energy conformers can be discarded after
            preoptimization.

   "RDKitETKDG"
      Type:
         Block

      Description:
         Settings for the call to RDKits ETKDG conformer generator
         tool.

      "BestRMSDThreshold"
         Type:
            Float

         Default value:
            -1.0

         Description:
            After ETKDG conformer generation by RDKit, RDKit can be
            used to remove duplicates via the BestRMS algorithm. This
            filter does exactly the same as the RMSD equivalence
            detector in the Equivalence block.

      "Forcefield"
         Type:
            Multiple Choice

         Default value:
            None

         Options:
            [None, UFF, MMFF]

         Description:
            The name of the RDKit forcefield to use for geometry
            optimization at the end of ETKDG conformer generation (by
            default no geometry optimization is performed). Using the
            RDKit internal optimization may make the subsequent
            geometry optimizations with AMS faster.

      "Parallel"
         Type:
            Bool

         Default value:
            No

         Description:
            Experimental: Parallelize the RDKit generation step by
            calling the RDKit conformer generation method in parallel
            from multiple processes.

      "RMSDThreshold"
         Type:
            Float

         Default value:
            -1.0

         Description:
            Root Mean Square deviation threshold for removing
            similar/equivalent conformations during the RDKit ETKDG
            procedure. By default there is no pruning (value: -1).

      "UseExpTorsionAnglePrefs"
         Type:
            String

         Default value:
            default

         Description:
            Impose experimental torsion angle preferences in RDKit
            ETKDG conformer generation. By default the RDKit version
            determines whether or not to switch this on.

   "RNGSeed"
      Type:
         Integer

      Description:
         Initial guesses for conformers can be randomly generated by
         RDKit, using the ETKDG algorithm. For reproducibility, a
         random number seed can be provided here.

"Equivalence"
   Type:
      Block

   Description:
      Options for the procedure determining whether two structures are
      equivalent or distinct conformers.

   "AMS"
      Type:
         Block

      Description:
         Options for the AMS method of checking equivalence. This
         method uses the atomic distance matrices and the torsion
         angles between heavy atoms to determine if conformer
         candidates are duplicates.

      "DihedralThreshold"
         Type:
            Float

         Default value:
            30.0

         Description:
            Maximum difference a dihedral can have for a conformer to
            be considered a duplicate.

      "DistanceThreshold"
         Type:
            Float

         Default value:
            0.1

         Description:
            Maximum difference a distance between two atoms can have
            for a conformer to be considered a duplicate.

      "EnergyThreshold"
         Type:
            Float

         Default value:
            0.2

         Unit:
            kcal/mol

         Description:
            The energy difference beyond which two conformers are
            always considered distinct.

      "IrrelevantAtoms"
         Type:
            Integer List

         Description:
            To detect equivalence, only a subset of atoms is used. The
            atoms that are excluded from equivalence comparison should
            be specified here. By default only non-hydrogen atoms will
            be used for the comparison. Numbering starts at 0.

   "AcceptAll"
      Type:
         Bool

      Default value:
         No

      Description:
         If set to True, add any candidate to the set without checks
         of connectivity changes, stereo- or cis/trans isomerization,
         or duplication.

   "AcceptBondchanges"
      Type:
         Bool

      Default value:
         No

      Description:
         If set to True, perform all checks of a new conformer
         candidate, except for the connectivity check.

   "AcceptIsomers"
      Type:
         Bool

      Default value:
         No

      Description:
         If set to True, perform all checks of a new conformer
         candidate, except for the stereo- or cis/trans isomerization
         check.

   "CREST"
      Type:
         Block

      Description:
         Options for the CREST method of checking equivalence. This
         method uses the rotational constants of conformer candidates
         to determine if they are duplicates.

      "EnergyThreshold"
         Type:
            Float

         Default value:
            0.05

         Unit:
            kcal/mol

         Description:
            The energy difference beyond which two conformers are
            always considered distinct.

      "RMSDThreshold"
         Type:
            Float

         Default value:
            0.125

         Description:
            Threshold for the RMSD between two conformers that
            determines if they are duplicates or rotamers (according
            to the CREST rotamer definition.)

      "ScaledRotationalConstantSettings"
         Type:
            Block

         Description:
            By default, the equivalence of two geometries is
            determined mainly by comparing the rotational constants,
            and weighing the difference based on the average
            anisotropy of the two systems. This procedure has several
            settings that can be user defined.

         "RotationalConstantThreshold"
            Type:
               Float

            Default value:
               0.003

            Description:
               Threshold for the difference in rotational constants
               that determines if two geometries are duplicates. The
               threshold is weighed by the anisotropy of the systems.
               Note: in the grimme code they use 0.01 as
               bconst_threshold, but this leads to a lot of
               misclassifications (i.e. different conformers are
               classified as equivalent rotamers)  So, here we use a
               smaller default value.

   "CheckForDuplicates"
      Type:
         Bool

      Default value:
         Yes

      Description:
         If set to True, check any new conformer candidate for
         duplication, and only accept unique conformers. If set to
         False, accept duplicates into the set.

   "LogDuplicates"
      Type:
         Bool

      Default value:
         No

      Description:
         If set to True, print information on equivalence to logfile
         and standard output.

   "Method"
      Type:
         Multiple Choice

      Default value:
         CREST

      Options:
         [AMS, TFD, RMSD, CREST]

      GUI name:
         Equivalence method

      Description:
         Method used to determine (and filter out) equivalent
         conformers.                      The CREST equivalence method
         relies on rotational constants comparisons. For this reason,
         conformers with the same rotational constants (such as mirror
         images) will be considered equivalent conformers.
         The AMS equivalence method uses a distance matrix and
         dihedrals to compare conformers. This equivalence method can
         be computationally expensive for large molecules.
         The TFD equivalence method uses the Torsion Fingerprint
         Difference as implemented in RDKit.                      The
         RMSD equivalence method uses the RDKit GetBestRMS
         implementation.

   "RMSD"
      Type:
         Block

      Description:
         Options for the RMSD method of checking equivalence. This
         method uses the RDKit implementation of GetBestRMS, which
         enumerates over atomic permutations for pairs of geometries
         to detect duplicates based on the RMSD value.

      "EnergyThreshold"
         Type:
            Float

         Default value:
            0.05

         Unit:
            kcal/mol

         Description:
            The energy difference beyond which two conformers are
            always considered distinct.

      "RMSDThreshold"
         Type:
            Float

         Default value:
            0.125

         Description:
            Threshold on the RMSD difference to determine if two
            geometries represent the same conformer. This value is in
            Angstrom.

   "Reorder"
      Type:
         Bool

      Default value:
         Yes

      Description:
         Reorder conformers based on energy, whenever a new conformer
         is added.

   "TFD"
      Type:
         Block

      Description:
         Options for the TFD method of checking equivalence. This
         method uses the Torsion Finger Print method to determine if
         two conformer candidates are duplicates.

      "EnergyThreshold"
         Type:
            Float

         Default value:
            0.05

         Unit:
            kcal/mol

         Description:
            The energy difference beyond which two conformers are
            always considered distinct.

      "TFDThreshold"
         Type:
            Float

         Default value:
            0.05

         Description:
            Threshold on the torsion fingerprint difference to
            determine if two geometries represent the same conformer.
            This value is unit-less.

"GeometryOptimization"
   Type:
      Block

   Description:
      Some options / details regarding the optimization procedure.

   "ConvergenceQuality"
      Type:
         Multiple Choice

      Default value:
         VeryGood

      Options:
         [Normal, Good, VeryGood, Excellent]

      GUI name:
         Convergence

      Description:
         The tightness of the convergence of the geometry
         optimizations. Lower quality levels may lead to badly
         converged geometries being classified as distinct conformers.

   "GeometryOptimization"
      Type:
         Block

      Description:
         Configures details of the geometry optimization and
         transition state searches.

      "CalcPropertiesOnlyIfConverged"
         Type:
            Bool

         Default value:
            Yes

         Description:
            Compute the properties requested in the 'Properties'
            block, e.g. Frequencies or Phonons, only if the
            optimization (or transition state search) converged. If
            False, the properties will be computed even if the
            optimization did not converge.

      "Convergence"
         Type:
            Block

         Description:
            Convergence is monitored for up to 4 quantities: the
            energy change, the Cartesian gradients, the Cartesian step
            size, and for lattice optimizations the stress energy per
            atom. Convergence criteria can be specified separately for
            each of these items.

         "Energy"
            Type:
               Float

            Default value:
               1e-05

            Unit:
               Hartree

            Value Range:
               value > 0

            GUI name:
               Energy convergence

            Description:
               The criterion for changes in the energy. The energy is
               considered converged when the change in energy is
               smaller than this threshold times the number of atoms.

         "Gradients"
            Type:
               Float

            Default value:
               0.001

            Unit:
               Hartree/Angstrom

            Value Range:
               value > 0

            GUI name:
               Gradient convergence

            Description:
               Threshold for nuclear gradients.

         "Quality"
            Type:
               Multiple Choice

            Default value:
               Custom

            Options:
               [VeryBasic, Basic, Normal, Good, VeryGood, Custom]

            GUI name:
               Convergence

            Description:
               A quick way to change convergence thresholds: 'Good'
               will reduce all thresholds by an order of magnitude
               from their default value. 'VeryGood' will tighten them
               by two orders of magnitude. 'Basic' and 'VeryBasic'
               will increase the thresholds by one or two orders of
               magnitude respectively.

         "Step"
            Type:
               Float

            Default value:
               0.01

            Unit:
               Angstrom

            Value Range:
               value > 0

            GUI name:
               Step convergence

            Description:
               The maximum Cartesian step allowed for a converged
               geometry.

         "StressEnergyPerAtom"
            Type:
               Float

            Default value:
               0.0005

            Unit:
               Hartree

            Value Range:
               value > 0

            Description:
               Threshold used when optimizing the lattice vectors. The
               stress is considered 'converged' when the maximum value
               of stress_tensor * cell_volume / number_of_atoms is
               smaller than this threshold (for 2D and 1D systems, the
               cell_volume is replaced by the cell_area and
               cell_length respectively).

      "CoordinateType"
         Type:
            Multiple Choice

         Default value:
            Auto

         Options:
            [Auto, Delocalized, Cartesian]

         GUI name:
            Optimization space

         Description:
            Select the type of coordinates in which to perform the
            optimization. 'Auto' automatically selects the most
            appropriate CoordinateType for a given Method.
            If 'Auto' is selected, Delocalized coordinates will be
            used for the Quasi-Newton method, while Cartesian
            coordinates will be used for all other methods.

      "Dimer"
         Type:
            Block

         Description:
            Options for the Dimer method for transition state search.

         "AngleThreshold"
            Type:
               Float

            Default value:
               1.0

            Unit:
               Degree

            Description:
               The rotation is considered converged when the the
               rotation angle falls below the specified threshold.

         "DimerDelta"
            Type:
               Float

            Default value:
               0.01

            Unit:
               Angstrom

            Description:
               Euclidian distance between the midpoint and the
               endpoint.

         "ExtrapolateForces"
            Type:
               Bool

            Default value:
               Yes

            Description:
               Set to false to call engine to calculate forces at the
               extrapolated rotation angle instead of extrapolating
               them.

         "LBFGSMaxVectors"
            Type:
               Integer

            Default value:
               10

            Description:
               Max number of vectors for the L-BFGS algorithm to save.

         "MaxRotationIterations"
            Type:
               Integer

            Default value:
               10

            Description:
               Maximum number of rotation iterations for a single
               translation step.

         "Region"
            Type:
               String

            Default value:
               *

            Description:
               Include only atoms of the specified region(s) in the
               rotations, which allows searching for a transition
               state involving selected atoms only.

         "RotationTrustRadius"
            Type:
               Float

            Default value:
               0.1

            Unit:
               Angstrom

            Description:
               L-BFGS trust radius during rotation iterations.

         "TranslationTrustRadius"
            Type:
               Float

            Default value:
               0.1

            Unit:
               Angstrom

            Description:
               L-BFGS trust radius during translation iterations.

      "EngineAutomations"
         Type:
            Block

         Description:
            The optimizer can change some settings of the engine,
            based for instance on the error.
            The idea is to allow the engine to be a bit quicker at the
            start, and more accurate towards the end.
            Automations are always engine specific.

         "Enabled"
            Type:
               Bool

            Default value:
               Yes

            Description:
               Whether or not automations are enabled at all.

         "Gradient"
            Type:
               Block

            Recurring:
               True

            Description:
               A gradient-based automation.

            "FinalValue"
               Type:
                  Float

               Description:
                  This value will be used whenever the gradient is
                  less than GradientLow

            "HighGradient"
               Type:
                  Float

               Default value:
                  1.0

               Unit:
                  Hartree/Angstrom

               Description:
                  Defines a large gradient. When the actual gradient
                  is between GradientHigh and GradientLow a linear
                  interpolation scheme is used for kT (on a log
                  scale).

            "InitialValue"
               Type:
                  Float

               Description:
                  This value will be used at the first geometry, and
                  whenever the gradient is higher than GradientHigh

            "LowGradient"
               Type:
                  Float

               Default value:
                  1.0

               Unit:
                  Hartree/Angstrom

               Description:
                  Defines a small gradient, see GradientHigh

            "UseLogInterpolation"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Whether to use interpolation on a log (y) scale or
                  not

            "Variable"
               Type:
                  String

               Default value:
               Description:
                  variable to be tweaked for the engine.

         "Iteration"
            Type:
               Block

            Recurring:
               True

            Description:
               Geometry step based automation.

            "FinalValue"
               Type:
                  Float

               Description:
            "FirstIteration"
               Type:
                  Integer

               Default value:
                  1

               Description:
                  When the actual gradient is between the first and
                  last iteration, a linear interpolation is used.

            "InitialValue"
               Type:
                  Float

               Description:
                  This value will be used when the iteration number is
                  smaller or equal to FirstIteration

            "LastIteration"
               Type:
                  Integer

               Default value:
                  10

               Description:
                  Where the automation should reach the FinalValue

            "UseLogInterpolation"
               Type:
                  Bool

               Default value:
                  Yes

               Description:
                  Whether to use interpolation on a log (y) scale or
                  not

            "Variable"
               Type:
                  String

               Default value:
               Description:
                  variable to be tweaked for the engine.

      "FIRE"
         Type:
            Block

         Description:
            This block configures the details of the FIRE optimizer.
            The keywords name correspond the the symbols used in the
            article describing the method, see PRL 97, 170201 (2006).

         "AllowOverallRotation"
            Type:
               Bool

            Default value:
               Yes

            Description:
               Whether or not the system is allowed to freely rotate
               during the optimization. This is relevant when
               optimizing structures in the presence of external
               fields.

         "AllowOverallTranslation"
            Type:
               Bool

            Default value:
               No

            Description:
               Whether or not the system is allowed to translate
               during the optimization. This is relevant when
               optimizing structures in the presence of external
               fields.

         "MapAtomsToUnitCell"
            Type:
               Bool

            Default value:
               No

            Description:
               Map the atoms to the central cell at each geometry
               step.

         "NMin"
            Type:
               Integer

            Default value:
               5

            Description:
               Number of steps after stopping before increasing the
               time step again.

         "alphaStart"
            Type:
               Float

            Default value:
               0.1

            Description:
               Steering coefficient.

         "dtMax"
            Type:
               Float

            Default value:
               1.0

            Unit:
               Femtoseconds

            Description:
               Maximum time step used for the integration. For ReaxFF
               and APPLE&P, this value is reduced by 50%.

         "dtStart"
            Type:
               Float

            Default value:
               0.25

            Unit:
               Femtoseconds

            Description:
               Initial time step for the integration.

         "fAlpha"
            Type:
               Float

            Default value:
               0.99

            Description:
               Reduction factor for the steering coefficient.

         "fDec"
            Type:
               Float

            Default value:
               0.5

            Description:
               Reduction factor for reducing the time step in case of
               uphill movement.

         "fInc"
            Type:
               Float

            Default value:
               1.1

            Description:
               Growth factor for the integration time step.

         "strainMass"
            Type:
               Float

            Default value:
               0.5

            Description:
               Fictitious relative mass of the lattice degrees of
               freedom. This controls the stiffness of the lattice
               degrees of freedom relative to the atomic degrees of
               freedom, with smaller values resulting in a more
               aggressive optimization of the lattice.

      "HessianFree"
         Type:
            Block

         Description:
            Configures details of the Hessian-free (conjugate
            gradients or L-BFGS) geometry optimizer.

         "Step"
            Type:
               Block

            Description:
            "MaxCartesianStep"
               Type:
                  Float

               Default value:
                  0.1

               Unit:
                  Angstrom

               Description:
                  Limit on a single Cartesian component of the step.

            "MinRadius"
               Type:
                  Float

               Default value:
                  0.0

               Unit:
                  Angstrom

               Description:
                  Minimum value for the trust radius.

            "TrialStep"
               Type:
                  Float

               Default value:
                  0.0005

               Unit:
                  Angstrom

               Description:
                  Length of the finite-difference step when
                  determining curvature. Should be smaller than the
                  step convergence criterion.

            "TrustRadius"
               Type:
                  Float

               Default value:
                  0.2

               Unit:
                  Angstrom

               Description:
                  Initial value of the trust radius.

      "InitialHessian"
         Type:
            Block

         Description:
            Options for initial model Hessian when optimizing systems
            with the Quasi-Newton method.

         "File"
            Type:
               String

            GUI name:
               Initial Hessian from

            Description:
               KF file containing the initial Hessian (or the results
               dir. containing it). This can be used to load a Hessian
               calculated in a previously with the
               [Properties%Hessian] keyword.

         "Type"
            Type:
               Multiple Choice

            Default value:
               Auto

            Options:
               [Auto, UnitMatrix, Swart, FromFile, Calculate,
               CalculateWithFastEngine]

            GUI name:
               Initial Hessian

            Description:
               Select the type of initial Hessian. Auto: let the
               program pick an initial model Hessian. UnitMatrix:
               simplest initial model Hessian, just a unit matrix in
               the optimization coordinates. Swart: model Hessian from
               M. Swart. FromFile: load the Hessian from the results
               of a previous calculation (see InitialHessian%File).
               Calculate: compute the initial Hessian (this may be
               computationally expensive and it is mostly recommended
               for TransitionStateSearch calculations).
               CalculateWithFastEngine: compute the initial Hessian
               with a faster engine.

      "KeepIntermediateResults"
         Type:
            Bool

         Default value:
            No

         Description:
            Whether the full engine result files of all intermediate
            steps are stored on disk. By default only the last step is
            kept, and only if the geometry optimization converged.
            This can easily lead to huge amounts of data being stored
            on disk, but it can sometimes be convenient to closely
            monitor a tricky optimization, e.g. excited state
            optimizations going through conical intersections, etc.
            ...

      "MaxIterations"
         Type:
            Integer

         Value Range:
            value >= 0

         GUI name:
            Maximum number of iterations

         Description:
            The maximum number of geometry iterations allowed to
            converge to the desired structure.

      "MaxRestarts"
         Type:
            Integer

         Default value:
            0

         Description:
            If a geometry optimization of a system with no symmetry
            operators (or with explicitly disabled symmetry:
            "UseSymmetry False") and enabled PES point
            characterization converges to a transition state (or
            higher order saddle point), it can be restarted
            automatically after a small displacement along the
            imaginary vibrational mode. In case the restarted
            optimization again does not find a minimum, this can
            happen multiple times in succession. This keyword sets the
            maximum number of restarts. The default value is 0, so the
            automatic restarting is disabled by default.

      "Method"
         Type:
            Multiple Choice

         Default value:
            Auto

         Options:
            [Auto, Quasi-Newton, FIRE, L-BFGS, ConjugateGradients,
            Dimer]

         GUI name:
            Optimization method

         Description:
            Select the optimization algorithm employed for the
            geometry relaxation. Currently supported are:
            the Hessian-based Quasi-Newton-type BFGS algorithm,
            the fast inertial relaxation method (FIRE),
            the limited-memory BFGS method,
            and the conjugate gradients method. The default is to
            choose an appropriate method automatically based on the
            engine's speed, the system size and the supported
            optimization options.

      "OptimizeLattice"
         Type:
            Bool

         Default value:
            No

         Description:
            Whether to also optimize the lattice for periodic
            structures. This is currently supported with the Quasi-
            Newton, FIRE, and L-BFGS optimizers.

      "PretendConverged"
         Type:
            Bool

         Default value:
            No

         Description:
            Normally a non-converged geometry optimization is
            considered an error. If this keyword is set to True, the
            optimizer will only produce a warning and still claim that
            the optimization is converged. (This is mostly useful for
            scripting applications, where one might want to consider
            non-converged optimizations still successful jobs.)

      "Quasi-Newton"
         Type:
            Block

         Description:
            Configures details of the Quasi-Newton geometry optimizer.

         "MaxGDIISVectors"
            Type:
               Integer

            Default value:
               0

            Description:
               Sets the maximum number of GDIIS vectors. Setting this
               to a number >0 enables the GDIIS method.

         "Step"
            Type:
               Block

            Description:
            "TrustRadius"
               Type:
                  Float

               Description:
                  Initial value of the trust radius.

            "VaryTrustRadius"
               Type:
                  Bool

               Description:
                  Whether to allow the trust radius to change during
                  optimization. By default True during energy
                  minimization and False during transition state
                  search.

         "UpdateTSVectorEveryStep"
            Type:
               Bool

            Default value:
               Yes

            GUI name:
               Update TSRC vector every step

            Description:
               Whether to update the TS reaction coordinate at each
               step with the current eigenvector.

      "RestartDisplacement"
         Type:
            Float

         Default value:
            0.05

         Unit:
            Angstrom

         Description:
            If a geometry optimization of a system with no symmetry
            operators (or with explicitly disabled symmetry:
            "UseSymmetry False") and enabled PES point
            characterization converges to a transition state (or
            higher order saddle point), it can be restarted
            automatically after a small displacement along the
            imaginary vibrational mode. This keywords sets the size of
            the displacement for the furthest moving atom.

   "Keep"
      Type:
         Multiple Choice

      Default value:
         None

      Options:
         [None, all]

      Description:
         Keep all the output files of the geometry optimizations. If
         set to 'all', must be used in combination with
         Output%KeepWorkDir. This will automatically set UseAMSWorker
         to False.

   "MaxConvergenceTime"
      Type:
         Multiple Choice

      Default value:
         Default

      Options:
         [Default, High]

      Description:
         The number of iterations for the geometry optimization, based
         on the number of atoms in the system. The default value is
         the general AMS value for geometry optimization. Often, for
         conformer generation, it needs to be set higher.

   "MaxOptimizations"
      Type:
         Integer

      Default value:
         1000

      Description:
         Set a maximum to the number of geometries accepted for
         optimization at once, per AMSWorker (so should be multiplied
         by the number of cores used). If not set, the disc size
         requirements can become too large.

   "OptimizationMethod"
      Type:
         Multiple Choice

      Default value:
         Quasi-Newton

      Options:
         [Auto, Quasi-Newton, FIRE, L-BFGS, ConjugateGradients, Dimer]

      Description:
         Select the optimization algorithm employed for the geometry
         relaxation. Currently supported are:
         the Hessian-based Quasi-Newton-type BFGS algorithm,
         the fast inertial relaxation method (FIRE),
         the limited-memory BFGS method,                       and the
         conjugate gradients method. The default is Quasi-Newton,
         which gives the most reliable results for conformers. The
         Auto method leaves it to the AMS GeometryOptimization task to
         select a method.

   "UseAMSWorker"
      Type:
         Bool

      Default value:
         Yes

      Description:
         Whether the set of optimizations should be run via the
         AMSWorkerPool or via regular AMSJobs.

   "WriteGeometries"
      Type:
         Block

      Description:
         Determines if and where optimized geometries will be written
         to file during optimization. When the AMSWorker is used, then
         the write interval depends on MaxOptimizations. If enabled,
         must be used in combination with Output%KeepWorkDir.

      "Dirname"
         Type:
            String

         Default value:
            conf_tmpdir

         Description:
            The name of the folder that should contain the optimized
            geometries.

      "Enabled"
         Type:
            Bool

         Default value:
            No

         Description:
            Enables or disables the periodic writing of optimized
            geometries to file
