Only two TDKS job-control variables belong in the $rem section: TDKS = TRUE to request such a calculation, and (optionally) TDKS_RESTART = TRUE to resume a previous time propagation. All other job control relies on a $tdks input section that is described below. The propagator algorithms are described in detail in Ref. 1292 and the use of TDKS to obtain broadband spectra is described in Ref. 1292 and in Ref. Zhu:2021.
Assuming that TDKS_RESTART = FALSE, a standard ground-state SCF calculation is performed first in order to obtain the density at . For this calculation, the value of SCF_CONVERGENCE needs to be set reasonably tightly because in the subsequent TDKS calculation the density will be perturbed by an external field (to generate the time-dependent superposition state) so any convergence error in the initial density needs to be smaller than the perturbation-induced fluctuations that one is trying to integrate in the TDKS time-propagation steps. The use of incremental Fock builds (INCFOCK = TRUE) is recommended to reduce the cost of the numerous Fock builds, which are closely spaced in time. The input file for a basic TDKS propagation is illustrated in the following example. The basic job is relatively simple but sophisticated jobs require additional input files, and generate additional output.
$molecule 0 1 O 0.000000 0.000000 0.000000 H 0.758602 0.000000 0.504284 H 0.758602 0.000000 -0.504284 $end $rem METHOD pbe0 BASIS 6-31G* TDKS true PURECART 2222 SCF_CONVERGENCE 7 $end $tdks DT 0.05 MAXITER 30000 PROPAGATOR MMUT FIELD_VECTOR 1 1 1 FIELD_TYPE delta FIELD_AMP 0.0001 $end
Numerous time steps are required for most practical applications of the TDKS approach and therefore a restart capability is provided. A long dynamics simulation can therefore be executed in segments (e.g., to sidestep wall-time limits on shared computing resources), by setting TDKS_RESTART = TRUE in the $rem section. Results from the previous job are stored in the scratch directory and the next job is started by reading the data from the same directory, picking up where the previous time propagation left off. As such, the -save flag is required for the subsequent Q-Chem job, and the scratch directory should be given the same name for both jobs. By default, the intermediate results are automatically stored every 1,000 steps. If the job is stopped accidentally before reaching the requested number of time steps, it can be easily be restarted from the last saved step.
$molecule 0 1 H 0.000000 0.000000 0.000000 H 0.000000 0.000000 0.750000 $end $rem METHOD pbe BASIS 6-31G SYMMETRY false UNRESTRICTED true INCFOCK 0 PURECART 2222 SCF_CONVERGENCE 9 TDKS_RESTART 0 TDKS 1 $end $tdks dt 0.05 maxiter 25 propagator MMUT field_vector 1 1 1 field_type delta field_amp 0.0001 $end @@@ $molecule read $end $rem METHOD pbe BASIS 6-31G SYMMETRY false UNRESTRICTED true INCFOCK 0 PURECART 2222 SCF_CONVERGENCE 9 TDKS_RESTART 1 TDKS 1 SCF_GUESS read $end $tdks dt 0.05 maxiter 25 propagator MMUT field_vector 1 1 1 field_type delta field_amp 0.0001 $end
The remaining job control parameters belong in the $tdks input section.
The TDKS approach is based on applying a perturbing electric field to a (previously field-free) ground state . The perturbation generates a superposition of all symmetry-allowed excited states , i.e., those having a non-vanishing matrix element . Several choices for the perturbing field are available, and this choice is specified by means of the Field_Type keyword in the $tdks input section. (Additional job control parameters are required for some field types, as described below.)
These choices for Field_Type can be summarized as follows. Note that is a vector quantity whose magnitude is controlled by Field_Amp and whose direction is controlled by Field_Vector.
Delta simulates a Dirac -function kick, with the field turned on (at a constant amplitude) only during the first two time steps. The amplitude is controlled by the Field_Amp keyword that is documented below. In order to normalize across different choices of , Field_Amp actually specifies the integrated field intensity , meaning that the electric field intensity itself is (Field_Amp)/.Zhu:2021 That way, Field_Amp controls the total amount of energy that is put into this system by the -function impulse, which is the only way that results from simulations with two different time steps can be compared side-by-side.
CW simulates a continuous-wave electric field of the form , whose amplitude and frequency are set using the keywords Field_Amp and Field_Frequency, respectively, in the $tdks section.
The Impulse field has a Gaussian envelope,
with and frequency set using Field_Amp and Field_Frequency, respectively. The field parameters and are set using Field_Tau and Field_Peak, respectively, in the $tdks section. The direction is set using Field_Vector.
Simulations of broadband spectra at high energies (e.g., for x-ray absorption spectroscopy at the K-edge, corresponding to 1s virtual excitations), the requisite electron dynamics often corresponds to fluctuations that take the density out to the edge of the region of space that is spanned by the Gaussian basis set. The edge of the basis set imposes an artificial potential wall, and a time-dependent wave packet can reflect off of this wall and then interfere with its own outgoing wave, in an artificial manner that simply reflects the finite-basis approximation.Zhu:2021 In practice, this can introduce artificial oscillations into broadband spectra obtained from TDKS calculations. The same is true in TDKS simulations of strong-field electron dynamics, such as high harmonic generation.Zhu:2022 These unwanted artifacts can be removed by the introduction of a complex absorbing potential (CAP) that annihilates the outgoing wave that encounters it.
For TDKS calculations, the CAP that is available is constructed from a sum of spherical, overlapping atom-centered potentials.Zhu:2021, Zhu:2022 Within each of these, the potential is zero within a cutoff radius around , the position of atom . Outside of that radius, the potential rises quadratically with curvature . This is implemented using a set of atom-centered CAP functions
At any point in space, the value of the CAP is taken to be , where is the minimum of the various atom-centered potentials and a cutoff , the latter of which is used to avoid numerical overflow problems. All together,
The value of is user-specifiable and should probably be tested for specific applications. (For simulating strong-field ionization dynamics, a value has been used,591 where is a representative atomic van der Waals radius.) Note that placing beyond the extent of the Gaussian basis functions themselves will have no effect. For a Gaussian basis function with exponent , the full width at half maximum of that function is460, Zhu:2021
and half that value is therefore a measure of the radial extent of the basis function in question. This can be used to estimate the spatial extent of the basis, taking to be the smallest (most diffuse) exponent.460 Note that when basis function information is requested using PRINT_GENERAL_BASIS = TRUE, the exponents are printed in atomic units of .
The following variables in the $tdks input section control the use of a CAP in TDKS calculations.