TDPropagator
TDPropagator
Section Time-Dependent::Propagation
Type integer
Default etrs
This variable determines which algorithm will be used to approximate
the evolution operator $U(t+\delta t, t)$. That is, given
$\psi(\tau)$ and $H(\tau)$ for $\tau \le t$,
calculate $t+\delta t$. Note that in general the Hamiltonian
is not known at times in the interior of the interval $[t,t+\delta t]$.
This is due to the self-consistent nature of the time-dependent Kohn-Sham problem:
the Hamiltonian at a given time $\tau$ is built from the
"solution" wavefunctions at that time.
Some methods, however, do require the knowledge of the Hamiltonian at some point of the interval $[t,t+\delta t]$. This problem is solved by making use of extrapolation: given a number $l$ of time steps previous to time $t$, this information is used to build the Hamiltonian at arbitrary times within $[t,t+\delta t]$. To be fully precise, one should then proceed self-consistently: the obtained Hamiltonian at time $t+\delta t$ may then be used to interpolate the Hamiltonian, and repeat the evolution algorithm with this new information. Whenever iterating the procedure does not change the solution wavefunctions, the cycle is stopped. In practice, in Octopus we perform a second-order extrapolation without a self-consistency check, except for the first two iterations, where obviously the extrapolation is not reliable.
The proliferation of methods is certainly excessive. The reason for it is that
the propagation algorithm is currently a topic of active development. We
hope that in the future the optimal schemes are clearly identified. In the
mean time, if you do not feel like testing, use the default choices and
make sure the time step is small enough.
Options:
- etrs:
The idea is to make use of time-reversal symmetry from the beginning:
$ \exp \left(-i\delta t H_{n} / 2 \right)\psi_n = \exp \left(i\delta t H_{n+1} / 2 \right)\psi_{n+1}, $
and then invert to obtain:
$ \psi_{n+1} = \exp \left(-i\delta t H_{n+1} / 2 \right) \exp \left(-i\delta t H_{n} / 2 \right)\psi_{n}. $
But we need to know $H_{n+1}$, which can only be known exactly through the solution $\psi_{n+1}$. What we do is to estimate it by performing a single exponential: $\psi^{*}_{n+1}=\exp \left( -i\delta t H_{n} \right) \psi_n$, and then $H_{n+1} = H[\psi^{*}_{n+1}]$. Thus no extrapolation is performed in this case.
- aetrs:
Approximated Enforced Time-Reversal Symmetry (AETRS).
A modification of previous method to make it faster.
It is based on extrapolation of the time-dependent potentials. It is faster
by about 40%.
The only difference is the procedure to estimate $H_{n+1}$: in this case
it is extrapolated via a second-order polynomial by making use of the
Hamiltonian at time $t-2\delta t$, $t-\delta t$ and $t$.
- caetrs:
(experimental) Corrected Approximated Enforced Time-Reversal
Symmetry (AETRS), this is the previous propagator but including
a correction step to the exponential.
- exp_mid:
Exponential Midpoint Rule (EM).
This is maybe the simplest method, but it is very well grounded theoretically:
it is unitary (if the exponential is performed correctly) and preserves
time-reversal symmetry (if the self-consistency problem is dealt with correctly).
It is defined as:
$
U_{\rm EM}(t+\delta t, t) = \exp \left( -i\delta t H_{t+\delta t/2}\right)\,.
$
- crank_nicholson:
- crank_nicolson:
Classical Crank-Nicolson propagator.
$
(1 + i\delta t H_{n+1/2} / 2) \psi_{n+1} = (1 - i\delta t H_{n+1/2} / 2) \psi_{n}
$
- crank_nicholson_sparskit:
- crank_nicolson_sparskit:
Classical Crank-Nicolson propagator. Requires the SPARSKIT library.
$
(1 + i\delta t H_{n+1/2} / 2) \psi_{n+1} = (1 - i\delta t H_{n+1/2} / 2) \psi_{n}
$
- magnus:
Magnus Expansion (M4).
This is the most sophisticated approach. It is a fourth-order scheme (a feature
which it shares with the ST scheme; the other schemes are in principle second-order).
It is tailored for making use of very large time steps, or equivalently,
dealing with problem with very high-frequency time-dependence.
It is still in a experimental state; we are not yet sure of when it is
advantageous.
- qoct_tddft_propagator:
WARNING: EXPERIMENTAL
- runge_kutta4:
WARNING: EXPERIMENTAL. Implicit Gauss-Legendre 4th order Runge-Kutta.
- runge_kutta2:
WARNING: EXPERIMENTAL. Implicit 2nd order Runge-Kutta (trapezoidal rule).
Similar, but not identical, to Crank-Nicolson method.
- expl_runge_kutta4:
WARNING: EXPERIMENTAL. Explicit RK4 method.
- cfmagnus4:
WARNING EXPERIMENTAL