""") # # The same Hamiltonian using the Molecule class # from quantarhei import Molecule m = Molecule(name="Mol 1", elenergies=[0.0, 1.0]) m.set_adiabatic_coupling(0,1,0.4) from quantarhei import Mode vib1 = Mode(frequency=0.01) m.add_Mode(vib1) vib1.set_shift(1, 0.5) vib1.set_nmax(0, 5) vib1.set_nmax(1, 5) Hm = m.get_Hamiltonian() print(Hm) print(m) psi_vib = StateVector(10) psi_vib.data[3] = 1.0 prop_vib = StateVectorPropagator(time, Hm) psi_vib_t = prop_vib.propagate(psi_vib)
""") # # The same Hamiltonian using the Molecule class # from quantarhei import Molecule m = Molecule("Mol 1", [0.0, 1.0]) m.set_adiabatic_coupling(0, 1, 0.4) from quantarhei import Mode vib1 = Mode(frequency=0.01) m.add_Mode(vib1) vib1.set_shift(1, 0.5) vib1.set_nmax(0, 5) vib1.set_nmax(1, 5) Hm = m.get_Hamiltonian() print(Hm) print(m) psi_vib = StateVector(10) psi_vib.data[3] = 1.0 prop_vib = StateVectorPropagator(time, Hm) psi_vib_t = prop_vib.propagate(psi_vib) with eigenbasis_of(Hm):
m.set_dipole(0,2,[di,0.0,0.0]) # # To represent CT coordinate, we add an explicite harmonic mode # to the molecule. # # First the mode with frequency 10 1/cm is created qct = Mode(frequency=10.0) # and registered with the molecule m.add_Mode(qct) # In the CT state, the equilibrium coordinate is shifted towards # charge separation. In the ground state and the exciton, no shift # of the coordinate is assumed (see the text (!!!!) for justification.) qct.set_shift(1,1.0) # By default, the Mode we created is harmonic. The number of states # by which it is represented is set to 2 (which is a very small number). # Let us increase the number of states to represent the oscillators # in the three electronic states of the molecule to some chosen N[0], N[1] # and N[2] (see the text (!!!!) for the choice of values). # # we create an array of 3 zeros N = numpy.zeros(3,dtype=numpy.int) # set all of them to the value of 10 N[0] = 10 N[1] = 20 N[2] = 20 # loop from 0 to 2 for i in range(3):