## NMR Shielding Tensor Tutorial

Performing the relativistic NMR shielding 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 a relativistic four-component (4c) SCF involving Dirac—Coulomb Hamiltonian. Finally, NMR shielding tensors are evaluated in the last step (NMR), starting from the relativistic molecular orbitals obtained in the previous 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 `respect`

mean

**--scf**

starts the SCF procedure;**--inp**

specifies a name of the input file;**--scratch**

specifies a path to the scratch directory.

A simple example of the input file **1c.inp** for a scalar relativistic one-component DFT/PBE0 calculation of HBr with the Douglas–Kroll–Hess Hamiltonian looks like

#scf procedure with 1c scalar DKH2 Hamiltonian scf: geometry: H 1.41400 0.00000 0.00000 Br 0.00000 0.00000 0.00000 method: ks-dkh2/pbe0 basis: H: upcS-1 Br: dyall-vdz charge: 0 multiplicity: 1 maxiterations: 30 nc-model: point

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

#4c SCF Dirac-Kohn-Sham DFT calculation of HBr #molecule with the Dirac--Coulomb Hamiltonian scf: geometry: H 1.41400 0.00000 0.00000 Br 0.00000 0.00000 0.00000 method: mdks/pbe0 basis: H: upcS-1 Br: dyall-vdz charge: 0 multiplicity: 1 maxiterations: 30 nc-model: gauss convergence: 1.0e-6 #NMR shielding tensor calculation with RMB-GIAO cs: maxiterations: 30 gauge: giao convergence: 1.0e-5

Here, we replaced the 1c DKH2 Hamiltonian `method:ks-dkh2/dft-functional`

by the 4c Dirac—Coulomb Hamiltonian `method:mdks/dft-functional`

.

Having the SCF(4c) calculation finished successfully, let's perform the final NMR step by running the command

/path/to/ReSpect/respect --cs --inp=4c --scratch=/path/to/scratch/directory

where the input block `cs:`

takes control of the setup for the NMR shielding tensor calculation. A comprehensive list of all NMR shielding tensor 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:value`

pair, 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: How to scale the speed of light in NMR calculations?**

Set the cscale option in the SCF calculation. The scaling value is then automatically transferred to the CS calculation.

**Q: Is it possible to scale spin-orbit interaction in NMR calculations?**

No. Currently one can only turn off SO interaction by setting soscale option to zero in the SCF calculation. This setting is then automatically transferred to the CS calculation.

**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 both the file and the command line argument exist, then ReSpect takes the scratch directory setting from the command line.

**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 --cs --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: I want to run a multiple cs calculations starting from the same four-component molecular orbitals. Is there a way to avoid recalculating the 4c scf job multiple times?**

Yes, one can run the cs calculation with command

/path/to/ReSpect/respect --cs --inp=cs-input --start-data=4c

where the cs-input.inp file contains only the `cs:`

input block

cs: maxiterations: 30 gauge: giao convergence: 1.0e-5

The above command will take the initial data from 4c.50 and performs the cs calculation according to the input in cs-input.inp. After successful end of the cs job, the final output data will be stored in the file 4c-cs-input.out_cs. This step can be repeated multiple times with different cs input files but always starting from the same SCF(4c).

## Useful Links

## Our Contacts

Department of Chemistry

UiT The Arctic University of Norway

Tromsø, NO-9037 Norway

Email: info@respectprogram.eu