Is it possible to use the NTO-rotated orbitals (for a specific TDDFT state) as the MO set in a subsequent Q-Chem job?

Hi all,

I’m running TD-DFT absorption spectra in Q-Chem and I’d like to test the following idea:

For a specific excited state (say state n), I compute its Natural Transition Orbitals (NTOs). Then, I want to take the rotated MO set from that NTO analysis and use it as the MO basis in a subsequent Q-Chem job, to see whether the computed transition dipole moment oscillator strength for that same state is improved when the excitation is recomputed in that rotated orbital representation.

Concretely, my intended workflow is:

  1. Job A: run ground-state SCF + TDDFT, request NTO analysis for a target root.
  2. Export/save the MO coefficients corresponding to the NTO-rotated orbitals (or some orbital file containing them).
  3. Job B: restart from those orbitals (i.e., force Q-Chem to use that orbital set), skip the SCF and recompute TDDFT excitations.

My questions:

  1. Is it actually possible in Q-Chem to export the NTO-rotated orbitals as a reusable “MO set” for a later job? (i.e., not just printing NTOs for visualization, but generating a restartable orbital coefficient set that Q-Chem can read back in.)
  2. If yes: what is the recommended way to do it?

Please let me know if information from my side is most useful to follow-up in scientific discussion.

Thanks a lot!

I think this can probably be accomplished but it’s not push-button (i.e., there’s no single $rem variable to do this). What you can do is to generate NTOs in MolDen format, for a particular excited state (instructions are in the manual). Then, you may be able to use a tool such as MOkit to transform those into a format that is appropriate to be read in as guess MOs for a subsequent Q-Chem job.

There’s a sample job that describes the first step, the relevant part of the input is:

$rem
method          pbe0
basis           6-31+G*
scf_guess       read
print_orbitals  true
molden_format   true    ! get the NTO coefficients in Molden format
make_cube_files ntos    ! generate cube files of the NTOs...
cubefile_state  2       ! ...for the 2nd excited state
$end

Dear John, thank you for the ready reply. I will look more carefully into the options I have with MOkit and see if I can produce a MO file for Q-Chem. Best wishes for the end of 2025 and a happy 2026!

Hi, just two quick comments here:

First, the NTOs (at least with TDA) are separate transformations within the occupied and virtual spaces. So, nothing interesting is actually happening. The TDDFT calculation with the rotated orbitals should produce the same results as with the original canonical MOs.

Second, I am pretty sure that the TDDFT implementation assumes that the Fock matrix is diagonal. And this means that using non-converged MOs would produce incorrect excitation energies. So, you might actually get different results but only because the calculation is technically incorrect.

So, generally speaking, I’d be very careful with this …

That’s all true, I think the thing this could potentially be useful for is finding excited-state SCF solutions with a non-aufbau guess ($occupied section), which is something I’ve thought about but never tried to implement.

Dear Felix,
Dear John,

Thank you for the clarification. I understand that using the NTO-rotated MOs for improving the TD-DFT results would not have been as easy as reading in the MOs, but I now I see it could break the assumptions made by the TD-DFT code.
The suggestion about using the state NTOs as initial guess from OO-DFT methods looks very promising to me, thank you for sharing it.

Best,
Nicola

The 1C-NOCIS code I wrote for open-shell singlets can carry out ROKS calculations using CIS NTOs as a guess. I have not found it to be very useful (vs. using canonical orbitals) but I also have not tested it extensively…

If people want to try it, I could easily implement it in the new DeltaSCF driver to run either DeltaSCF or ROKS calculations from NTOs.

Example 7.46 (but changing OS_IS keyword in $nocis section from CIS to CIS_ROKS).

$molecule
  0   1
  O   0.0000      0.0000      0.1173
  H   0.0000      0.7572     -0.4692
  H   0.0000     -0.7572     -0.4692
$end

$rem
  METHOD               HF
  BASIS                DEF2-SVP
  SCF_ALGORITHM        DIIS_GDM
  CIS_N_ROOTS          3
  CIS_SINGLETS         TRUE
  CIS_TRIPLETS         FALSE
  NTO_PAIRS            3
$end

@@@

$comment
  1C-NOCIS 2eOS singlet calculation.
$end

$molecule
  read
$end

$rem
  METHOD               HF
  BASIS                DEF2-SVP
  SCF_GUESS            READ
  GEN_SCFMAN           TRUE
  MAX_SCF_CYCLES       0
  NOCIS                1
$end

$nocis
  SINGLETS
  ONE_CENTER
  OS_IS                CIS_ROKS ! Use CIS NTOs as a guess for ROKS calculation
$end

1 Like