MaxwellFunctions
Section: Time-Dependent
Type: block
This block specifies the shape of a "spatial-dependent function", such as the
envelope needed when using the MaxwellFunctions block. Each line in the block
specifies one function. The first element of each line will be a string
that defines the name of the function. The second element specifies which type
of function we are using; in the following we provide an example for each of the
possible types:
Options:
TDExternalFields
Section: Time-Dependent
Type: block
The block TDExternalFields describes the type and shape of time-dependent
external perturbations that are applied to the system, in the form
\(f(x,y,z) \cos(\omega t + \phi (t)) g(t)\), where \(f(x,y,z)\) is defined by
by a field type and polarization or a scalar potential, as below; \(\omega\)
is defined by omega; \(g(t)\) is defined by
envelope_function_name; and \(\phi(t)\) is the (time-dependent) phase from phase.
These perturbations are only applied for time-dependent runs. If
you want the value of the perturbation at time zero to be
applied for time-independent runs, use TimeZero = yes.
Each line of the block describes an external field; this way you can actually have more
than one laser (e.g. a "pump" and a "probe").
There are two ways to specify \(f(x,y,z)\) but both use the same omega | envelope_function_name [| phase]
for the time-dependence.
The float omega will be the carrier frequency of the
pulse (in energy units). The envelope of the field is a time-dependent function whose definition
must be given in a TDFunctions block. envelope_function_name is a string (and therefore
it must be surrounded by quotation marks) that must match one of the function names
given in the first column of the TDFunctions block.
phase is optional and is taken to be zero if not provided, and is also a string specifying
a time-dependent function.
(A) type = electric field, magnetic field, vector_potential
For these cases, the syntax is:
%TDExternalFields
type | nx | ny | nz | omega | envelope_function_name | phase
%
The vector_potential option (constant in space) permits us to describe
an electric perturbation in the velocity gauge.
The three (possibly complex) numbers (nx, ny, nz) mark the polarization
direction of the field.
(B) type = scalar_potential
%TDExternalFields
scalar_potential | "spatial_expression" | omega | envelope_function_name | phase
%
The scalar potential is any expression of the spatial coordinates given by the string
"spatial_expression", allowing a field beyond the dipole approximation.
For DFTB runs, only fields of type type = electric field are allowed for the moment, and the
type keyword is omitted.
A NOTE ON UNITS:
It is very common to describe the strength of a laser field by its intensity, rather
than using the electric-field amplitude. In atomic units (or, more precisely, in any
Gaussian system of units), the relationship between instantaneous electric field
and intensity is:
\( I(t) = \frac{c}{8\pi} E^2(t) \).
It is common to read intensities in W/cm\(^2\). The dimensions of intensities are
[W]/(L\(^2\)T), where [W] are the dimensions of energy. The relevant conversion factors
are:
Hartree / (\(a_0^2\) atomic_time) = \(6.4364086 \times 10^{15} \mathrm{W/cm}^2\)
eV / ( Å\(^2 (\hbar\)/eV) ) = \(2.4341348 \times 10^{12} \mathrm{W/cm}^2\)
If, in atomic units, we set the electric-field amplitude to \(E_0\),
then the intensity is:
\( I_0 = 3.51 \times 10^{16} \mathrm{W/cm}^2 (E_0^2) \)
If, working with Units = ev_angstrom, we set \(E_0\), then the intensity is:
\( I_0 = 1.327 \times 10^{13} (E_0^2) \mathrm{W/cm}^2 \)
Options:
TDFreezeDFTUOccupations
Section: Time-Dependent
Type: logical
Default: no
The occupation matrices than enters in the LDA+U potential
are not evolved during the time evolution.
TDFreezeHXC
Section: Time-Dependent
Type: logical
Default: no
The electrons are evolved as independent particles feeling the Hartree and
exchange-correlation potentials from the ground-state electronic configuration.
TDFreezeOrbitals
Section: Time-Dependent
Type: integer
Default: 0
(Experimental) You have the possibility of "freezing" a number of orbitals during a time-propagation.
The Hartree and exchange-correlation potential due to these orbitals (which
will be the lowest-energy ones) will be added during the propagation, but the orbitals
will not be propagated.
Options:
TDFreezeU
Section: Time-Dependent
Type: logical
Default: no
The effective U of LDA+U is not evolved during the time evolution.
TDFunctions
Section: Time-Dependent
Type: block
This block specifies the shape of a "time-dependent function", such as the
envelope needed when using the TDExternalFields block. Each line in the block
specifies one function. The first element of each line will be a string
that defines the name of the function. The second element specifies which type
of function we are using; in the following we provide an example for each of the
possible types:
Options:
TDGlobalForce
Section: Time-Dependent
Type: string
If this variable is set, a global time-dependent force will be
applied to the ions in the x direction during a time-dependent
run. This variable defines the base name of the force, that
should be defined in the TDFunctions block. This force
does not affect the electrons directly.
TDScissor
Section: Time-Dependent
Type: float
Default: 0.0
(experimental) If set, a scissor operator will be applied in the
Hamiltonian, shifting the excitation energies by the amount
specified. By default, it is not applied.
ABCapHeight
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: -0.2 a.u.
When AbsorbingBoundaries = cap, this is the height of the imaginary potential.
ABShape
Section: Time-Dependent::Absorbing Boundaries
Type: block
Set the shape of the absorbing boundaries. Here you can set the inner
and outer bounds by setting the block as follows:
%ABShape
inner | outer | "user-defined"
%
The optional 3rd column is a user-defined expression for the absorbing
boundaries. For example, \(r\) creates a spherical absorbing zone for
coordinates with \({\tt inner} < r < {\tt outer}\), and \(z\) creates an
absorbing plane.
Note, values outer larger than the box size may lead in these cases to
unexpected reflection behaviours.
If no expression is given, the absorbing zone follows the edges of the
box (not valid for user-defined box).
ABWidth
Section: Time-Dependent::Absorbing Boundaries
Type: float
Specifies the boundary width. For a finer control over the absorbing boundary
shape use ABShape.
AbsorbingBoundaries
Section: Time-Dependent::Absorbing Boundaries
Type: flag
Default: not_absorbing
To improve the quality of the spectra by avoiding the formation of
standing density waves, one can make the boundaries of the simulation
box absorbing and use exterior complex scaling.
Options:
MaxwellABPMLPower
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 3.5
Exponential of the polynomial profile for the non-physical conductivity of the PML.
Should be between 2 and 4
MaxwellABPMLReflectionError
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 1.0e-16
Tolerated reflection error for the PML
MaxwellABWidth
Section: Time-Dependent::Absorbing Boundaries
Type: float
Width of the region used to apply the absorbing boundaries. The default value is twice
the derivative order.
MediumElectricSigma
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 0.
Electric conductivity of the linear medium.
MediumEpsilonFactor
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 1.0.
Linear medium electric susceptibility.
MediumMagneticSigma
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 0.
Magnetic conductivity of the linear medium.
MediumMuFactor
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 1.0
Linear medium magnetic susceptibility.
MediumWidth
Section: Time-Dependent::Absorbing Boundaries
Type: float
Default: 0.0 a.u.
Width of the boundary region with medium
PESMask2PEnlargeFactor
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: 1.0
Mask two points enlargement factor. Enlarges the mask box by adding two
points at the edges of the box in each direction (x,y,z) at a distance
L=Lb*PESMask2PEnlargeFactor where Lb is the box size.
This allows to run simulations with an additional void space at a price of
adding few points. The Fourier space associated with the new box is restricted
by the same factor.
Note: needs PESMaskPlaneWaveProjection = nfft_map or pnfft_map .
PESMaskEnlargeFactor
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: 1
Mask box enlargement level. Enlarges the mask bounding box by a PESMaskEnlargeFactor.
This helps to avoid wavefunction wrapping at the boundaries.
PESMaskFilterCutOff
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: -1
In calculation with PESMaskMode = fullmask_mode and NFFT, spurious frequencies
may lead to numerical instability of the algorithm. This option gives the possibility
to filter out the unwanted components by setting an energy cut-off.
If PESMaskFilterCutOff = -1 no filter is applied.
PESMaskIncludePsiA
Section: Time-Dependent::PhotoElectronSpectrum
Type: logical
Default: false
Add the contribution of \(\Psi_A\) in the mask region to the photo-electron spectrum.
Literally adds the Fourier components of:
\(\Theta(r-R1) \Psi_A(r)\)
with \(\Theta\) being the Heaviside step function.
With this option PES will contain all the contributions starting from the inner
radius \(R1\). Use this option to improve convergence with respect to the box size
and total simulation time.
Note: Carefully choose \(R1\) in order to avoid contributions from returning electrons.
PESMaskMode
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: mask_mode
PES calculation mode.
Options:
PESMaskPlaneWaveProjection
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: fft_map
With the mask method, wavefunctions in the continuum are treated as plane waves.
This variable sets how to calculate the plane-wave projection in the buffer
region. We perform discrete Fourier transforms (DFT) in order to approximate
a continuous Fourier transform. The major drawback of this approach is the built-in
periodic boundary condition of DFT. Choosing an appropriate plane-wave projection
for a given simulation in addition to PESMaskEnlargeFactor and
PESMask2PEnlargeFactorwill help to converge the results.
NOTE: depending on the value of PESMaskMode PESMaskPlaneWaveProjection,
may affect not only performance but also the time evolution of the density.
Options:
PESMaskShape
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: m_sin2
The mask function shape.
Options:
PESMaskSize
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
Set the size of the mask function.
Here you can set the inner (R1) and outer (R2) radius by setting
the block as follows:
%PESMaskSize
R1 | R2 | "user-defined"
%
The optional 3rd column is a user-defined expression for the mask
function. For example, r creates a spherical mask (which is the
default for BoxShape = sphere). Note, values R2 larger than
the box size may lead in this case to unexpected reflection
behaviours.
PESMaskSpectEnergyMax
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: maxval(mask%Lk)\(^2/2\)
The maximum energy for the PES spectrum.
PESMaskSpectEnergyStep
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
The PES spectrum energy step.
PESMaskStartTime
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: -1.0
The time photoelectrons start to be recorded. In pump-probe simulations, this allows
getting rid of an unwanted ionization signal coming from the pump.
NOTE: This will enforce the mask boundary conditions for all times.
PES_Flux_ARPES_grid
Section: Time-Dependent::PhotoElectronSpectrum
Type: logical
Use a curvilinear momentum space grid that compensates the transformation
used to obtain ARPES. With this choice ARPES data is laid out on a Cartesian
regular grid.
By default true when PES_Flux_Shape = pln and a KPointsPath
is specified.
PES_Flux_AnisotropyCorrection
Section: Time-Dependent::PhotoElectronSpectrum
Type: logical
Apply anisotropy correction.
PES_Flux_DeltaK
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: 0.02
Spacing of the the photoelectron momentum grid.
PES_Flux_EnergyGrid
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
The block PES_Flux_EnergyGrid specifies the energy grid
in momentum space.
%PES_Flux_EnergyGrid
Emin | Emax | DeltaE
%
PES_Flux_Face_Dens
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
Define the number of points density per unit of area (in au) on the
face of the 'cub' surface.
PES_Flux_GridTransformMatrix
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
Define an optional transformation matrix for the momentum grid.
%PES_Flux_GridTransformMatrix
M_11 | M_12 | M_13
M_21 | M_22 | M_23
M_31 | M_32 | M_33
%
PES_Flux_Kmax
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: 1.0
The maximum value of the photoelectron momentum.
For cartesian momentum grids one can specify a value different
for cartesian direction using a block input.
PES_Flux_Kmin
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: 0.0
The minimum value of the photoelectron momentum.
For cartesian momentum grids one can specify a value different
for cartesian direction using a block input.
PES_Flux_Lmax
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: 80
Maximum order of the spherical harmonic to be integrated on an equidistant spherical
grid (to be changed to Gauss-Legendre quadrature).
PES_Flux_Lsize
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
For PES_Flux_Shape = cub sets the dimensions along each direction. The syntax is:
%PES_Flux_Lsize
xsize | ysize | zsize
%
where xsize, ysize, and zsize are with respect to the origin. The surface can
be shifted with PES_Flux_Offset.
If PES_Flux_Shape = pln, specifies the position of two planes perpendicular to
the non-periodic dimension symmetrically placed at PES_Flux_Lsize distance from
the origin.
PES_Flux_Momenutum_Grid
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Decides how the grid in momentum space is generated.
Options:
PES_Flux_Offset
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
Shifts the surface for PES_Flux_Shape = cub. The syntax is:
%PES_Flux_Offset
xshift | yshift | zshift
%
PES_Flux_Parallelization
Section: Time-Dependent::PhotoElectronSpectrum
Type: flag
The parallelization strategy to be used to calculate the PES spectrum
using the resources available in the domain parallelization pool.
This option is not available without domain parallelization.
Parallelization over k-points and states is always enabled when available.
Options:
PES_Flux_PhiK
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
Define the grid points on theta (\(0 \le \theta \le 2\pi\)) when
using a spherical grid in momentum.
The block defines the maximum and minimum values of theta and the number of
of points for the discretization.
%PES_Flux_PhiK
theta_min | theta_max | npoints
%
By default theta_min=0, theta_max = pi, npoints = 90.
PES_Flux_Radius
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
The radius of the sphere, if PES_Flux_Shape == sph.
PES_Flux_RuntimeOutput
Section: Time-Dependent::PhotoElectronSpectrum
Type: logical
Write output in ascii format at runtime.
PES_Flux_Shape
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
The shape of the surface.
Options:
PES_Flux_StepsPhiK
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: 90
Number of steps in \(\phi\) (\(0 \le \phi \le 2 \pi\)) for the spherical grid in k.
PES_Flux_StepsPhiR
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Number of steps in \(\phi\) (\(0 \le \phi \le 2 \pi\)) for the spherical surface.
PES_Flux_StepsThetaK
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: 45
Number of steps in \(\theta\) (\(0 \le \theta \le \pi\)) for the spherical grid in k.
PES_Flux_StepsThetaR
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Number of steps in \(\theta\) (\(0 \le \theta \le \pi\)) for the spherical surface.
PES_Flux_ThetaK
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
Define the grid points on theta (\(0 \le \theta \le \pi\)) when
using a spherical grid in momentum.
The block defines the maximum and minimum values of theta and the number of
of points for the discretization.
%PES_Flux_ThetaK
theta_min | theta_max | npoints
%
By default theta_min=0, theta_max = pi, npoints = 45.
PES_Flux_UseSymmetries
Section: Time-Dependent::PhotoElectronSpectrum
Type: logical
Use surface and momentum grid symmetries to speed up calculation and
lower memory footprint.
By default available only when the surface shape matches the grid symmetry i.e.:
PES_Flux_Shape = m_cub or m_pln and PES_Flux_Momenutum_Grid = m_cartesian
or
PES_Flux_Shape = m_sph and PES_Flux_Momenutum_Grid = m_polar
PES_spm_DeltaOmega
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
The spacing in frequency domain for the photoelectron spectrum (if PES_spm_OmegaMax > 0).
The default is PES_spm_OmegaMax/500.
PES_spm_OmegaMax
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
Default: 0.0
If PES_spm_OmegaMax > 0, the photoelectron spectrum is directly calculated during
time-propagation, evaluated by the PES_spm method. PES_spm_OmegaMax is then the maximum frequency
(approximate kinetic energy) and PES_spm_DeltaOmega the spacing in frequency domain of the spectrum.
PES_spm_Radius
Section: Time-Dependent::PhotoElectronSpectrum
Type: float
The radius of the sphere for the spherical grid (if no PES_spm_points
are given).
PES_spm_StepsPhiR
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: 90
Number of steps in \(\phi\) (\(0 \le \phi \le 2 \pi\)) for the spherical grid (if no
PES_spm_points are given).
PES_spm_StepsThetaR
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: 45
Number of steps in \(\theta\) (\(0 \le \theta \le \pi\)) for the spherical grid (if no
PES_spm_points are given).
PES_spm_points
Section: Time-Dependent::PhotoElectronSpectrum
Type: block
List of points at which to calculate the photoelectron spectrum by the sample point
method. If no points are given, a spherical grid is generated automatically.
The exact syntax is:
%PES_spm_points
x1 | y1 | z1
%
PES_spm_recipe
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: phase
The type for calculating the photoelectron spectrum in the sample point method.
Options:
PhotoElectronSpectrum
Section: Time-Dependent::PhotoElectronSpectrum
Type: integer
Default: none
This variable controls the method used for the calculation of
the photoelectron spectrum. You can specify more than one value
by giving them as a sum, for example:
PhotoElectronSpectrum = pes_spm + pes_mask
Options:
ArnoldiOrthogonalization
Section: Time-Dependent::Propagation
Type: integer
The orthogonalization method used for the Arnoldi procedure.
Only for TDExponentialMethod = lanczos.
Options:
InteractionTiming
Section: Time-Dependent::Propagation
Type: integer
Default: timing_exact
A parameter to determine if interactions should use the quantities
at the exact time or if retardation is allowed.
Options:
IonsConstantVelocity
Section: Time-Dependent::Propagation
Type: logical
Default: no
(Experimental) If this variable is set to yes, the ions will
move with a constant velocity given by the initial
conditions. They will not be affected by any forces.
IonsTimeDependentDisplacements
Section: Time-Dependent::Propagation
Type: block
(Experimental) This variable allows you to specify a
time-dependent function describing the displacement of the ions
from their equilibrium position: \(r(t) = r_0 + \Delta
r(t)\). Specify the displacements dx(t), dy(t), dz(t) as
follows, for some or all of the atoms:
%IonsTimeDependentDisplacements
atom_index | "dx(t)" | "dy(t)" | "dz(t)"
%
The displacement functions are time-dependent functions and should match one
of the function names given in the first column of the TDFunctions block.
If this block is set, the ions will not be affected by any forces.
MaxwellAbsorbingBoundaries
Section: Time-Dependent::Propagation
Type: block
Type of absorbing boundaries used for Maxwell propagation in each direction.
Example:
%MaxwellAbsorbingBoundaries
cpml | cpml | cpml
%
Options:
MaxwellBoundaryConditions
Section: Time-Dependent::Propagation
Type: block
Defines boundary conditions for the electromagnetic field propagation.
Example:
%MaxwellBoundaryConditions
zero | mirror_pec | consant
%
Options:
MaxwellTDETRSApprox
Section: Time-Dependent::Propagation
Type: integer
Default: no
Whether to perform aproximations to the ETRS propagator.
Options:
MaxwellTDIntervalSteps
Section: Time-Dependent::Propagation
Type: integer
This variable determines how many intervall steps the Maxwell field propagation
does until it reaches the matter time step. In case that MaxwellTDIntervalSteps is
equal to one, the Maxwell time step is equal to the matter one. The default value is 1.
MaxwellTDOperatorMethod
Section: Time-Dependent::Propagation
Type: integer
Default: op_fd
The Maxwell Operator e.g. the curl operation can be obtained by
two different methods, the finid-difference or the fast fourier
transform.
Options:
MaxwellTDSCFThreshold
Section: Time-Dependent::Propagation
Type: float
Default: 1.0e-6
Since the Maxwell-KS propagator is non-linear, each propagation step
should be performed self-consistently. In practice, for most
purposes this is not necessary, except perhaps in the first
iterations. This variable holds the number of propagation steps
for which the propagation is done self-consistently.
This variable controls the accuracy threshold for the self consistency.
MoveIons
Section: Time-Dependent::Propagation
Type: logical
This variable controls whether atoms are moved during a time
propagation run. The default is yes when the ion velocity is
set explicitly or implicitly, otherwise is no.
RecalculateGSDuringEvolution
Section: Time-Dependent::Propagation
Type: logical
Default: no
In order to calculate some information about the system along the
evolution (e.g. projection onto the ground-state KS determinant,
projection of the TDKS spin-orbitals onto the ground-state KS
spin-orbitals), the ground-state KS orbitals are needed. If the
ionic potential changes -- that is, the ions move -- one may want
to recalculate the ground state. You may do this by setting this
variable.
The recalculation is not done every time step, but only every
RestartWriteInterval time steps.
TDDynamics
Section: Time-Dependent::Propagation
Type: integer
Default: ehrenfest
Type of dynamics to follow during a time propagation.
For BO, you must set MoveIons = yes.
Options:
TDEnergyUpdateIter
Section: Time-Dependent::Propagation
Type: integer
This variable controls after how many iterations Octopus
updates the total energy during a time-propagation run. For
iterations where the energy is not updated, the last calculated
value is reported. If you set this variable to 1, the energy
will be calculated in each step.
TDExpOrder
Section: Time-Dependent::Propagation
Type: integer
Default: 4
For TDExponentialMethod = standard or chebyshev,
the order to which the exponential is expanded. For the Lanczos approximation,
it is the Lanczos-subspace dimension.
TDExponentialMethod
Section: Time-Dependent::Propagation
Type: integer
Default: taylor
Method used to numerically calculate the exponential of the Hamiltonian,
a core part of the full algorithm used to approximate the evolution
operator, specified through the variable TDPropagator.
In the case of using the Magnus method, described below, the action of the exponential
of the Magnus operator is also calculated through the algorithm specified
by this variable.
Options:
TDIonicTimeScale
Section: Time-Dependent::Propagation
Type: float
Default: 1.0
This variable defines the factor between the timescale of ionic
and electronic movement. It allows reasonably fast
Born-Oppenheimer molecular-dynamics simulations based on
Ehrenfest dynamics. The value of this variable is equivalent to
the role of \(\mu\) in Car-Parrinello. Increasing it
linearly accelerates the time step of the ion
dynamics, but also increases the deviation of the system from the
Born-Oppenheimer surface. The default is 1, which means that both
timescales are the same. Note that a value different than 1
implies that the electrons will not follow physical behaviour.
According to our tests, values around 10 are reasonable, but it
will depend on your system, mainly on the width of the gap.
Important: The electronic time step will be the value of
TDTimeStep divided by this variable, so if you have determined an
optimal electronic time step (that we can call dte), it is
recommended that you define your time step as:
TDTimeStep = dte * TDIonicTimeScale
so you will always use the optimal electronic time step
(more details).
TDLanczosTol
Section: Time-Dependent::Propagation
Type: float
Default: 1e-5
An internal tolerance variable for the Lanczos method. The smaller, the more
precisely the exponential is calculated, and also the bigger the dimension
of the Krylov subspace needed to perform the algorithm. One should carefully
make sure that this value is not too big, or else the evolution will be
wrong.
TDMaxSteps
Section: Time-Dependent::Propagation
Type: integer
Default: 1500
Number of time-propagation steps that will be performed. You
cannot use this variable together with TDPropagationTime.
TDMaxwellKSRelaxationSteps
Section: Time-Dependent::Propagation
Type: integer
Default: 0
Time steps in which the coupled Maxwell-matter system relax the Maxwell states evolves under
free dynamics conditions. After these many steps, the external fields and currents are
switched on. The full requested simulation effectively states after this value.
TDMaxwellTDRelaxationSteps
Section: Time-Dependent::Propagation
Type: integer
Default: 0
Time steps needed to relax the Maxwell states in the presence of a matter system, to avoid
spurious relaxation effects. After these steps, the Maxwell-matter coupling can be switched on.
of the relaxation dynamics.
TDPhotonicTimeScale
Section: Time-Dependent::Propagation
Type: float
Default: 1.0
This variable defines the factor between the timescale of photonic
and electronic movement.
for more details see the documentation of TDIonicTimeScale
If you also use TDIonicTimeScale, we advise to set
TDPhotonicTimeScale = TDIonicTimeScale, in the case the
photon frequency is in a vibrational energy range.
Important: The electronic time step will be the value of
TDTimeStep divided by this variable, so if you have determined an
optimal electronic time step (that we can call dte), it is
recommended that you define your time step as:
TDTimeStep = dte * TDPhotonicTimeScale
so you will always use the optimal electronic time step
(more details).
TDPropagationTime
Section: Time-Dependent::Propagation
Type: float
The length of the time propagation. You cannot set this variable
at the same time as TDMaxSteps. By default this variable will
not be used.
The units for this variable are \(\hbar\)/Hartree (or \(\hbar\)/eV if you
selected ev_angstrom as input units). The approximate conversions to
femtoseconds are 1 fs = 41.34 \(\hbar\)/Hartree = 1.52 \(\hbar\)/eV.
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:
TDSCFThreshold
Section: Time-Dependent::Propagation
Type: float
Default: 1.0e-6
Since the KS propagator is non-linear, each propagation step
should be performed self-consistently. In practice, for most
purposes this is not necessary, except perhaps in the first
iterations. This variable holds the number of propagation steps
for which the propagation is done self-consistently.
The self consistency has to be measured against some accuracy
threshold. This variable controls the value of that threshold.
TDStepsWithSelfConsistency
Section: Time-Dependent::Propagation
Type: integer
Default: 0
Since the KS propagator is non-linear, each propagation step
should be performed self-consistently. In practice, for most
purposes this is not necessary, except perhaps in the first
iterations. This variable holds the number of propagation steps
for which the propagation is done self-consistently.
The special value all_steps forces self-consistency to
be imposed on all propagation steps. A value of 0 means that
self-consistency will not be imposed. The default is 0.
Options:
TDSystemPropagator
Section: Time-Dependent::Propagation
Type: integer
Default: static
A variable to set the propagator in the multisystem framework.
This is a temporary solution, and should be replaced by the
TDPropagator variable.
Options:
TDTimeStep
Section: Time-Dependent::Propagation
Type: float
The time-step for the time propagation. For most propagators you
want to use the largest value that is possible without the
evolution becoming unstable.
The default value is the maximum value that we have found
empirically that is stable for the spacing \(h\):
\(dt = 0.0426 - 0.207 h + 0.808 h^2\)
(from parabolic fit to Fig. 4 of http://dx.doi.org/10.1021/ct800518j,
probably valid for 3D systems only).
However, you might need to adjust this value.
TemperatureFunction
Section: Time-Dependent::Propagation
Type: integer
Default: "temperature"
If a thermostat is used, this variable indicates the name of the
function in the TDFunctions block that will be used to control the
temperature. The values of the temperature are given in
degrees Kelvin.
Thermostat
Section: Time-Dependent::Propagation
Type: integer
Default: none
This variable selects the type of thermostat applied to
control the ionic temperature.
Options:
ThermostatMass
Section: Time-Dependent::Propagation
Type: float
Default: 1.0
This variable sets the fictitious mass for the Nose-Hoover
thermostat.
TDDeltaKickTime
Section: Time-Dependent::Response
Type: float
Default: 0.0
The delta-perturbation that can be applied by making use of the TDDeltaStrength variable,
can be applied at the time given by this variable. Usually, this time is zero, since one wants
to apply the delta pertubation or "kick" at a system at equilibrium, and no other time-dependent
external potential is used. However, one may want to apply a kick on top of a laser field,
for example.
TDDeltaStrength
Section: Time-Dependent::Response
Type: float
Default: 0
When no laser is applied, a delta (in time) perturbation with
strength TDDeltaStrength can be applied. This is used to
calculate, e.g., the linear optical spectra. If the ions are
allowed to move, the kick will affect them also.
The electric field is \(-(\hbar k / e) \delta(t)\) for a dipole with
zero wavevector, where k = TDDeltaStrength, which causes
the wavefunctions instantaneously to acquire a phase \(e^{ikx}\).
The unit is inverse length.
TDDeltaStrengthMode
Section: Time-Dependent::Response
Type: integer
Default: kick_density
When calculating the density response via real-time propagation,
one needs to perform an initial kick on the KS system, at
time zero. Depending on what kind of response property one wants to obtain,
this kick may be done in several modes. For use to calculate triplet excitations,
see MJT Oliveira, A Castro, MAL Marques, and A Rubio, J. Nanoscience and Nanotechnology 8, 3392 (2008).
Options:
TDDeltaUserDefined
Section: Time-Dependent::Response
Type: string
By default, the kick function will be a dipole. This will change if (1) the variable
TDDeltaUserDefined is present in the inp file, or (2) if the block TDKickFunction
is present in the inp file. If both are present in the inp file, the TDKickFunction
block will be ignored. The value of TDDeltaUserDefined should be a string describing
the function that is going to be used as delta perturbation.
TDKickFunction
Section: Time-Dependent::Response
Type: block
If the block TDKickFunction is present in the input file, and the variable
TDDeltaUserDefined is not present in the input file, the kick function to
be applied at time zero of the time-propagation will not be a "dipole" function
(i.e. \(\phi \rightarrow e^{ikx} \phi\), but a general multipole in the form \(r^l Y_{lm}(r)\).
Each line has three columns: integers l and m that defines the
multipole, and a weight. Any number of lines may be given, and the kick will be the sum of those
multipoles with the given weights.
This feature allows calculation of quadrupole, octupole, etc., response functions.
TDMomentumTransfer
Section: Time-Dependent::Response
Type: block
Momentum-transfer vector for the calculation of the dynamic structure factor.
When this variable is set, a non-dipole field is applied, and an output file
ftchd is created (it contains the Fourier transform of the charge density
at each time). The type of the applied external field can be set by
an optional last number. Possible options are qexp (default), qcos,
qsin, or qcos+qsin. In the formulae below,
\(\vec{q}\) is the momentum-transfer vector.
Options:
TDMultipleMomentumTransfer
Section: Time-Dependent::Response
Type: block
For magnon kicks only.
A simple way to specify momentum-transfer vectors for the calculation of
the magnetization dynamics. This variable should be used for a supercell.
For each reciprocal lattice vectors, the code will kick the original magnetization
using all the multiples of it.
The syntax reads:
%TDMultipleMomentumTransfer
N_x | N_y | N_z
%
and will include the (2N_x+1)*(2N_y+1)*(2N_z+1) multiples vectors of the reciprocal
lattice vectors of the current cell.
TDEasyAxis
Section: Time-Dependent::Response::Dipole
Type: block
For magnon kicks only.
This variable defines the direction of the easy axis of the crystal.
The magnetization is kicked in the plane transverse to this vector
TDPolarization
Section: Time-Dependent::Response::Dipole
Type: block
The (real) polarization of the delta electric field. Normally
one needs three perpendicular polarization directions to calculate a
spectrum (unless symmetry is used).
The format of the block is:
%TDPolarization
pol1x | pol1y | pol1z
pol2x | pol2y | pol2z
pol3x | pol3y | pol3z
%
Octopus uses both this block and the variable
TDPolarizationDirection to determine the polarization
vector for the run. For example, if
TDPolarizationDirection=2 the polarization (pol2x,
pol2y, pol2z) would be used.
These directions may not be in periodic directions.
The default value for TDPolarization is the three
Cartesian unit vectors (1,0,0), (0,1,0), and (0,0,1).
Note that the directions do not necessarily need to be perpendicular
when symmetries are used.
WARNING: If you want to obtain the cross-section tensor, the
TDPolarization block must be exactly the same for the run in
each direction. The direction must be selected by the
TDPolarizationDirection variable.
TDPolarizationDirection
Section: Time-Dependent::Response::Dipole
Type: integer
When a delta potential is included in a time-dependent run, this
variable defines in which direction the field will be applied
by selecting one of the lines of TDPolarization. In a
typical run (without using symmetry), the TDPolarization block
would contain the three Cartesian unit vectors (the default
value), and one would make 3 runs varying
TDPolarization from 1 to 3.
If one is using symmetry, TDPolarization should run only from 1
to TDPolarizationEquivAxes.
TDPolarizationEquivAxes
Section: Time-Dependent::Response::Dipole
Type: integer
Default: 0
Defines how many of the TDPolarization axes are equivalent. This information is stored in a file and then
used by oct-propagation_spectrum to rebuild the full polarizability tensor from just the
first TDPolarizationEquivAxes directions. This variable is also used by CalculationMode = vdw.
TDPolarizationWprime
Section: Time-Dependent::Response::Dipole
Type: block
This block is needed only when
TDPolarizationEquivAxes is set to 3. In such a case,
the three directions (pol1, pol2, and pol3) defined in
the TDPolarization block should be related by symmetry
operations. If A is the symmetry operation that takes you
from pol1 to pol2, then TDPolarizationWprime
should be set to the direction defined by A\(^{-1}\)pol3.
For more information see MJT Oliveira
et al., J. Nanoscience and Nanotechnology 8,
3392 (2008).
MaxwellTDOutput
Section: Time-Dependent::TD Output
Type: flag
Default: maxwell_energy
Defines what should be output during the time-dependent
Maxwell simulation. Many of the options can increase the computational
cost of the simulation, so only use the ones that you need. In
most cases the default value is enough, as it is adapted to the
details of the TD run.
Options:
TDExcitedStatesToProject
Section: Time-Dependent::TD Output
Type: block
[WARNING: This is a *very* experimental feature]
To be used with TDOutput = populations.
The population of the excited states
(as defined by
This file structure is the one written by the casida run mode, in the files in the directory *_excitations.
The file describes the "promotions" from occupied
to unoccupied levels that change the initial Slater determinant
structure specified in ground_state. These promotions are a set
of electron-hole pairs. Each line in the file, after an optional header, has four
columns:
i a \(\sigma\) weight
where i should be an occupied state, a an unoccupied one, and \(\sigma\)
the spin of the corresponding orbital. This pair is then associated with a
creation-annihilation pair \(a^{\dagger}_{a,\sigma} a_{i,\sigma}\), so that the
excited state will be a linear combination in the form:
\(\left|{\rm ExcitedState}\right> =
\sum weight(i,a,\sigma) a^{\dagger}_{a,\sigma} a_{i,\sigma} \left|{\rm GroundState}\right>\)
where weight is the number in the fourth column.
These weights should be normalized to one; otherwise the routine
will normalize them, and write a warning.
TDFloquetDimension
Section: Time-Dependent::TD Output
Type: integer
Default: -1
Order of Floquet Hamiltonian. If negative number is given, downfolding is performed.
TDFloquetFrequency
Section: Time-Dependent::TD Output
Type: float
Default: 0
Frequency for the Floquet analysis, this should be the carrier frequency or integer multiples of it.
Other options will work, but likely be nonsense.
TDFloquetSample
Section: Time-Dependent::TD Output
Type: integer
Default: 20
Number of points on which one Floquet cycle is sampled in the time-integral of the Floquet analysis.
TDMultipoleLmax
Section: Time-Dependent::TD Output
Type: integer
Default: 1
Maximum electric multipole of the density output to the file td.general/multipoles
during a time-dependent simulation. Must be non-negative.
TDOutput
Section: Time-Dependent::TD Output
Type: block
Default: multipoles + energy (+ others depending on other options)
Defines what should be output during the time-dependent
simulation. Many of the options can increase the computational
cost of the simulation, so only use the ones that you need. In
most cases the default value is enough, as it is adapted to the
details of the TD run. If the ions are allowed to be moved, additionally
the geometry and the temperature are output. If a laser is
included it will output by default.
Note: the output files generated by this option are updated
every RestartWriteInterval steps.
Example:
%TDOutput
multipoles
energy
%
Options:
TDOutputComputeInterval
Section: Time-Dependent::TD Output
Type: integer
Default: 50
The TD output requested are computed
when the iteration number is a multiple of the TDOutputComputeInterval variable.
Must be >= 0. If it is 0, then no output is written.
Implemented only for projections and number of excited electrons for the moment.
TDOutputDFTU
Section: Time-Dependent::TD Output
Type: flag
Default: none
Defines what should be output during the time-dependent
simulation, related to LDA+U.
Note: the output files generated by this option are updated
every RestartWriteInterval steps.
Options:
TDOutputResolveStates
Section: Time-Dependent::TD Output
Type: logical
Default: No
Defines whether the output should be resolved by states.
So far only TDOutput = multipoles is supported.
TDProjStateStart
Section: Time-Dependent::TD Output
Type: integer
Default: 1
To be used with TDOutput = td_occup. Not available if TDOutput = populations.
Only output projections to states above TDProjStateStart. Usually one is only interested
in particle-hole projections around the HOMO, so there is no need to calculate (and store)
the projections of all TD states onto all static states. This sets a lower limit. The upper limit
is set by the number of states in the propagation and the number of unoccupied states
available.