EPR pNMR
EPR and Paramagnetic NMR NWChem Tutorial¶
This tutorial involves tensor/matrix operations, which can be readily done with Octave, a GNU license MATLAB-like program, freely available in any Linux or Cygwin (Windows) distribution. Octave will be used to demonstrate tensor manipulation and calculation of g-tensor, A-tensor, and paramagnetic NMR parameters obtained from an example NWChem output.
Example input:
echo
start ch3radical_rot
title ch3radical_rot
geometry noautoz units angstrom nocenter
symmetry c1
c +0.00000000 +0.00000000 +0.00000000
h -0.21385373 +0.98738914 +0.39826283
h -0.78597592 -0.69448290 +0.28059107
h +0.09050298 +0.04455726 -1.08102723
end
BASIS "ao basis"
* library 6-311G
END
relativistic
zora on
zora:cutoff_NMR 1d-8
zora:cutoff 1d-30
end
dft
mult 2
xc b3lyp
end
task dft
property
gshift
hyperfine
shielding
end
task dft property
First, the following constants and values are needed:
ge = 2.002319304; Be = 9.27400915e-24; k = 1.3806504e-23; u0 = 4*pi*(10^7);
h = 6.62606896e-34; BN = 5.05078317e-27; gnC = 1.4044;
gnC is the nuclear g-factor for a 13C nucleus; it is calculated from the measured gyromagnetic ratio (in 106 rad s-1 T-1) for 13C:
gammaC = 67.262;
gnC = gammaC*(h/(2*pi))/BN*(10^6);
Note that the example system CH3 ground state is a doublet.
S = 0.5;
Since paramagnetic NMR is temperature-dependent, specify a temperature in Kelvin:
T = 305.15;
Reconciling the g-tensor from NWChem calculation: Note that the tensor from a g-shift (Δg) calculation from NWChem is in ppt (parts-per-thousand). Enter the total Δg (g-shift) tensor into Octave:
GShiftTens = [0.1740 0.2216 -0.2640; 0.2216 0.6888 0.0981; ...
-0.2640 0.0981 0.6542];
Transform Δg tensor to g tensor:
GTens = 0.001*GShiftTens + (ge*eye(3))
returns
2.0025e+00 2.2160e-04 -2.6400e-04
2.2160e-04 2.0030e+00 9.8100e-05
-2.6400e-04 9.8100e-05 2.0030e+00
Note that eye(3)
stands for the 3x3 identity matrix (diagonal 1’s and off-diagonal 0’s).
To obtain gxx, gyy, and gzz from the g tensor matrix, find the eigenvalues of ggT and take the square root of the eigenvalues:
sqrt(eig(GTens*transpose(GTens)))
returns
ans =
2.0023
2.0031
2.0031
To obtain giso , take the trace of g and divide by 3:
trace(GTens)/3
returns
2.0028
Reconciling the A-tensor from NWChem calculation: Enter the total A tensor (for convenience use the tensor that is in MHz) for the first carbon atom listed:
ATensC = [428.6293 -58.2145 69.3689;-58.2145 293.3841 -25.7459; ...
69.3689 -25.7459 302.4571];
Correct this matrix by rotating it into the reference frame of the g-tensor (obtained in the last section):
ATensC_Corr = (ATensC/ge)*GTens
returns
428.651 -58.184 69.332
-58.184 293.477 -25.732
69.332 -25.732 302.546
To find Axx, Ayy, Azz, find the eigenvalues of AAT and take the square root of the eigenvalues:
sqrt(eig(ATensC_Corr*transpose(ATensC_Corr)))
returns
ans =
271.88
271.88
480.91
To calculate Aiso , take the trace of the corrected A tensor and divide by 3:
trace(ATensC_Corr)/3
returns
341.56
Reconciling the pNMR parameters from NWChem calculation: Calculate the dipolar form of the corrected A tensor for the carbon atom:
ATensC_Corr_Dip = ATensC_Corr – (trace(ATensC_Corr)/3)*eye(3)
returns
87.093 -58.184 69.332
-58.184 -48.081 -25.732
69.332 -25.732 -39.012
For convenience, convert the hyperfine tensors units from MHz to J:
ATensC_Energy = (10^6)*h*ATensC
returns
2.8401e-25 -3.8573e-26 4.5964e-26
-3.8573e-26 1.9440e-25 -1.7059e-26
4.5964e-26 -1.7059e-26 2.0041e-25
ATensC_Corr_Energy = (10^6)*h*ATensC_Corr
returns
2.8403e-25 -3.8553e-26 4.5940e-26
-3.8553e-26 1.9446e-25 -1.7050e-26
4.5940e-26 -1.7050e-26 2.0047e-25
ATensC_Corr_Dip_Energy =(10^6)*h*ATensC_Corr_Dip
returns
5.7708e-26 -3.8553e-26 4.5940e-26
-3.8553e-26 -3.1859e-26 -1.7050e-26
4.5940e-26 -1.7050e-26 -2.5850e-26
To calculate the Fermi contact shift:
FCShiftC = ...
(10^6)*trace(GTens)/3*Be/(gnC*BN)*(S*(S+1))/(3*k*T)*trace(ATensC_Energy)/3
returns
FCShiftC = 3.5159e+04
To calculate the pseudocontact shift (in ppm):
PCShiftC = ...
(10^6)*(S*(S+1))/(9*k*T)*Be/(gnC*BN)*trace(ATensC_Corr_Dip_Energy*GTens)
returns
PCShiftC = -1.9008
From the shielding calculation in NWChem,
OrbShldC = 83.7136
Putting it all together, the total chemical shielding in ppm is:
TotShldC = OrbShldC – FCShiftC – PCShiftC
returns
TotShldC = -3.5074e+04
Subtract this value from the appropriate reference to obtain the chemical shift. We can repeat these steps for the hydrogen atom. The proton nuclear g-factor is:
gnH = 5.5856947
The hyperfine A tensor for the hydrogen atom from the NWChem output is:
ATensH = [-39.8498 -17.0675 5.2453; -17.0675 0.9102 23.3706; ...
5.2453 23.3706 -46.3284];
Correct this tensor by transforming it into the reference frame of the g-tensor:
ATensH_Corr = (ATensH/ge)*GTens
returns
-39.85584 -17.07752 5.25143
-17.07196 0.90977 23.38053
5.25445 23.37695 -46.34308
Calculate the dipolar form of the corrected A tensor for the H atom:
ATensH_Corr_Dip = ATensH_Corr - (trace(ATensH_Corr))/3*eye(3)
returns
-11.4261 -17.0775 5.2514
-17.0720 29.3395 23.3805
5.2545 23.3770 -17.9134
Convert the hyperfine tensors units from MHz to J:
ATensH_Energy = (10^6)*h*ATensH
returns
-2.6405e-26 -1.1309e-26 3.4756e-27
-1.1309e-26 6.0310e-28 1.5486e-26
3.4756e-27 1.5486e-26 -3.0698e-26
ATensH_Corr_Energy = (10^6)*h*ATensH_Corr
returns
-2.6409e-26 -1.1316e-26 3.4796e-27
-1.1312e-26 6.0282e-28 1.5492e-26
3.4816e-27 1.5490e-26 -3.0707e-26
ATensH_Corr_Dip_Energy =(10^6)*h*ATensH_Corr_Dip
returns
-7.5710e-27 -1.1316e-26 3.4796e-27
-1.1312e-26 1.9441e-26 1.5492e-26
3.4816e-27 1.5490e-26 -1.1870e-26
Calculate the Fermi Contact Shift:
FCShiftH = ...
(10^6)*trace(GTens)/3*Be/(gnH*BN)*(S*(S+1))/(3*k*T)*trace(ATensH_Energy)/3
returns
FCShiftH = -735.76
Calculate the pseudocontact shift:
PCShiftH = ...
(10^6)*(S*(S+1))/(9*k*T)*Be/(gnH*BN)*trace(ATensH_Corr_Dip_Energy*GTens)
returns
PCShiftH = 0.0032218
From the NWChem output, the orbital shielding is:
OrbShldH = 28.1923
Putting it all together, the total chemical shielding in ppm is:
TotShldH = OrbShldH - FCShiftH – PCShiftH
returns
TotShldH = 763.95
```