Tutorial -- Paramagnetic Nuclear Magnetic Resonance J-tensor

Performing a parallel relativistic calculation of pNMR indirect nuclear spin-spin coupling constant (SSCC) is a simple three-step process

respect --scf  --inp=my-input-file --nt=4 --scratch=/path/to/scratch/directory
respect --hfcc --inp=my-input-file --nt=4 --scratch=/path/to/scratch/directory
respect --sscc --inp=my-input-file --nt=4 --scratch=/path/to/scratch/directory

The first call of respect with the argument --scf performs the self-consistent field (SCF) optimization of ground-state molecular orbitals, which is a necessary prerequisite for following property calculations. The second call of respect with the argument --hfcc performs the evaluation of the electron paramagnetic resonance (EPR) hyperfine coupling (A-tensor). Finally, the third call of respect with the argument --sscc performs the NMR spin-spin coupling constant calculation.

The other arguments mandatory to respect are

  • --inp
    specifies a name of the input file;

  • --nt
    specifies the number of physical cores required for parallel execution;

  • --scratch
    specifies a path to the scratch directory.

The input file my-input-file.inp should contain three input sections; scf: for SCF, hfcc: for A-tensor, and sscc: for NMR J-tensor. A comprehensive list of all keywords is available for SCF here, for A-tensor here, and for NMR J-tensor here. A simple example of my-input-file.inp looks like

#the input section for SCF (perturbation-free MOs)
scf:

   geometry:
     Sn   0.0000000000000   0.0000000000000   0.0000000000000
     H    0.0000000000000   1.6260066727234  -0.5904712611626
     H    1.4081630853015  -0.8130033363617  -0.5904712611626
     H   -1.4081630853015  -0.8130033363617  -0.5904712611626

   method: mdks/pbe0
   basis:
          H:  upcJ-1
          Sn: dyall-vdz

   charge:        0
   multiplicity:  2
   maxiterations: 30
   nc-model:      gauss
   convergence:   1.0e-6


#the input section for NMR J-tensor
sscc:
   maxiterations:  30
   xc:             xalda
   convergence:    1.0e-5

   reference-atom: 2
   active-atoms:   3,4


#the input section for A-tensor
hfcc:
   nmm-model: point

Final output data from SCF, A-tensor, and J-tensor calculations are saved in files my-input-file.out_scf, my-input-file.out_hfcc, and my-input-file.out_sscc. These data are used to evaluate the final pNMR spin-spin coupling constant by running the python script pNMR-sscc.py. In the example above, the evaluation of two 1H-1H J-couplings between hydrogens 2-3 and 2-4 is carried out at temperature 293K by

/path/to/ReSpect/util/pNMR-sscc.py --t=293 --m=2 --coupling="2 3,2 4" --label=JJ_H-H --hfcc=my-input-file.out_hfcc --sscc=my-input-file.out_sscc

with the output being stored in my-input-file.out_pnmr-sscc_JJ_H-H. Here, the essential parameters such as temperature, spin multiplicity or selected couplings are controlled by the arguments --t, --m or --coupling. The complete list of pNMR-sscc.py arguments can be obtained by running

/path/to/ReSpect/util/pNMR-sscc.py --help

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 SSCC calculation.

Q: Is it possible to scale the spin-orbit (SO) interaction in NMR calculations?

No. Currently one can only turn off the SO interaction by setting soscale: option to zero in the SCF calculation. This setting is then automatically transferred to the SSCC 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: What is the best basis set for the SSCC calculations?

For light elements we recommend to use uncontracted Jensen's basis sets optimized specifically for the indirect nuclear spin-spin calculations, termed upcJ-X, where X = 1, 2, 3 stands for the double, triple, and quadruple zeta 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 the double, triple, and quadruple zeta quality.

Q: How to run multiple NMR calculations, which will start from the same four-component molecular orbitals? Is there a way to avoid recalculating the 4c scf job multiple times?

One can run the --sscc calculation with the command

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

where the last argument --start-data refers to the file with converged SCF molecular orbitals (in this example to 4c.50). In other words, the above command will take the initial SCF data from 4c.50 file and it will perform the --sscc calculation according to the input sscc-input.inp file. Now, it is sufficient if the sscc-input.inp file contains only the sscc: input block, for example

sscc:
   maxiterations:  30
   xc:             xalda
   convergence:    1.0e-5

   reference-atom: 2
   active-atoms:   3,4

After successful end of the NMR 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 NMR input files but always starting from the same SCF molecular orbitals.


Latest Posts


Useful Links

Our Contacts

Hylleraas Centre
Department of Chemistry
UiT The Arctic University of Norway
Tromsø, NO-9037 Norway
Email: info@respectprogram.eu