Link Search Menu Expand Document

Input File Documentation

This page contains a guide to CREST input files that can be used with program versions >3.0.

CREST 3.0

CREST program instructions via the various command line arguments can become quite lengthy and tedious. Therefore, following version 3.0 of CREST, input files will be available. Currently, the input files are based on the TOML format and are parsed using TOML-F.

CREST input files can be loaded with the --input command

crest struc.xyz --input input.toml

or simply be given as the first argument (the file extension .toml is mandatory)

crest input.toml

where the input.toml would look something like this

# CREST 3 input file
input = "struc.xyz"   
runtype="ancopt"
threads = 9

[calculation]
elog="energies.log"

[[calculation.level]]
method = "gfn2"
uhf = 0
chrg = 0

As can be seen from this example, the file is hierarchically structured. At the top level, things like the input coord file name, runtype, and parallelization are specified. The calculation group (defined by [ ]) includes some settings about the internal calculation settings and printouts, while its level subgroup (defined by [[ ]]) provides the actual method and calculation information.

Some more input file example can be found here:

Go to Example Input Files

The documentation of blocks and keywords can be found in the following.


Hierarchical structure of CREST input files

  1. General settings
  2. [calculation] block
    1. [[calculation.level]] sub-blocks
    2. Per-level thread reservation
    3. [[calculation.constraints]] sub-blocks
  3. [dynamics] block
    1. [[dynamics.meta]] sub-blocks
  4. [cregen] block
  5. [ttconf] block

General settings

These settings are not part of any block and can be specified at the beginning of an input file.

KeyValues / Description
input
Specify the atomic input coordinate file as a string
input_ensemble
Specify an ensemble input file as a string
threads
Specify the number of CPU threads to be used as an integer
bin, binary
Specify a xtb binary as a string. Used for legacy runtypes of CREST. This is equivalent to the --xnam cmd argumnet. For new integrations use the binary option within the [calculation.level] block.
runtype
Select the CREST runtype, specify as a string.
The possible values are:
  • none - do nothing
  • singlepoint,sp - perform a single calculation for the input structure
  • ancopt,optimize - optimize the input structure
  • numhess - numerical calculation of second derivatives
  • ancopt_ensemble,optimize_ensemble,mdopt - optimize the input ensemble, similar to the --mdopt function.
  • screen_ensemble,screen - optimize the input ensemble in a multistep procedure and sort, similar to the --screen function.
  • md,mtd,dynamics,metadynamics - perform a (meta)dynamics simulation.
  • imtd-gc - Standard conformational sampling algo based on metadynamics
  • nci-mtd,nci - perform sampling with a wall potential (NCI_MTD workflow)
  • entropy,imtd-smtd - perform extensive sampling targeting configurational entropy
  • cregen,sort - CREST 3.1 run the CREGEN ensemble sorting/filtering as a standalone step
  • basinhopping,bh - CREST 3.1 basin-hopping global optimization (settings via [basinhopping] block)
  • ttconf - CREST 3.1 TTConf tensor-train conformer search, a reimplementation of the method of Zurek et al. (settings via [ttconf] block)
  • ensemblehess - CREST 3.1 compute Hessians and thermochemistry for every structure in an ensemble
constraints
Specify a file with the xtb-style structure constraints to be included in the calculation.
preopt
Activate/Deactivate pre-optimization.
Specify as boolean (true/false)
topo
Activate/Deactivate topology checks.
Specify as boolean (true/false)

[calculation] block

The [calculation] block contains information on how to get energies and gradients for all other interfaces, i.e., specification on which programs to run and how to process the input/output data from a given list of [[calculation.level]] objects (see below ). This block also contains settings for optimizations.

KeyValues / Description
type
Instruction on how to process energies and gradients. Can be specified as string or integer. Possible values are:
  • any integer > 0 - Select the respective [[calculation.level]] block (see below ) to be used (if multiple have been defined). By default the first one is taken.
  • mecp - Take the first two specified levels and average energy and gradients.
elog
Specify a file as a string to which energies are logged, e.g., in each optimization step.
eprint
Activate/Deactivate the energy printout via elog.
Specify as boolean (true/false)
opt_engine
Select geometry optimization algorithm as a string.
  • ancopt - Use the ANCOPT algorithm (RFO with internal coordinates)
  • rfo - Use a rational function algorithm (Cartesian coordinates)
  • gd - Use a simple gradient descent algorithm (Cartesian coordinates)
  • lbfgs - CREST 3.1 Use the limited-memory BFGS optimizer
  • nr - CREST 3.1 Use the Newton–Raphson optimizer (second-order, requires Hessian)
hess_update
Select the Hessian update method for ANCOPT as a string. Note, that for regular optimizations with ANCOPT only BFGS works well.
  • bfgs - Use the default BFGS update
  • powell - Use the Powell update method
  • sr1 - Use the symmetric rank one (SR1) update method
  • bofill - Use the Bofill type update
  • schlegel - Use the Farkas-Schlegel type update
maxcycle
Specify maximum optimization cycles an integer
optlev
Specify default settings/convergence conditions in geometry optimization (see Tab. IV of https://doi.org/10.1063/5.0197592). Pre-defined levels are crude, vloose, loose, normal, tight, vtight, extreme and must be provided as a string
converge_e
Specify energy convergence criterium for geometry optimization as a real in Hartree
converge_g
Specify gradient norm/RMS force convergence criterium for geometry optimization as a real in Hartree/Bohr
freeze
Provide a list of atoms which shall be entirely frozen in geometry optimization and MD simulations. The atom list should be given as a string in the atom list format

[[calculation.level]] sub-blocks

The [[calculation.level]] sub-blocks contain actual information about employed levels of theory, the used programs, and system specific data such as the molecular charge or number of α and β electrons.

KeyValues / Description
method
Specify the method or type of theory to be used in this calculation as a string. This will instruct CREST on the format of energies and gradients that shall be read. Possible values are:
  • tblite - Select tblite as calculation backend, should be used in combination with the tblite_level argument
  • gfn2 - Quick selection of GFN2-xTB via tblite
  • gfn1 - Quick selection of GFN1-xTB via tblite
  • gfnff - Select GFN-FF via the gfnff-submodule project
  • gfn0 - Select GFN0-xTB via the gfn0-submodule project
  • gfn0* - Select a special GFN0-xTB calculator used for MECP calculations (see https://doi.org/10.1021/acs.jpclett.3c00494
  • xtb,gfn,gfn-xtb - Select GFNn-xTB method calculations performed via the xtb program. Should be used in combination with the binary option within this block. However, this setting is not generally recommended because it will be much slower than the tblite backend.
  • gxtb,g-xtb - CREST 3.1 Select g-xTB via tblite. g-xTB is the generalized extended tight-binding model and the designated successor of GFNn-xTB. Requires a build with g-xTB support.
  • orca - ORCA subprocesses. Requires the argument orca_cmd, plus either orca_input or orca_template (see below) in addition to this argument.
  • mlip - CREST 3.1 ML/classical interatomic potentials served by the fmlip-relay socket server. Use in combination with mlip_backend and the other mlip_* keys documented on the MLIP example page.
  • generic - Call a generic script. The script should process the coordinates that crest writes into a file genericinp.xyz and you must know how to obtain the gradient (see options gradtype and gradfile below)`
bin, binary
Select the program/binary/script name to be executed by CREST in order to generate energies and gradients. Can be a full path. Specify as a string. Should not be confused with the bin command in the main block, nor with the --xnam functionality via the command line settings. If addressing xtb via this option, include all command line arguments like -alpb to this like you would call the binary on its own.
dir, calcspace
Specify the directory in which CREST shall perform this calculation as a string. Note, this is can be a relative OR absolute path to the directory.
threads, ncores
CREST 3.1 Number of CPU cores reserved for this level in every energy+gradient call. Specify as an integer; the default 0 means “unset” and reproduces the behavior of earlier versions. Not to be confused with the global threads setting, which defines the total number of cores available to CREST. The reservation has two effects:
  • CREST reduces the number of concurrent jobs (e.g. parallel optimizations or metadynamics) such that \(N_\text{jobs} \times N_\text{threads}^\text{level} \le N_\text{threads}^\text{total}\), so that the machine is never oversubscribed.
  • For calculators that can be told how many cores to use, the value is handed down explicitly: ORCA subprocesses receive a %pal nprocs <threads> end block, and mlip (fmlip-relay) servers are started with --max-threads <threads>. Other calculators (internal ones, xtb, generic scripts) instead inherit the cores per job via OMP_NUM_THREADS.
chrg, charge
Specify the molecular charge as an integer.
uhf
Specify multiplicity information as an integer. For xtb calculations this number must be Δn = Nα - Nβ electrons.
rdwbo
Activate/Deactivate reading of bond orders for each singlepoint at the chosen level. Specify as boolean (true/false)
rddip
Activate/Deactivate reading of molecular dipole moments for each singlepoint at the chosen level. Specify as boolean (true/false)
dipgrad
Activate/Deactivate reading of the Cartesian gradient of the molecular dipole moments for each singlepoint at the chosen level. Specify as boolean (true/false)
gradfile
Name the file from which each singlepoint in the generic method interface obtains the energy and gradient information. Specify as string
gradtype
Name the gradient file format for each singlepoint in the generic method interface. Specify as string. Available options are:
  • engrad - the .engrad format used by e.g. xtb and ORCA.
orca_cmd
Path to (or name of) the ORCA executable used for method = "orca" levels. Specify as a string. Since ORCA requires the full path for its MPI startup, an absolute path is recommended.
orca_input
CREST 3.1 ORCA simple-input (!) line, given as a string, from which CREST assembles the complete ORCA input for each call — no template file needed. Example: orca_input = "! r2scan-3c def2/J TightSCF DefGrid3". Any runtype keyword (Opt, Freq, MD, SP, …) and any PALn keyword are stripped, EnGrad is appended, and the %pal/%maxcore blocks are written from threads and orca_memory. Mutually exclusive with orca_template.
orca_template
An ORCA input file (string) that is used as a template: CREST reuses all of its method/basis/grid settings and only replaces the coordinate block for each call. If threads is set for the level, existing %pal blocks and PALn keywords in the template are removed and replaced by CREST’s own %pal nprocs <threads> end; likewise %maxcore is replaced if orca_memory is given. Mutually exclusive with orca_input.
orca_memory,
orca_maxcore
CREST 3.1 ORCA %maxcore value, i.e., the memory per core in MB. Specify as an integer. Total memory of the ORCA job is thus roughly orca_memory × threads.
spin_polarized
CREST 3.1 Activate spin-polarized (open-shell) treatment for tblite-based methods. Specify as boolean (true/false). Must be combined with uhf > 0 to define the spin state.
efield
CREST 3.1 Apply a homogeneous external electric field to tblite single-points and optimizations. Specify as a list of three reals [Ex, Ey, Ez] in V/Å. Example: efield = [0.0, 0.0, 0.05]
ceh_guess
CREST 3.1 Use CEH (Charge Extended Hückel) partial charges as the initial guess before the first tblite or GFN-FF call. Specify as boolean (true/false).

Per-level thread reservation

CREST 3.1

Most CREST workflows (conformational sampling, ensemble optimizations, metadynamics) run many jobs at the same time, each of which requires energies and gradients. By default, CREST assumes that a single energy+gradient call uses one core and distributes the global threads over as many concurrent jobs as possible.

This assumption breaks down for calculators that are themselves parallelized, such as ORCA subprocesses or ML potentials served by fmlip-relay. For those, the threads (or ncores) key can be set inside a [[calculation.level]] block to reserve a fixed number of cores for each call of that level:

# CREST 3 input file
input   = "struc.xyz"
runtype = "imtd-gc"
threads = 12                 # total cores available to CREST

[[calculation.level]]
method      = "orca"
orca_cmd    = "/path/to/orca"
orca_input  = "! r2scan-3c def2/J TightSCF DefGrid3"
threads     = 4              # cores per ORCA call -> %pal nprocs 4 end
orca_memory = 3000           # -> %maxcore 3000 (per core, MB)

With this input CREST will run at most 3 concurrent jobs with 4 cores each instead of 12 single-core jobs, and each of those jobs starts an ORCA calculation that is allowed to use exactly 4 cores. In general, the number of parallel jobs is capped such that

\[N_\text{jobs} \times N_\text{threads}^\text{level} \le N_\text{threads}^\text{total}\]

where \(N_\text{threads}^\text{level}\) is the largest threads value among all active levels. Two things are worth keeping in mind:

  • Levels that hand the reservation down explicitly (orca via %pal, mlip via --max-threads) are hard-capped: they will use exactly that many cores. If the total thread count is not a multiple of the reservation, the remaining cores stay idle and CREST prints a corresponding **NOTE** at the start of the run. Other calculators (internal ones, xtb, generic scripts) instead grow into the cores per job via OMP_NUM_THREADS and thus soak up the remainder.
  • If a single level requests more cores than are available in total, CREST warns and falls back to one job using all available cores.

Leaving the per-level threads unset (the default) reproduces the behavior of earlier CREST versions exactly.


[[calculation.constraints]] sub-blocks

The [[calculation.constraints]] sub-blocks are used to introduce constraints. Constraints are calculated by CREST and added to the energies and gradients.

KeyValues / Description
bond, bonds
Introduce automatic bond constraints either as a string keyword, or with a mixed-type list. Available values are:
  • all - put a constraint on all (automatically identified) bonds
sphere
Define a spherical wall potential around the system. The argument is a list of reals of the format [ a, b, c], where a is the potential prefactor, b is the exponent, and c is the radius (in atomic units, i.e., Bohr).
sphere_logfermi
Define a spherical logfermi-type wall potential around the system. The argument is a list of reals of the format [ a, b, c], where a is the logfermi temperature in K, b is the exponent factor, and c is the sphere radius (in atomic units, i.e., Bohr).
gapfiff
Introduce a simple constraint to the gap between two potentials ([[calculation.level]] objects) in the MECP mode. The argument is a list of reals of the format [ σ, α], where σ is a potential prefactor and α is a confinement parameter.
mecp, gapfiff2
Introduce a modified constraint to the gap between two potentials ([[calculation.level]] objects) in the MECP mode. The argument is a list of reals of the format [ σ, α, c], where σ is a potential prefactor, α is a confinement parameter, and c is a shift in the exponential scaling function.

[dynamics] block

The [dynamics] block is used to define basic settings for CRESTs standalone molecular dynamics and metadynamics module. Note, that some [calculation] must have been defined.

KeyValues / Description
length
Set the simulation length in ps. The argument is specified as a real.
tstep
Set the time step in fs. The argument is specified as a real.
dump
Set the trajectory snapshot dump frequency in fs. The argument is specified as a real.
hmass
Set the hydrogen mass in amu. The argument is specified as a real. Increasing the hydrogen mass helps the simulation to run more stable.
thermostat
CREST 3.1 Select the thermostat algorithm. Specify as a string.
  • berendsen - Berendsen velocity rescaling [default]
  • langevin - Langevin stochastic thermostat (friction + random noise)
  • csvr,bdp - Bussi–Donadio–Parrinello canonical thermostat (correct NVT ensemble distribution)

[[dynamics.meta]] sub-blocks

The [[dynamics.meta]] sub-block is used to define metadynamics parameters for a MD simulation in CREST. Multiple metadynamics potentials can be defined (as separate [[dynamics.meta]] sub-blocks) and added to the same MD ([dynamics] block).

KeyValues / Description
type
Set the metadynamics type with regards to the employed collective variable. Specify the argument as a string. Available types are:
  • rmsd - Use the Cartesian RMSD between the snapshot and a reference structure list as collective variables.
alpha
Set the exponent of the Gaussian metadynamics potential. Specify as a real.
kpush
Set the Gaussian metadynamics potential prefactor in Eh. Specify as a real.
dump,dump_fs,
dump_ps
Specify the reference structure dump frequency for RMSD-based metadynamics in fs (or ps for dump_ps) as a real.

[cregen] block

The [cregen] block is used for defining global options related to the ensemble sorting procedures. For more information on the CREGEN procedure see our recent publication in J Chem Phys.

KeyValues / Description
ewin
Set the total energy window for CREGEN relative to the lowest energy of structures in the ensemble. Specify as real in kcal/mol. Default: 6.0
rthr
Set the Cartesian RMSD threshold for distinguishing two conformers. Specify as real in Angstroem. Default: 0.125
ethr
Set an energy threshold for distinguishing two conformers. Specify as real in Angstroem. Default: 0.05
bthr
Set a rotational constant threshold for distinguishing two conformers. Specify as real in MHz. Default: 0.01
eqv, nmr
Try to determine nuclear equivalencies from the ensemble, e.g. for NMR applications. Specify as boolean

[ttconf] block

CREST 3.1

The [ttconf] block controls the TTConf tensor-train conformer search (a reimplementation of the method of Zurek et al.), selected with runtype = "ttconf" (or the -ttconf command line flag). All keys are optional; a preset can be used as a starting point and any individual key overrides it. Every key except bonds has an equivalent command line flag (see the TTConf Options ), and command line flags override the values read from the file. A worked example is given on the TTConf example page.

KeyValues / Description
preset
CREST 3.1 Apply a named preset as a string: fast (rank 2, 2 sweeps), normal (rank 3, 8 sweeps, the default) or accurate (rank 6, 6 sweeps). Other keys in this block override the preset.
rank, r
TT rank r. Specify as an integer. Default: 3.
sweeps, s
Number of TT-cross sweeps s. Specify as an integer. Default: 8.
grid, ngrid
Number of dihedral grid points (spacing = 360/n degrees). Specify as an integer. Default: 6.
ninit
Number of random initial tail seeds. Specify as an integer. Default: 3.
ewin
Conformer energy window in kcal/mol. Specify as a real. Default: 6.0.
kt, temperature
Maxvol energy→weight temperature in kcal/mol. Specify as a real. Default: 6.0.
bruteforce, oracle
If true, use the exhaustive brute-force oracle instead of the TT-cross sweep. Specify as a boolean (true/false). Default: false.
sp, singlepoint, sponly
If true, evaluate singlepoints only; no geometry optimization anywhere in the run. Specify as a boolean (true/false). Default: false.
cache, ecache
Energy cache on/off. Specify as a boolean (true/false); false is equivalent to the -ttnocache flag. Default: true.
ringsample
If true, sample ring conformations as additional TT sites (equivalent to -ttrings). Specify as a boolean. Default: false.
ringbonds
If true, in-ring bonds may become TT variables (equivalent to -ttringbonds). Specify as a boolean. Default: false.
ringmethod, ringsampler
Ring-conformation generator as a string: mtd (GFN-FF metadynamics on an isolated ring cut-out) or template. The mtd generator is a drop-in replacement for the ring handling of the original method. Default: mtd.
seed
RNG seed for a reproducible run. Specify as an integer; a value < 0 (the default, −1) makes the run non-deterministic.
bonds, userbonds
TOML-only, no CLI form. User-defined set of rotatable bonds that become the TT variables, given as an array of atom pairs. Each entry is [A, B], or [A, B, npoints] to override the global grid for that bond; a single flat pair [A, B] is also accepted. Specifying bonds replaces the automatic bond selection entirely; the auto-detected bonds are then shown as user-excl in the dihedral table. A listed pair must be a rotatable bond in the Z-matrix (either atom order); a pair that is not is warned about and ignored. Example: bonds = [[1, 2], [3, 4, 12]].

Table of contents


Back to top

Copyright © 2022-2026 Philipp Pracht.

CREST is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.