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

init_input_options(iopts)[source]
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.