Hello, world! Hi everyone, I am new to psi4 and meet with some problems this week. Thanks for reviewing my topic.
I am trying to implement the Boys diabatization method of excited states with CIS using the psi4numpy interface. To do this, I need to get the transition dipole moments between different CI excited states and the energy of all excited states.
Here are my questions:
-
is there a way to get CI root energy in the psi4numpy interface?
-
It seems that I can only get the transition dipole moment between Root 0 and other Roots. I am curious if I can get the transition dipole moment of different CI excited states, i.e., excited state 1 and excited state 2.
Here is my input file:
import psi4
import numpy as np
psi4.set_output_file("output.dat", True)
psi4.set_memory(int(15e9))
numpy_memory = 15
# set molecule
mol = psi4.geometry("""
C -0.0109277294 -0.0003084931 -0.0000000168
C 1.3195668096 -0.0334284831 0.0000000469
H 1.9161697726 0.8757547346 0.0000016635
H 1.8706155430 -0.9709447058 -0.0000015270
H -0.5620633765 0.9371525300 0.0000014862
H -0.6076652628 -0.9094033754 -0.0000016528
C 0.00747483 5.12734788 0.00000047
C 1.30103304 4.83888510 0.00000575
F 2.24935463 5.76457895 0.00000226
F 1.76651200 3.59760567 0.00000333
F -0.45783697 6.36873346 -0.00000783
F -0.94085552 4.20168837 -0.00000397
""")
# set option
psi4.set_options({'basis': '6-31g*',
'scf_type': 'pk',
'FCI':'false',
'opdm':'true',
'num_roots':6,
'tdm':'true',
'dipmom':'true',
'ex_level':1,
'e_convergence': 1e-8,
'd_convergence': 1e-8})
#get excitation energy
ci_e, wfn = psi4.energy('detci', return_wfn=True)
ener = psi4.get_variable('CI ROOT 0 -> ROOT 2 EXCITATION ENERGY')
print(ci_e)
print(ener)
#transition density matrix
opdm_0 = wfn.get_opdm(1,4,"SUM", True)
dm = opdm_0.to_array()
print(dm)
#two electron integral
mints = psi4.core.MintsHelper(wfn.basisset())
I = mints.ao_eri()
D = I.to_array()
print(I.np)
#get transition dipole moment
props = ['DIPOLE', 'TRANSITION_DIPOLE']
psi4.properties('detci',properties=props)
M = ['X','Y','Z']
for i in range(6):
for j in M:
dipole=psi4.get_variable('CI ROOT %d -> ROOT %d DIPOLE %s'%(i,i+1,j))
print('CI ROOT %d -> ROOT %d DIPOLE %s = %s'%(i,i+1,j,dipole))
Some relevant topics and pages: calculating transition and state density matrices, Is there a way to calculate transition dipole moments?, Transition dipole moment using CI, Excited state pes; ci-property