CDTK.Interfaces.MolcasInterface module
- CDTK.Interfaces.MolcasInterface.SmatrixFromOverlapMatrix(ovl)[source]
Extract the useful matrix elements from the overlap matrix of rassi
The overlap matrix provided by rassi contains useless blocs with overlaps between eigenstates states at the same geometry. This The S_ij matrix has elements
<Psi_i(x_a) | Psi_j(x_b)>
where x_a and x_b are different nuclear configurations
- class CDTK.Interfaces.MolcasInterface.molcas(**opts)[source]
Bases:
object
- rasci(X, Time=0.0, root_g=1, **opts)[source]
Perform a rasci calculation and return the gradient for one root
- Input
X – 3N array with geometry in bohr Time – Simulation time root_g – root for which gradient is returned
Output: e — energy in au g — 3N vector for gradient in state root_g
- rasci_D(X, V, Time=0.0, root_g=1, dt=5.0, **opts)[source]
Perform a rasci calculation and return the gradient for one root
- Also compute the matrix of time derivative couplings D by
D_ij = (1/2dt) (<P_i(t)|P_j(t+dt)> - <P_i(t+dt)|P_j(t)>)
- Input
X – 3N array with geometry in bohr V – 3N array with atomic velocities in bohr/au Time – Simulation time root_g – root for which gradient is returned
The symmetric forward 1st order expression
D_ij = (1/2dt) (<P_i(t)|P_j(t+dt)> - <P_i(t+dt)|P_j(t)>)
is implemented using the nuclear velocities as
D_ij = (1/2dt) (<P_i(X)|P_j(X+V*dt)> - <P_i(X+V*dt)|P_j(X)>)
where dt is the internal parameter controlling the finite differentiation step.
- rasci_D_num(X, V, Time=0.0, root_g=1, dt=5.0, dx=0.01, **opts)[source]
Perform a rasci calculation and return the gradient for one root
Use numerical gradients - There is a lot of things problematic (e.g. dependence on initial orbital guess!) with this and it should not be used!!
- Also compute the matrix of time derivative couplings D by
D_ij = (1/2dt) (<P_i(t)|P_j(t+dt)> - <P_i(t+dt)|P_j(t)>)
- Input
X – 3N array with geometry in bohr V – 3N array with atomic velocities in bohr/au Time – Simulation time root_g – root for which gradient is returned
The symmetric forward 1st order expression
D_ij = (1/2dt) (<P_i(t)|P_j(t+dt)> - <P_i(t+dt)|P_j(t)>)
is implemented using the nuclear velocities as
D_ij = (1/2dt) (<P_i(X)|P_j(X+V*dt)> - <P_i(X+V*dt)|P_j(X)>)
where dt is the internal parameter controlling the finite differentiation step.
- CDTK.Interfaces.MolcasInterface.readOverlapMatrix(logfile, nstates)[source]
Read the overlap matrix generated by rassi Input logfile – string, path to log file nstates – number of overlaped states NOTE: in calculations of time derivative couplings, nstates will often be 2*N, where N is the number of physical states of interest. This is because rassi calculates all overlaps between both sets of states at the two displaced geometries.