# CREST
## CREST short introduction
---
1. Make [crest.slurm](crest.slurm) batch script for parallel calculations:
#!/bin/bash
#SBATCH --job-name=CREST-test
#SBATCH --mem-per-cpu=2GB
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=24
#SBATCH -t 1-00:00:00
#SBATCH --partition=common
module load green/all
module load xtb-crest
#Run calculations
crest struc.xyz -gfn2 -T 24 > struc.out
2. Copy job-input file [struc.xyz](struc.xyz)
3. Submit the job on **base**:
sbatch crest.slurm
***NB!*** It is recommended to optimize the geometries obtained from the CREST by more accurate methods. In the [end of this page](https://hpc.pages.taltech.ee/user-guides/chemistry/crest.html#useful-bash-scripts) are given three home made bash scripts that can be helpful during this process.
## CREST long version
---
CREST (Conformer–Rotamer Ensemble Sampling Tool) was designed as conformer sampling program by Grimme's group. Conformational search can be done by various levels of theory including molecular mechanics and semiempirical methods (GFNn-xTB) in gas or solvent (using several continuum models). By default CREST uses root-mean-square-deviation (RMSD) based meta-dynamics, short regular MD simulations and Genetic Z-matrix crossing (GC) algorithms. CREST can be also used for searching of protonation states, tautomerism studies and non-covalent complexes modelling. More can be found in the [original article](https://pubs.rsc.org/en/content/articlelanding/2020/CP/C9CP06869D#!divCitation).
### Environment
Environment is set up by the commands:
module load green/all
module load xtb-crest
### Running CREST jobs
CREST input file should be in `.xyz` format and is executed by the command `crest`. This command is usually placed in `slurm` script.
crest struc.xyz -gfn2 -g h2o -T 24 > struc.out
In CREST calculation options are specified as command line arguments. Here, `-T` is number of processors used, `-gfn2` used calculation method (_here GFN2-xTB_), `-g h2o` - GBSA implicit solvation for water. More about [command line arguments](https://xtb-docs.readthedocs.io/en/latest/crestcmd.html) and some [examples](https://xtb-docs.readthedocs.io/en/latest/crestxmpl.html#imtd-gc) of CREST commands.
### Time
Time limits depend on size of a molecule and methods used, and can only be determined empirically. For eample, for a molecule of 54 atoms, 1 GB per core was enough, for 65 atoms molecule 2 GB per core were needed.
### Memory
In our test runs for a molecule of 54 atoms, 1 GB per core was sufficient, but for 65 atoms molecule already 2 GB per core were needed.
#### How to cite:
The main publication for the CREST program - DOI: [10.1039/C9CP06869D](https://doi.org/10.1039/C9CP06869D).
## Useful bash scripts
---
It is recommended to optimize the geometries obtained from the CREST by more accurate methods. Here are three home made bash scripts that can be helpful.
- [Start-orca.sh](start-orca.sh) splits CREST output into single geometries and prepare ORCA inputs.
***NB!*** [orca.slurm](orca.slurm) must be in the same folder as `start-orca.sh` and CREST calculations.
***NB!*** Charge, Multiplisity and Number of conformers must be given as command line argumens `-c`, `-m` and `-n`.
sh start-orca.sh -c 0 -m 1 -n 500
By default ORCA calculations will be done using the following method - ***RI-BP86-BJD3/def2-SVP*** . If it does not suit the method should be changed in the `start-orca.sh`.
- [Check.sh](check.sh) verifies if all calculations ended normally.
- [Crest-sorting.sh](crest-sorting.sh)
1. creates CREST folder and move the initial CREST calculations there
2. merges individual ORCA optimized geometries into a shared file `ALL.xyz`
3. creates a single CREST file, which then will be treated by CREST algorithms to delete double structures and sort remained structures by energy.