Examples¶
ARC’s examples folder (ARC/examples) is an excellent resource for up-to-date sample input files, demonstrating different features. Below are examples for common basic tasks performed using ARC.
Calculating thermodynamic properties¶
The example below shows how to set the levels of theory and job types. Multiple species are defined using SMILES / an XYZ list / InChI:
project: arc_demo_1
ess_settings:
gaussian:
- local
- server1
molpro:
- server1
qchem:
- server2
job_types:
rotors: true
conf_opt: true
fine: true
freq: true
opt: true
sp: true
max_job_time: 24
level_of_theory: CCSD(T)-F12/cc-pVTZ-F12//wb97xd/def2tzvp
scan_level: wb97xd/def2tzvp
conformer_level:
method: b3lyp
basis: '6-311+g(d,p)'
dispersion: empiricaldispersion=gd3bj
species:
- label: propane
smiles: CCC
- label: vinoxy
xyz:
- |
O 1.35170118 -1.00275231 -0.48283333
C -0.67437022 0.01989281 0.16029161
C 0.62797113 -0.03193934 -0.15151370
H -1.14812497 0.95492850 0.42742905
H -1.27300665 -0.88397696 0.14797321
H 1.11582953 0.94384729 -0.10134685
- |
O 1.49847909 -0.87864716 0.21971764
C -0.69134542 -0.01812252 0.05076812
C 0.64534929 0.00412787 -0.04279617
H -1.19713983 -0.90988817 0.40350584
H -1.28488154 0.84437992 -0.22108130
H 1.02953840 0.95815005 -0.41011413
- |
O -1.15888237 1.27653343 0.30527086
C 0.63650559 -0.15873769 -0.22478280
C -0.59108268 0.16116823 0.20729283
H 1.31343166 0.61755575 -0.56336439
H 0.97181468 -1.18699193 -0.24372402
H -1.17178687 -0.70952779 0.51930751
- label: propanol
inchi: InChI=1S/C3H8O/c1-2-3-4/h4H,2-3H2,1H3
In the above example, level_of_theory
is a directive that specifies in one line the
sp_method/sp_basis_set//opt_method/opt_basis_set
. Specifying the level_of_theory
also sets the freq_level
as equal to the opt_level
. Note that if the scan_level
isn’t set, and ARC will use the default in settings.py unless directed otherwise.
To specify a composite method, simply define something like:
level_of_theory: CBS-QB3
Note that for composite methods the freq_level
and scan_level
may have different
default values than for non-composite methods (defined in settings.py). Note: an independent
frequencies calculation job is automatically executed after a composite job just so that the Hamiltonian will
be outputted.
For detailed discussion on specifying levels of theory (e.g., including auxiliary basis sets and DFT dispersions), see see Levels of theory.
The same example as above ran via the API (e.g., in Jupyter notebooks) would look like the following:
from arc import ARC
from arc.species import ARCSpecies
from IPython.display import display
%matplotlib notebook
spc1 = ARCSpecies(label='propane', smiles='CCC')
xyz_list = ["""O 1.35170118 -1.00275231 -0.48283333
C -0.67437022 0.01989281 0.16029161
C 0.62797113 -0.03193934 -0.15151370
H -1.14812497 0.95492850 0.42742905
H -1.27300665 -0.88397696 0.14797321
H 1.11582953 0.94384729 -0.10134685""",
"""O 1.49847909 -0.87864716 0.21971764
C -0.69134542 -0.01812252 0.05076812
C 0.64534929 0.00412787 -0.04279617
H -1.19713983 -0.90988817 0.40350584
H -1.28488154 0.84437992 -0.22108130
H 1.02953840 0.95815005 -0.41011413""",
"""O -1.15888237 1.27653343 0.30527086
C 0.63650559 -0.15873769 -0.22478280
C -0.59108268 0.16116823 0.20729283
H 1.31343166 0.61755575 -0.56336439
H 0.97181468 -1.18699193 -0.24372402
H -1.17178687 -0.70952779 0.51930751"""]
spc2 = ARCSpecies(label='vinoxy', xyz=xyz_list)
spc3 = ARCSpecies(label='propanol', inchi='InChI=1S/C3H8O/c1-2-3-4/h4H,2-3H2,1H3')
arc = ARC(project='arc_demo_1',
ess_settings={'gaussian': ['local', 'server1'], 'molpro': 'server1', 'qchem': 'server2'},
job_types={'rotors': True, 'conf_opt': True, 'conf_sp': True, 'fine': True, 'freq': True, 'opt': True, sp: True},
max_job_time=24,
level_of_theory='CCSD(T)-F12/cc-pVTZ-F12//wb97xd/def2tzvp',
scan_level='wb97xd/def2tzvp',
conformer_opt_level='b3lyp/6-311+g(d,p)',
species=[spc1, spc2, spc3],
)
arc.execute()
Optimizing transition states¶
Here’s an example for optimizing a transition state (TS) after generating several guesses, say in GaussView:
project: BNdTSs
level_of_theory: apfd/def2TZVPP
freq_scale_factor: 0.992
species:
- label: TS1
is_ts: true
multiplicity: 2
xyz:
- TS1/1.gjf
- TS1/2.gjf
- TS1/3.gjf
- TS1/4.gjf
- TS1/5.gjf
- TS1/6.gjf
- label: TS3
is_ts: true
multiplicity: 2
xyz:
- TS3/1.gjf
- TS3/2.gjf
- TS3/3.gjf
- TS3/4.gjf
In the above example we’re using .gjf files (Gaussian job files) that contain the coordinate guesses.
You could define xyz
using various forms, see Flexible coordinates (xyz) input.
Note that the main difference is the is_ts
flag which is set to True (it is False by default).