NTO analysis of diabatic states


Is there any way to do NTO analysis of eigen-state based diabatic states?

For example, if I generated diabatic states through ER diabatization, is there any way to generate NTOs of these diabatic states?

Or, is it possible to extract transition density matrix from QChem run?

Thank you!

I’m not sure there’s a user-facing way to get full TDM (though I could be wrong).

What does it mean to do NTO analysis in diabatic basis? Fundamentally, ER (or any other) diabatization must just be a rotation of the adiabatic Born-Oppenheimer basis, but the CIS/TDDFT excited states are still computed in the Born-Oppenheimer basis.

Thank you for your reply!

So what I want to do is to generate diatic states by ER diabatizaiton (which is, as you told, rotation of the adiabatic basis), and analyze those states by performing NTO analysis. (In order to figure out whether certain diabatic state is LE or CT.)

Okay, but I guess I still don’t understand how this would look theoretically (and it’s almost certainly not in the code, unless I’m just confused). Theoretically, your ER diabats will be linear combinations of Born-Oppenheimer adiabatic states, say, S0 and S1 for the sake of example.
|ER1> = c1 * |S0> + c2 * |S1>
and similar for |ER2>. NTOs are based on orbital rotations to describe |S0> → |S1> excitation (and |S0> → |S2>, etc.) So I don’t really understand what your proposed analysis looks like, theoretically. Could be that I’m missing something.

In any case, if what you would like to do is to have access to the TDM from TDDFT then please consider becoming a Q-Chem developer. It would be a nice thing to be able to access, wouldn’t be too hard, and I would be happy to guide you through how to do it, I just don’t have time to do it myself in the near future.

So I am trying to label ER diabats. For example, the system I am looking for is composed of three molecules, which may be labled as D, G, A. By performing NTO analysis for the adiabatic states, I can label each TDDFT states, for example, D+A-, G+A-, …

I wanted to do the same thing to ER diabats. So what I tried to do was extracting TDM of each adiabatic states, construct TDMs of each ER diabats, and perform SVD of the TDMs to obtain NTOs of the diabats.

Thank you for your kind suggestions!

This sounds like a new feature, not something that exists at the moment. I could be done by extracting the TDMs for each state and doing it outside of Q-Chem but perhaps better (more efficient) to do it internally, like we do the ER diabats in the NTOs.

If you are interested in becoming a Q-Chem developer, please contact Q-Chem support. When/if you decide to do this, we have a separate forum for developers where I could give you some help about how to make the changes.

I see. I will think think about it! Thank you for your kind reply :slight_smile:

What you can do is print the TDMs to the formatted checkpoint (fchk) file. This should work with

GUI = 2
nto_pairs               3

Then you have the TDMs in the file qchem.fchk and can do with them what you like.

Inside of Q-Chem we have the state_analysis/libwfa module. This module would do everything for you (including the assignment as LE or CT states). But I don’t think there exists an interface to insert rotated states.