Indirect Nuclear Spin-Spin Coupling Tensor Tutorial
Performing the relativistic NMR indirect nuclear spin-spin coupling tensor calculations in ReSpect requires the following sequence of steps
SCF(1c) → SCF(4c) → NMR
where the initial SCF(1c) step represents the self-consistent field (SCF) procedure based on a scalar-relativistic, one-component (1c) Hamiltonian and this step is primarily meant to provide a very good guess of initial molecular orbitals for subsequent fully relativistic calculations, where both scalar- and spin-orbit corrections are included variationally. In the second SCF(4c) step, the actual relativistic molecular orbitals are determined by means of SCF with the relativistic four-component (4c) Dirac—Coulomb Hamiltonian. Finally, the NMR shielding tensor is evaluated in the last step, starting from the relativistic molecular orbitals obtained in SCF(4c).
To perform the SCF(1c) calculation, execute the command
/path/to/ReSpect/respect --scf --inp=1c --scratch=/path/to/scratch/directory
where arguments mandatory to
starts the SCF procedure;
specifies a name of the input file;
specifies a path to the scratch directory.
A simple example of the input file 1c.inp for a scalar relativistic one-component DFT calculation of HBr with the Douglas–Kroll–Hess Hamiltonian looks like
scf: #scf procedure with 1c scalar DKH2 Hamiltonian geometry: Br 0.00000 0.00000 0.00000 H 1.41400 0.00000 0.00000 basis: H: upcJ-1 Br: dyall-vdz method: ks-dkh2/pbe0 grid: medium charge: 0 multiplicity: 1 nc-model: point maxiterations: 30 convergence: 1.0e-5
Note that a comprehensive list of all SCF keywords can be found here.
Having the initial SCF(1c) step finished, let's move on to the next SCF(4c) step. In order to have the 1c molecular orbitals ready for a restart, we execute the linux command first
ln -sf 1c.50 4c.50
which soft-links the ReSpect checkpoint file 1c.50 generated in the previous SCF(1c) calculation to a new checkpoint file 4c.50. Now, we can perform the second SCF(4c) step
/path/to/ReSpect/respect --restart --scf --inp=4c --scratch=/path/to/scratch/directory
where the additional argument --restart enforces
respect to search for the initial molecular orbitals in the checkpoint file 4c.50. An example of the input file 4c.inp is
scf: #scf procedure with 4c mDKS Hamiltonian geometry: Br 0.00000 0.00000 0.00000 H 1.41400 0.00000 0.00000 basis: H: upcJ-1 Br: dyall-vdz method: mdks/pbe0 grid: medium charge: 0 multiplicity: 1 nc-model: gauss maxiterations: 30 convergence: 1.0e-6 sscc: nmm-model: point print-level: long maxiterations: 30 convergence: 1.0d-5 reference-atom: 2 active-atoms: 1
The main difference between scf section in file 1c.inp and 4c.inp is the Hamiltonian which changed from 1c DKH2 Hamiltonian
ks-dkh2 to the 4c Dirac—Coulomb Hamiltonian
Having the SCF(4c) calculation finished successfully, let's perform the final NMR step by running the command
/path/to/ReSpect/respect --sscc --inp=4c --scratch=/path/to/scratch/directory
where the input block
sscc: takes control of the setup for the NMR indirect nuclear spin-spin coupling tensor calculation. A comprehensive list of all sscc keywords can be found here.
As a final note, there are several important and worth-to-remember aspects associated with the input syntax, namely
the input is case-insensitive
This means that the program does not distinguish between uppercase and lowercase letters.
the input is insensitive to the number of blank lines and/or comment lines
All comments begin with the number sign (#), can start anywhere on a line and continue until the end of the line.
the input is compliant with the dictionary syntax of the YAML markup language
This means that each input line is represented either by a single
block:statement or by a simple
keyword:valuepair, such as
block1: keyword1: value1 keyword2: value2 ... block2: keyword3: value3 keyword4: value4 ... block3: keyword5: value5 keyword6: value6 ...
It is essential to remember that all members of one
block: are lines beginning at the same indentation level. Whitespace indentation is used to denote the block structure; however, tab characters are never allowed as indentation. The only exception to the YAML-based input syntax is the block
geometry: which utilizes a simple xyz format for the molecular geometry specification.
TIPS & TRICKS
Q: Is there a way to launch SCF and NMR calculations without the need to explicitly setup the scratch path by "--scratch=/path/to/scratch/directory"?
Yes, the argument "--scratch=/path/to/scratch/directory" can be saved to the file .respectrc in your home directory. If the file and the argument exist, then ReSpect takes the scratch directory setting from the file.
Q: How to set the number of processors for parallel SCF and NMR calculations?
For OpenMP parallel calculations, the number of processors can be controlled from the command line by the argument --nt=N, where N ideally refers to the total number of physical cores of a machine. Thus, the command line for launching an OpenMP parallel SCF or NMR job reads
/path/to/ReSpect/respect --nt=N --scf --inp=my-input-file /path/to/ReSpect/respect --nt=N --sscc --inp=my-input-file
Note, however, we have assumed here that the scratch path is setup through the file .respectrc (see the previous discussion).
Q: What is the best basis set for sscc calculations?
For light elements we recommend to use uncontracted Jensen's basis set optimized specifically for the indirect nuclear spin-spin calculations, termed upcJ-X, where X = 1, 2, 3 stands for double, triple, and quadruple zeta basis quality. For heavy elements the good choice is the uncontracted Dyall's valence X-zeta basis set, termed dyall-vXz, where X = d, t, q stands for double, triple, and quadruple zeta basis quality.
Q: I want to run multiple sscc calculations for the same four-component molecular orbitals. Is there a way to avoid running expensive 4c scf job multiple times?
Yes, in the above example one can run the sscc calculation with command
/path/to/ReSpect/respect --sscc --inp=sscc-input --start-data=4c
where sscc-input.inp file contains sscc input section
sscc: nmm-model: point print-level: long maxiterations: 30 convergence: 1.0d-5 reference-atom: 2 active-atoms: 1
The above command will take 4c.50 data and run sscc calculation with sscc-input.inp input data. After successful end of the sscc job, the final output data will be stored in the file 4c-sscc-input.out_sscc. This step can be repeated multiple times with different sscc input files but the same SCF(4c) output data.
Department of Chemistry
UiT The Arctic University of Norway
Tromsø, NO-9037 Norway