Advanced features - ReactionMechanismGenerator/ARC GitHub Wiki
ARC Has many advanced features, you probably won't need to use all of them. Take a look below to see what might be relevant for you:
Specifying the level of theory
This is probably important for all users. ARC uses reasonable defaults, but you may very well want to use different levels. The defaults, found in the settings.py
file, are:
default_levels_of_theory = {'conformer': 'b97-d3/6-311+g(d,p)',
'opt': 'wb97x-d3/6-311+g(d,p)',
'freq': 'wb97x-d3/6-311+g(d,p)',
'sp': 'ccsd(t)-f12/cc-pvtz-f12', # This should be a level for which BAC is available
'scan': 'b3lyp/6-311+g(d,p)',
'irc': 'b3lyp/6-31+g(d)',
'gsm': 'b3lyp/6-31+g(d)',
'freq_for_composite': 'B3LYP/CBSB7', # This is the frequency level of the CBS-QB3 method
Note that sp
should have a respective "Model Chemistry" in Arkane if thermodynamic calculations are desired (the "Model Chemistry" is determined automatically).
You may either change these defaults in settings.py
, or simply pass the respective arguments conformer_level
, composite_method
, opt_level
, freq_level
, sp_level
, scan_level
when running ARC. Alternatively, you may define level_of_theory
instead (e.g., level_of_theory=CCSD(T)-F12a/aug-cc-pVTZ//B3LYP/6-311++G(3df,3pd)
) from which sp, opt, and freq are determined.
A software is automatically assigned according to the respective level, and currently cannot be set directly.
An example input file:
project: demo
conformer_level: b97-d3/6-311+g(d,p)
freq_level: wb97x-d3/6-311+g(d,p)
opt_level: wb97x-d3/6-311+g(d,p)
scan_level: b3lyp/6-311+g(d,p)
sp_level: ccsd(t)-f12/cc-pvtz-f12
species:
- label: vinoxy
smiles: C=C[O]
If you would like to run a composite method (e.g., CBS-QB3), pass the composite method name in the composite_method
argument. Also consider changing the freq_for_composite
accordingly in the settings.py
file (currently this is not an ARC argument).
Note that if you'd like to compute properties using different levels of theory, you should run separate ARC jobs, one (or more) per level.
Defining species
Species can be defined either using SMILES, adjLists or xyz coordinates. Alternatively, ARC can also process the structure information from an RMG Species object. See the ARC Demo
notebook for examples including how to correctly pass an RMG Species object. Below are different examples for defining species in an input file:
project: yaml_demo
species:
- label: vinoxy
smiles: C=C[O]
- label: OH
xyz: |
O 0.00000000 0.00000000 -0.12002167
H 0.00000000 0.00000000 0.85098324
- label: methylamine
smiles: CN
- label: propene
smiles: C=CC
- label: N2H4
smiles: NN
multiplicity: 1
charge: 0
Note that specifying multiplicity
and charge
is optional: a net charge of 0
is assumed, and a multiplicity of either 1
or 2
is automatically determined from the 2D/3D structure. For Triplets/Quartets and so on, or for net charged species, specify the respective value/s directly. An example is given above under N2H4
with the trivial values.
(Note: Currently RMG cannot process net charged species, and this was not tested in ARC. While definitely possible, there might be some bugs to resolve at first).
Using a fine grid for optimization
This option is turned on by default. If you'd like to turn it off, set fine
to False.
In Gaussian, this will add the keywords scf=(tight,direct) int=finegrid
.
In QChem, this will add the following settings:
GEOM_OPT_TOL_GRADIENT 15
GEOM_OPT_TOL_DISPLACEMENT 60
GEOM_OPT_TOL_ENERGY 5
Generate conformers
This option is turned on by default. If you'd like to turn it off, set generate_conformers
to False.
If a 2D structure is given (e.g., SMILES, AdjList), localized (resonance) structures are first generated, then many (scales with molecule size) conformers are generated using both RDKit and OpenBabel. Conformers generated by each of the dependent software are optimized using force fields, and the lowest energy candidate from each of the software for each of the localized structures of the species is saved. This process should result in two conformers for species with no electron delocalization, four if two non-isomorphic localized structures exists and so on. The final conformers are then optimized at the selected conformer_level
, and the lowest energy conformer is taken as the initial guess for the actual optimization at the selected opt_level
.
If a 3D guess (xyz) is given in addition to the 2D structure, it is also considered as one of the conformers to be calculated at the conformer_level
. If a 3D guess is given with no 2D structure, conformers are generated as described above without localized structure generation.
This option is only relevant for stable species (not for TSs).
To see which resonance structures RMG predicts for your species, use the Generate Resonance Structures
feature under the Molecule Search
tab on the RMG website.
Rotor scans
This option is turned on by default. If you'd like to turn it off, set scan_rotors
to False.
ARC will perform 1D rotor scans to determine possible unique hindered rotors in the species, taking into account all localized structures (where relevant single bonds might have different locations).
The rotor scan resolution is 10 degrees by default (scanning 360 degrees overall).
Rotors are invalidated (not used for thermo / rate calculations) if they have inconsistencies or have a barrier above a maximum threshold (40 kJ/mol by defaut). These settings can be modified in the settings.py
file.
Using bond additivity corrections (BAC)
This option is turned on by default. If you'd like to turn it off, set use_bac
to False.
This determines whether or not to use BAC in thermo calculations by Arkane. For a list of "Model Chemistries" for which BAC is available in Arkane, see Arkane's documentation.
Model Chemistry
ARC automatically determined the "Model Chemistry" to be used in Arkane by the sp level. If a specific "Model Chemistry" is desired, pass it in the model_chemistry
argument. For a list of "Model Chemistries" in Arkane, see Arkane's documentation.
Electronic Structure Software Settings
ARC automatically scans the servers it has access to and determines the (server-wise) locations of the ESS (currently Gaussian, Molpro, and QChem are supported). This automated procedure might not always return the desired result. You should try running the ARC ESS diagnostics
notebook from under the ipyhton
folder to see whether ARC agrees with your expectations. You may pass an ESS settings dictionary to override ARC's determination, for example:
ess_settings: {'gaussian': 'server1', 'molpro': 'server2', 'qchem': 'server1'}
Troubleshooting
ARC is known for having fairly good troubleshooting methods. However, at times a user might know in advance that a particular troubleshooting method is required for the desired species. In such cases, simply pass the relevant keyword in the initial_trsh
argument.