Author Topic: Escf for 2c- (spin-orbit) SCF/DFT  (Read 6531 times)

JakubV

  • Full Member
  • ***
  • Posts: 39
  • Karma: +0/-0
Escf for 2c- (spin-orbit) SCF/DFT
« on: February 13, 2023, 01:01:57 PM »
Dear Turbomole experts,

the 2c- SCF or DFT computations  (e.g. quasirelativistic with SO terms in ECP) do mix alpha and beta spinors and thus singlets, triplets and other multiplets.

What does then rpat and rpas mean? How do I compute excited states within TDDFT/TD-HF framework in Turbomole, please?

I would expect there would be some keyword for "general 2c-TDDFT" which would allow the general mixed excited states to compute. As, e.g. for C1 (no symmetry), there shall be only one irreducible representation.

Please could me point to some practical example, where this is done?

Best regards,
JakubV

chris.hol

  • Jr. Member
  • **
  • Posts: 24
  • Karma: +1/-0
Re: Escf for 2c- (spin-orbit) SCF/DFT
« Reply #1 on: February 13, 2023, 01:23:58 PM »
Hi JakubV,

indeed "rpas" and "rpat" are no longer applicable in 2c TD-DFT, TD-HF and also GW-BSE calculations for excited states. Therefore, instead of "rpas" and "rpat" the general key "soghf" is to be used together with $scfinstab in 2c TD-DF or TD-HF. For example, to calculate the first 16 excited states, add the following to the control file:

$scfinstab soghf
$soes  16

Additionally, note that TD-DFT is currently only possible for 2c Kramers-restricted cases, so additionally $kramers must be added to the control file. I have attached a small example (H2Te with TPSSh/dhf-svp).

All the best,
Christof

P.S.: Note that 2c calculations in escf are computationally rather involved. Therefore, we strongly recommend to use an approximation for HF exchange if present. For example, $senex (seminumerical exchange, like in the attached example) or $rick (RI-K exchange) speed up exchange in escf by quite an bit, especially for triple-zeta (dhf-TZVP-2c or x2c-tzvppall-2c) basis sets or higher.

JakubV

  • Full Member
  • ***
  • Posts: 39
  • Karma: +0/-0
Re: Escf for 2c- (spin-orbit) SCF/DFT
« Reply #2 on: February 15, 2023, 12:41:48 AM »
Thank you very much, Christof.

Please, would you suggest how to visualise these relativistic 2c-molecular orbitals (spinors)?

When I was working with DIRAC, I had in mind idea to plot isodensity surface and color it according to complex phase and do this for all four components (or, here, both components).

But here, I found a quick alternative, 

cp spinor.r spinor.ra
cp spinor.r spinor.rb
cp spinor.i spinor.ia
cp spinor.i spinor.ib

then deleting the first or second half of coefficients in each mo expansion in spinor.?a or spinor.?b respectively. Then cp spinor.?? mos - for all four combinations separately and after proper change of header of mos and number of AOs, they can be visualised via tm2molden and molden molden.input.

I will see real and imaginary parts of alpha or beta - is my reasoning correct, please?

But perhaps there is something easier, safer, more straightforward? Or even there would be a possibility to plot the phase-colored isodensities? For DIRAC this didn't yet work for me as I cannot find where and if it is possible to print out wave-function values, not just densities into cube file. In principle one could write a routine for that, but that would be tedious.

Best regards,
Jakub

chris.hol

  • Jr. Member
  • **
  • Posts: 24
  • Karma: +1/-0
Re: Escf for 2c- (spin-orbit) SCF/DFT
« Reply #3 on: February 15, 2023, 11:56:32 AM »
Hi Jakub,

Guess this can be done easier using ridft -proper (-proper circumvents a rerun of the complete SCF procedure) directly on the 2c spinors, without modifying them. For example, to plot spinor 26, just add

$pointval mo 26

to the control file, and then execute

ridft -proper

This will properly generate spinor plots (despite the standard "mo" keyword), and yield 5 files:

26a_1.plt ! Re part, alpha spinor
26a_2.plt ! Im part, alpha spinor
26a_3.plt ! Re part, beta spinor
26a_4.plt ! Im part, beta spinor
26a_d.plt ! total density

Maybe this includes what you want. Sometimes these files are not generated, because the content would be low. In this case, ridft emits "not created because of low content". Using a lower threshold can then force-print them. For example:

$pointval mo 26 minco 1.d-6

Hope this helps :)
All the best,
Christof