Spin-Orbit Coupling and g-tensor Calculation¶
Spin-Orbit Coupling¶
Spin-Orbit Coupling (SOC) is an important requirement for evaluating a
number of molecular magnetic properties.1 In HUMMR, SOC can be treated
in the framework of Quasi-Degenerate Perturbation Theory which can be
regarded as a molecular equivalent to atomic Russell-Saunders (or LS) coupling.
This approach corresponds to the diagonalization of the SOC Hamiltonian in the
basis of nonrelativistic multiplets that were obtained as roots of a preceding
CASSCF (CISolver FCI) or MCSCF (CISolver HCI) calculation. This type of
calculation is invoked by setting the DoSOC keyword to true.
Following are the sample inputs for FCI-SOC and HCI-SOC calculations:
| hci-soc.inp | |
|---|---|
SOC Output¶
The Results are printed in the "SOC Calculation" section of the HUMMR ouput file. Following are example outputs:
Expand to show SOC output snippets
In the first example, the SOC calculation was done on top of a FCI-CASSCF calculation for a doublet with 2 roots. The Spin-Orbit Coupled Eigenstates are printed at the bottom of this section. For an Eigenstate, it's corresponding Eigenvalue (Real) and Eigenvector (Complex) is printed as follows:
Getting a more detailed output
To get a more detailed output, set the keyword PRINTLEVEL to greater than or equal to 2 in the General keyword block. This will print how the SOC matrix is calculated in more detail. Following is a sample input for such a calculation
| soc.inp | |
|---|---|
RI Approximation for SOMF Integrals¶
To utilize the RI Approximation for evaluating the SOMF Integrals in a SOC calculation, the DORISOMF keyword has to be set to true in the Integrals Block of the HUMMR input file. In this case, the Coulomb contribution to the two-electron part is computed using a resolution-of-the-identity approach and hence requires definition of an auxiliary basis set in the General keyword block. The exchange contribution to the two-electron part of the SOMF integrals is calculated using a one-center approximation when DORISOMF is set to true. Following is a sample input:
| soc_using_risomf.inp | |
|---|---|
Reminder
Do not forget to set the AuxBasis keyword in the General Block
SOC-corrected Spectra¶
When DoSOC is set to true, HUMMR automatically computes and prints SOC-corrected excitation energies and oscillator strengths alongside the standard SOC output.
The oscillator are boltzmann-weighted.
This table provides a direct spectroscopic picture of the spin-orbit coupled states, using the CASSCF SOC eigenstates as the final states.
The SOC-corrected spectrum table is printed immediately after the SOC eigenvalues and eigenstates section alongside Boltzmann populations of all states at the specified Temperature.
All i->j transitions from thermally populated states are printed.
SOC-corrected Spectrum Output Example
Following is a sample output:
Temperature: 300.00 K (k_B*T = 0.025852 eV = 208.51 cm-1)
Thermally accessible initial states: 6 (within 5.0 k_B*T)
Boltzmann populations of SOC-corrected states:
State 0: E = 0.000000 eV ( 0.00 cm-1), Population = 2.0428e-01
State 1: E = 0.000002 eV ( 0.01 cm-1), Population = 2.0426e-01
State 2: E = 0.005673 eV ( 45.76 cm-1), Population = 1.6403e-01
State 3: E = 0.005673 eV ( 45.76 cm-1), Population = 1.6403e-01
State 4: E = 0.011347 eV ( 91.52 cm-1), Population = 1.3171e-01
State 5: E = 0.011347 eV ( 91.52 cm-1), Population = 1.3171e-01
State 6: E = 1.735081 eV (13994.37 cm-1), Population = 1.4526e-30
State 7: E = 1.735081 eV (13994.37 cm-1), Population = 1.4526e-30
State 8: E = 1.735082 eV (13994.38 cm-1), Population = 1.4525e-30
SOC-corrected absorption spectrum:
Transition Energy [eV] Energy [cm-1] Wavelength [nm] f_osc*pop |μx| [au] |μy| [au] |μz| [au]
4->5 0.000000 0.00 356248435323653.5 0.000000000 0.00000 0.00000 0.00000
2->3 0.000000 0.00 123316766073572.4 0.000000000 0.00000 0.00000 0.00000
0->1 0.000002 0.01 668301219.9 0.000000000 0.00000 0.00000 0.00000
1->2 0.005671 45.74 218613.1 0.000000000 0.00012 0.00007 0.00000
1->3 0.005671 45.74 218613.1 0.000000000 0.00007 0.00012 0.00000
0->2 0.005673 45.76 218541.6 0.000000000 0.00007 0.00012 0.00000
0->3 0.005673 45.76 218541.6 0.000000000 0.00012 0.00007 0.00000
3->4 0.005673 45.76 218541.3 0.000000000 0.00010 0.00010 0.00000
3->5 0.005673 45.76 218541.3 0.000000000 0.00010 0.00010 0.00000
2->4 0.005673 45.76 218541.3 0.000000000 0.00010 0.00010 0.00000
2->5 0.005673 45.76 218541.3 0.000000000 0.00010 0.00010 0.00000
1->4 0.011345 91.50 109288.6 0.000000000 0.00000 0.00000 0.00000
1->5 0.011345 91.50 109288.6 0.000000000 0.00000 0.00000 0.00000
0->4 0.011347 91.52 109270.7 0.000000000 0.00000 0.00000 0.00000
0->5 0.011347 91.52 109270.7 0.000000000 0.00000 0.00000 0.00000
5->6 1.723735 13902.86 719.3 0.000416782 0.19356 0.19356 0.00000
5->7 1.723735 13902.86 719.3 0.000000186 0.00409 0.00409 0.00000
4->6 1.723735 13902.86 719.3 0.000000186 0.00409 0.00409 0.00000
4->7 1.723735 13902.86 719.3 0.000416782 0.19356 0.19356 0.00000
5->8 1.723735 13902.87 719.3 0.000000000 0.00000 0.00000 0.00000
4->8 1.723735 13902.87 719.3 0.000000000 0.00000 0.00000 0.00000
3->6 1.729408 13948.62 716.9 0.000000000 0.00000 0.00000 0.00000
3->7 1.729408 13948.62 716.9 0.000000000 0.00000 0.00000 0.00000
2->6 1.729408 13948.62 716.9 0.000000000 0.00000 0.00000 0.00000
2->7 1.729408 13948.62 716.9 0.000000000 0.00000 0.00000 0.00000
3->8 1.729409 13948.62 716.9 0.000520999 0.23473 0.14096 0.00000
2->8 1.729409 13948.62 716.9 0.000520999 0.14096 0.23473 0.00000
1->6 1.735079 13994.36 714.6 0.000325465 0.13690 0.13690 0.00000
1->7 1.735079 13994.36 714.6 0.000325464 0.13690 0.13690 0.00000
1->8 1.735080 13994.37 714.6 0.000000000 0.00000 0.00000 0.00000
0->6 1.735081 13994.37 714.6 0.000325488 0.13690 0.13690 0.00000
0->7 1.735081 13994.37 714.6 0.000325489 0.13690 0.13690 0.00000
0->8 1.735082 13994.38 714.6 0.000000000 0.00000 0.00000 0.00000
Temperature is set in the General block
The temperature is set in the General block. The default value is 298.15 K. Following sample input shows how the temperature can be set:
The columns are in the output file are as follows:
No additional input required
The SOC-corrected spectrum table is generated automatically whenever DoSOC true is set. No extra keywords are needed.
g-tensor Calculation¶
To calculate the g-tensor in HUMMR, set the DOSOC and GTENSOR calculation keywords to true in the CASSCF block. The g-tensor is calculated using the Gerloch-McMeeking formulation. 1,2
Important Note
The g-tensor calculation requires the DOSOC keyword to be set to true in the CASSCF block.
Info
As implemented in the HUMMR, the g-tensor can only be calculated for Kramers' Systems i.e., half-integer spin systems (for eg. doublets, quartets, sextets and so on). 2
As with the SOC calculation, the g-tensor calculation can be done for the following CISolver:
FCIHCI
Following is a sample input:
| fci_gtensor.inp | |
|---|---|
g-tensor Output¶
The results are printed in the "g-tensor Calculation" section of the HUMMR output file. Following is an example output:
Expand to show soc.out snippet
| fci_gtensor.out | |
|---|---|
453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 | |
The above output section is printed out after the corresponding SOC calculation is done, since the Kramers' pair from the SOC calculation is required to calculate the g-tensor. The final g-factors and g-shifts are printed out in the end as following:
| fci_gtensor.out | |
|---|---|