## Nuclear Spin-Rotation Tensor Tutorial

Performing the relativistic nuclear spin-rotation tensor calculations in ReSpect requires the following sequence of steps

SCF(1c) → SCF(4c) → NSR

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, nuclear spin-rotation tensors are evaluated in the last step (NSR), 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/B3LYP calculation of AsH3 with the Douglas–Kroll–Hess Hamiltonian looks like

#scf procedure with 1c scalar DKH2 Hamiltonian scf: geometry: As H 1 1.5324 H 1 1.5324 2 91.01 H 1 1.5324 2 91.01 3 91.0281 method: ks-dkh2/b3lyp basis: dyall-cvdz 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

#4c SCF Dirac-Kohn-Sham DFT calculation of AsH3 #molecule with the Dirac--Coulomb Hamiltonian scf: geometry: As H 1 1.5324 H 1 1.5324 2 91.01 H 1 1.5324 2 91.01 3 91.0281 method: mdks/b3lyp basis: dyall-cvdz charge: 0 multiplicity: 1 nc-model: point maxiterations: 30 convergence: 1.0e-6 #nuclear spin-rotation tensor nsr: isotope: As: 75 H : 1 maxiterations: 30 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 NSR step by running the command

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

where the input block `nsr:`

takes control of the setup for the nuclear spin-rotation tensor calculation. A comprehensive list of all spin-rotation 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 NSR calculations?**

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

**Q: Is it possible to scale spin-orbit interaction in NSR 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 NSR calculation.

**Q: Is there a way to launch SCF and NSR 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 NSR 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 NSR job reads

/path/to/ReSpect/respect --nt=N --scf --inp=my-input-file /path/to/ReSpect/respect --nt=N --nsr --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 nsr 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 nsr calculation with command

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

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

input block

nsr: isotope: As: 75 H : 1 maxiterations: 30 convergence: 1.0e-5

The above command will take the initial data from 4c.50 and performs the nsr calculation according to the input in nsr-input.inp. After successful end of the nsr job, the final output data will be stored in the file 4c-nsr-input.out_nsr. This step can be repeated multiple times with different nsr 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