The TDHF and TDKS programs

Real-time electronic dynamics using time-dependent Hartree-Fock and time-dependent Kohn-Sham theories can be performed using the commands TDHF and TDKS respectively, which have to be preceded by a HF and KS command. Unrestriced versions are available through TDUHF and TDUKS and should be preceded by UHF and UKS runs respectively. All methods require symmetry to be switched off. For details on the theory and methods see H. Eshuis, G. G. Balint-Kurti and F. R. Manby, J. Chem. Phys. $\mathbf{128}$, 114113 (2008), and references therein. The commands take several options:

command,t=,dt=,ns=,ng=,grsize=,print=;
PULSE,options

The total propagation time (in au) is set by t; dt sets the timestep and ns the number of steps, where two of the three have to be provided. ng sets the number of grid points in one dimension (default = 0) and grsize the grid size in bohr (default = 10 bohr). Setting ng $>2$ switches on the calculation of quantum currents (see below). The option print determines the level of output (0=normal output, 1=object linear in matrices, 2=matrices as well, $>2$ debug). The subcommand PULSE determines the envelope used, and takes several options depending on the envelope selected. Possibilities are:

NONE: no pulse, no options

STEP, e_x, e_y, e_z, length
a DC-field of strength $e_q$ is applied in the $q$th direction for a total time length (in au)

DC, e_x, e_y, e_z, \alpha
a DC-field of strength $e_q$ is applied in the $q$th direction. The field is switched on exponentially with a rate determined by $\alpha$.

TRAP, e_x, e_y, e_z, \omega, \alpha
an oscillating field of strength $e_q$ is applied in the $q$th direction. The field oscillates with angular frequency $\omega$. The envelope reaches $e_q$ in one period of the field, stays constant for $\alpha$ periods and then decays to zero in one period.

CW, e_x, e_y, e_z, \omega
an oscillating field of strength $e_q$ is applied in the $q$th direction. The field oscillates with angular frequency $\omega$. No envelope present.

CWSIN, e_x, e_y, e_z, \omega, \alpha
an oscillating field of strength $e_q$ is applied in the $q$th direction. The field oscillates with angular frequency $\omega$ and is switched on using a $\sin^2$ envelope, where $\alpha$ determines how fast the field is switched on.

CWGAUSS, e_x, e_y, e_z, \omega, \alpha
like CWSIN, but with a Gaussian envelope

The finite pulses TRAP and STEP produce an absorption spectrum obtained from the time-dependent dipole moment sampled after the field is switched off. It is located in ($input).spec, or in molpro.spec when running interactively, and contains of 4 columns, which contain energy (eV) and the absorption in the $x, y,z$ direction respectively.

All runs produce a file ($input).dat (or molpro.dat) which contains time-dependent properties, like the components of the field, components of the dipole moment, total energy, orbital occupation numbers, orbital energies and total number of electrons. The Molpro output file specifies the order of the data in the file. For very long runs the size of the file is restricted by printing only every twentieth set of data.

In case of an unrestricted run three files are produced: ($input).dat, ($input)a.dat, ($input)b.dat. The first file contains the generic data about the field, total energy, dipole moments and the expectation value of the total spin operator. The other two files contain the orbital energies and occupation numbers for the $\alpha$ and $\beta$ electrons respectively.

TDKS and TDUKS use the options provided by the KS and UKS comands. At the moment TDKS/TDUKS suffers from numerical instabilities when using strong fields. Divergence of the energy is observed, possibly due to the use of quadrature for the evaluation of the potential.

Quantum currents will be calculated when choosing $ng>2$. A cubic grid will be computed of size grsize with a total of $ng^3$ gridpoints. The imaginary part of the density will be summed at every timestep and after the dynamics the total current will be evaluated at every gridpoint. The user can extract the required data from this array by printing out parts of it, or by integrating over point, but this requires actual coding, as this has not been implemented sufficiently neat. It is also straightforward to evaluate the currents at every timestep or at selected timesteps. This is not done automatically, because it slows down the dynamics considerably.