cmelab / morphct

GNU General Public License v3.0
0 stars 6 forks source link

Zero TI #26

Closed JimmyRushing closed 2 years ago

JimmyRushing commented 3 years ago

Playing around with meta and para PEKK with morphct, I noticed something interesting. If I create a para-meta two mer, take either one to be chromophores, and run a morphCT transfer integral calc, I get a NaN (morph seta to zero) for the TI. If it is unrelaxed, we get a substantial TI ~.1. Viewing the two side by side shows no drastic change in geometry post-relaxation.

Does this motivate the use of Koopman's Approximation? If so, should we add functionality to turn Koopman's on and off?

or if you take a dimer and relax it, are you obscuring the information obtained by the dimer splitting method used to obtain the orbital spitting?

More details and the visualizations here in this notebook on my fork: https://github.com/JimmyRushing/morphct/blob/transfer-integral-check/examples/zero-integral-test.ipynb

jennyfothergill commented 3 years ago

Playing around with meta and para PEKK with morphct, I noticed something interesting. If I create a para-meta two mer, take either one to be chromophores, and run a morphCT transfer integral calc, I get a NaN (morph seta to zero) for the TI. If it is unrelaxed, we get a substantial TI ~.1. Viewing the two side by side shows no drastic change in geometry post-relaxation.

Are you saying there is only one chromophore? If so--there can be no transfer integral. Are you using pySCF to do geometry optimization? Or are you referring to hoomd?

Does this motivate the use of Koopman's Approximation? If so, should we add functionality to turn Koopman's on and off?

We can turn Koopman's approximation on and off. See the Carrier class.

or if you take a dimer and relax it, are you obscuring the information obtained by the dimer splitting method used to obtain the orbital spitting?

I'm not exactly sure what you mean, but what I understand is "If the chromophores are fully geometry optimized, will the TI be different?" --> yes. All that the QCC method sees is the atom positions (and elements). If they are different, the energy is different. The transfer integral is calculated based on the SCF energy of the pair and of each chromophore on its own (3 energies total: pair, chromo1, chromo2). The geometries come from the equilibrated MD trajectory, but are not geometry optimized for the QCC method--this is OK. We are only interested in the relative energies.

JimmyRushing commented 3 years ago

Are you saying there is only one chromophore?

para is chromo and meta is chromo.

We can turn Koopman's approximation on and off. See the Carrier class.

Nice, I am still trying to integrate the carrier class into my old workflows. So now the question is, should I turn on Koopmans.

Are you using pySCF to do geometry optimization? Or are you referring to hoomd?

I used mbuild energy_minimize(forcefield="GAFF")

Maybe it will be a moot point in a full morphology, as the molecule wont be able to find itself in the geometry of of being relaxed in space. But a zero TI for two bonded chromos seemed peculiar. With that, it will also be interesting to see, in a full morphology, how many of these zero integrals we will get.

JimmyRushing commented 3 years ago

A little update after chatting with Jenny:

Jenny noticed that the likely reason for the change in energetics came from the energy_minimize(forcefield="GAFF") function making a possibly unphysical angle like this

Screen Shot 2021-08-25 at 1 56 22 PM

For comparison here is the pre minimized

Screen Shot 2021-08-25 at 1 57 41 PM

Nevertheless, this motivates some questions about how we should implement morphCT. At current, the function that calculates TI doesn't have functionality for using Koopman's. https://github.com/cmelab/morphct/blob/395ac89ca8882846fb66f08524cf488a3f22413d/morphct/transfer_integrals.py#L27

Should we implement this? In Jones2017 (http://dx.doi.org/10.1080/08927022.2017.1296958) it says this is basically to assume that delta_e is 0. This makes the TI the average of the homo and homo_1 of the imagined dimer created from the two chromophores. Is that all there is to implementing it?

This could at least warrant inserting a warning message that states that while running the KMC their are TIs that are popping up as zero not because there is no overlap but because the difference in HOMO levels between the individual chromophores is too large which triggers the following

 if delta_e ** 2 > orbital_splitting ** 2:
        # Avoid an imaginary TI by returning zero.
        # (Could use KOOPMAN'S APPROXIMATION here if desired)
        return 0

Which could be indicative of something unphysical going on within the morphology, as was the case here.

jennyfothergill commented 2 years ago

I'm closing this issue as I think it is resolved.