S
Name ScaLAPACKCompatible
Section Execution::Parallelization
Type logical
Whether to use a layout for states parallelization which is compatible with ScaLAPACK.
The default is yes for CalculationMode = gs, unocc, go without k-point parallelization,
and no otherwise. (Setting to other than default is experimental.)
The value must be yes if any ScaLAPACK routines are called in the course of the run;
it must be set by hand for td with TDDynamics = bo.
This variable has no effect unless you are using states parallelization and have linked ScaLAPACK.
Note: currently, use of ScaLAPACK is not compatible with task parallelization (i.e. slaves).
Name SccTolerance
Section DFTBPlusInterface
Type float
Self-consistent-charges convergence tolerance. Once this
tolerance has been achieved the SCC cycle will stop.
Name SCDMmu
Section Utilities::oct-wannier90
Type float
Energy range up to which states are considered for SCDM.
Name SCDMsigma
Section Utilities::oct-wannier90
Type float
Default 0.2
Broadening of SCDM smearing function.
Name SCFCalculateDipole
Section SCF
Type logical
This variable controls whether the dipole is calculated at the
end of a self-consistent iteration. For finite systems the
default is yes. For periodic systems the default is no, unless
an electric field is being applied in a periodic direction.
The single-point Berry`s phase approximation is used for
periodic directions. Ref:
E Yaschenko, L Fu, L Resca, and R Resta, Phys. Rev. B 58, 1222-1229 (1998).
Name SCFCalculateForces
Section SCF
Type logical
This variable controls whether the forces on the ions are
calculated at the end of a self-consistent iteration. The
default is yes, unless the system only has user-defined
species.
Name SCFCalculatePartialCharges
Section SCF
Type logical
Default no
(Experimental) This variable controls whether partial charges
are calculated at the end of a self-consistent iteration.
Name SCFCalculateStress
Section SCF
Type logical
This variable controls whether the stress on the lattice is
calculated at the end of a self-consistent iteration. The
default is no.
Name SICCorrection
Section Hamiltonian::XC
Type integer
Default sic_none
This variable controls which form of self-interaction correction to use. Note that
this correction will be applied to the functional chosen by XCFunctional.
Options:
- sic_none:
No self-interaction correction.
- sic_pz:
Perdew-Zunger SIC, handled by the OEP technique.
- sic_amaldi:
Amaldi correction term.
- sic_adsic:
Average-density SIC.
C. Legrand et al., J. Phys. B 35, 1115 (2002).
Name SkipSOrbitals
Section Hamiltonian::DFT+U
Type logical
Default no
If set to yes, Octopus will determine the effective U for all atomic orbitals
from the peusopotential but s orbitals. Only available with ACBN0 functional.
Name SlakoDir
Section Execution::IO
Type string
Default “./"
Folder containing the Slako files
Name SmearingFunction
Section States
Type integer
Default semiconducting
This is the function used to smear the electronic occupations.
It is ignored if the Occupations block is set.
Options:
- semiconducting:
Semiconducting occupations, i.e. the lowest lying states are occupied
until no more electrons are left.
- fermi_dirac:
Simple Fermi-Dirac distribution. In this case, Smearing has
the meaning of an electronic temperature. DN Mermin, Phys. Rev. 137, A1441 (1965).
- cold_smearing:
N Marzari, D Vanderbilt, A De Vita, and MC Payne, Phys. Rev. Lett. 82, 3296 (1999).
- methfessel_paxton:
M Methfessel and AT Paxton, Phys. Rev. B 40, 3616 (1989).
In this case, the variable SmearingMPOrder sets the order of the smearing.
Occupations may be negative.
- spline_smearing:
Nearly identical to Gaussian smearing.
JM Holender, MJ Gillan, MC Payne, and AD Simpson, Phys. Rev. B 52, 967 (1995).
Name SmearingMPOrder
Section States
Type integer
Default 1
Sets the order of the Methfessel-Paxton smearing function.
Name SOStrength
Section Hamiltonian
Type float
Default 1.0
Tuning of the spin-orbit coupling strength: setting this value to zero turns off spin-orbit terms in
the Hamiltonian, and setting it to one corresponds to full spin-orbit.
Name Spacing
Section Mesh
Type float
The spacing between the points in the mesh. This controls the
quality of the discretization: smaller spacing gives more
precise results but increased computational cost.
When using curvilinear coordinates, this is a canonical spacing that will be changed locally by the transformation. In periodic directions, your spacing may be slightly different than what you request here, since the box size must be an integer multiple of the spacing.
The default value is defined by the species if only default pseudopotentials are used or by the image resolution if BoxShape = box_image. Otherwise, there is no default.
It is possible to have a different spacing in each one of the Cartesian directions if we define Spacing as block of the form
%Spacing
spacing_x | spacing_y | spacing_z
%
Name SPARSKITAbsTolerance
Section Math::SPARSKIT
Type float
Default 1e-10
Some SPARSKIT solvers use an absolute tolerance as a stopping criterion
for the iterative solution process. This variable can be used to
specify the tolerance.
Name SPARSKITIterOut
Section Math::SPARSKIT
Type integer
Default -1
Determines how often status info of the solver is printed.
If <= 0, will never be printed.
Name SPARSKITKrylovSubspaceSize
Section Math::SPARSKIT
Type integer
Default 15
Some of the SPARSKIT solvers are Krylov subspace methods.
This variable determines what size the solver will use
for the subspace.
Name SPARSKITMaxIter
Section Math::SPARSKIT
Type integer
Default 50000
This variable controls the maximum number of iteration steps that
will be performed by the (iterative) linear solver.
Name SPARSKITRelTolerance
Section Math::SPARSKIT
Type float
Default 1e-8
Some SPARSKIT solvers use a relative tolerance as a stopping criterion
for the iterative solution process. This variable can be used to
specify the tolerance.
Name SPARSKITSolver
Section Math::SPARSKIT
Type integer
Default sk_bcg
Specifies what kind of linear solver will be used.
Options:
- sk_cg:
Conjugate Gradient Method
- sk_cgnr:
Conjugate Gradient Method (Normal Residual equation)
- sk_bcg:
Bi-Conjugate Gradient Method
- sk_dbcg:
BCG with partial pivoting
- sk_bcgstab:
BCG stabilized
- sk_tfqmr:
Transpose-Free Quasi-Minimum Residual method
- sk_fom:
Full Orthogonalization Method
- sk_gmres:
Generalized Minimum Residual method
- sk_fgmres:
Flexible version of Generalized Minimum Residual method
- sk_dqgmres:
Direct versions of the Quasi-Generalized Minimum Residual method
Name SPARSKITVerboseSolver
Section Math::SPARSKIT
Type logical
Default no
When set to yes, the SPARSKIT solver will write more detailed output.
Name Species
Section System::Species
Type block
A species is by definition either an "ion" (nucleus + core electrons) described
through a pseudopotential, or a model potential.
Note that some sets of pseudopotentials are distributed with the code. To use these pseudopotentials, you do not need to define them explicitly in the Species block, as default parameters are provided. You can select the set for default pseudopotentials using the PseudopotentialSet variable.
Additional pseudopotentials can be downloaded from the octopus homepage or from other sources. Supported norm-conserving pseudopotential formats are detected by the file extension: UPF (.upf), PSF (SIESTA, .psf), FHI (ABINIT 6, .fhi), CPI (Fritz-Haber, .cpi), QSO (quantum-simulation.org, for Qbox, .xml), HGH (Hartwigsen-Goedecker-Hutter, .hgh). PSPIO format can also be used via species_pspio if that library is linked. Note: pseudopotentials may only be used in 3D.
The format of this block is the following: The first field is a string that defines the name of the species. The second field defines the type of species (the valid options are detailed below).
Then a list of parameters follows. The parameters are specified by a first field with the parameter name and the field that follows with the value of the parameter. Some parameters are specific to a certain species while others are accepted by all species. These are mass, max_spacing, and min_radius.
These are examples of possible species:
%Species
‘O’ | species_pseudo | file | ‘O.psf’ | lmax | 1 | lloc | 1
‘H’ | species_pseudo | file | ‘../H.hgh’
‘Xe’ | species_pseudo | set | pseudojo_pbe_stringent
‘C’ | species_pseudo | file | "carbon.xml"
‘jlm’ | species_jellium | jellium_radius | 5.0
‘rho’ | species_charge_density | density_formula | "exp(-r/a)" | mass | 17.0 | valence | 6
‘udf’ | species_user_defined | potential_formula | "1/2*r^2" | valence | 8
‘He_all’ | species_full_delta
‘H_all’ | species_full_gaussian | gaussian_width | 0.2
‘Li1D’ | species_soft_coulomb | softening | 1.5 | valence | 3
%
Options:
- species_pseudo:
The species is a pseudopotential. How to get the
pseudopotential can be specified by the file or
the set parameters. If both are missing, the
pseudopotential will be taken from the PseudopotentialSet
specified for the run, this is useful if you want to change
some parameters of the pseudo, like the mass.
The optional parameters for this type of species are lmax, that defines the maximum angular momentum component to be used, and lloc, that defines the angular momentum to be considered as local. When these parameters are not set, the value for lmax is the maximum angular component from the pseudopotential file. The default value for lloc is taken from the pseudopotential if available, if not, it is set to 0. Note that, depending on the type of pseudopotential, it might not be possible to select lmax and lloc, if that is the case the parameters will be ignored.
- species_pspio:
(experimental) Alternative method to read pseudopotentials
using the PSPIO library. This species uses the same parameters
as species_pseudo.
- species_user_defined:
Species with user-defined potential. The potential for the
species is defined by the formula given by the potential_formula
parameter.
The
valence parameter determines the number of electrons
associated with the species. By default, a valence of 0 is assumed.
- species_charge_density:
The potential for this species is created from the distribution
of charge given by the density_formula parameter.
The
valence parameter determines the number of electrons
associated with the species. By default, a valence of 0 is assumed.
- species_point:
- species_jellium:
Jellium sphere.
The charge associated with this species must be given by the valence parameter.
- species_jellium_slab:
A slab of jellium that extends across the simulation box in the
xy-plane. The dimension along the z direction is
determined by the required parameter thickness.
The charge associated with this species must be given by the valence parameter.
- species_full_delta:
Full atomic potential represented by a delta charge
distribution. The atom will be displaced to the nearest grid
point. The atomic number is determined from the name of the species.
- species_full_gaussian:
A full-potential atom is defined by a Gaussian accumulation of
positive charge (distorted if curvilinear coordinates are
used), in the form:
$q(r) = z \beta \exp[ - (\vec{r}-\vec{r_0})^2 / (\sqrt{2} \delta \sigma) ] $
$\beta$ is chosen in order to maintain proper normalization (the integral of $q$ should sum up to $z$). $\delta$ is the grid spacing (the grid spacing in the first dimension, to be precise). $\vec{r_0}$ is calculated in such a way that the the first moment of $q(r)/z$ is equal to the atomic position. For a precise description, see N. A. Modine, Phys. Rev. B 55, 10289 (1997). The width of the Gaussian is set by parameter gaussian_width. The atomic number is determined from the name of the species.
- species_from_file:
The potential is read from a file. Accepted file formats, detected by extension: obf, ncdf and csv.
The
valence parameter determines the number of electrons
associated with the species. By default, a valence of 0 is assumed.
- species_soft_coulomb:
The potential is a soft-Coulomb function, i.e. a function in the form:
$v(r) = - z_{val} / \sqrt{a^2 + r^2}$
The value of a should be given by the mandatory softening parameter. The charge associated with this species must be given by the valence parameter.
- species_jellium_charge_density:
The parameter is the name of a volume block specifying the shape of the jellium.
- lmax:
The maximum angular-momentum channel that will be used for the pseudopotential.
- lloc:
The angular-momentum channel of the pseudopotential to be considered local.
- mass:
The mass of the species in atomic mass units, i.e. the mass of a proton is
roughly one. It is set automatically for pseudopotentials from the
NIST values.
For other species, the default is 1.0.
- valence:
The number of electrons of the species. It is set automatically for pseudopotentials,
but is mandatory for other species.
- jellium_radius:
The radius of the sphere for species_jellium. If this value is not specified,
the default of 0.5 bohr is used.
- set:
For a species_pseudo, get the pseudopotential from a
particular set. This flag must be followed with one of the
valid values for the variable PseudopotentialSet.
- gaussian_width:
The width of the Gaussian (in units of spacing) used to represent
the nuclear charge for species_full_gaussian. If not present,
the default is 0.25.
- softening:
The softening parameter a for species_soft_coulomb in units of length.
- file:
The path for the file that describes the species.
- db_file:
Obsolete. Use the set option of the PseudopotentialSet variable instead.
- potential_formula:
Mathematical expression that defines the potential for species_user_defined. You can use
any of the x, y, z or r variables.
- density_formula:
Mathematical expression that defines the charge density for species_charge_density. You can use
any of the x, y, z or r variables.
- thickness:
The thickness of the slab for species_jellium_slab. Must be positive.
- vdw_radius:
The van der Waals radius that will be used for this species.
- volume:
Name of a volume block
- hubbard_l:
The angular-momentum for which the effective U will be applied.
- hubbard_u:
The effective U that will be used for the LDA+U calculations.
- hubbard_j:
The value of j (hubbard_l-1/2 or hubbard_l+1/2) on which the effective U is applied.
- hubbard_alpha:
The strength of the potential constraining the occupations of the localized subspace
as defined in PRB 71, 035105 (2005)
Name SpeciesProjectorSphereThreshold
Section System::Species
Type float
Default 0.001
The pseudopotentials may be composed of a local part, and a linear combination of nonlocal
operators. These nonlocal projectors have "projector" form, $ \left| v \right> \left< v \right| $
(or, more generally speaking, $ \left| u \right> \left< v \right| $).
These projectors are localized in real space – that is, the function $v$
has a finite support around the nucleus. This region where the projectors are localized should
be small or else the computation time required to operate with them will be very large.
In practice, this localization is fixed by requiring the definition of the projectors to be
contained in a sphere of a certain radius. This radius is computed by making sure that the
absolute value of the projector functions, at points outside the localization sphere, is
below a certain threshold. This threshold is set by SpeciesProjectorSphereThreshold.
Name SpeciesTimeDependent
Section System::Species
Type logical
Default no
When this variable is set, the potential defined in the block Species is calculated
and applied to the Hamiltonian at each time step. You must have at least one species_user_defined
type of species to use this.
Name SpectrumMethod
Section Utilities::oct-propagation_spectrum
Type integer
Default fourier
Decides which method is used to obtain the spectrum.
Options:
- fourier:
The standard Fourier transform. Further specified by PropagationSpectrumTransform.
- compressed_sensing:
(Experimental) Uses the compressed sensing technique.
Name SpectrumSignalNoise
Section Utilities::oct-propagation_spectrum
Type float
Default 0.0
For compressed sensing, the signal to process, the
time-dependent dipole in this case, is assumed to have some
noise that is given by this dimensionless quantity.
Name SpinComponents
Section States
Type integer
Default unpolarized
The calculations may be done in three different ways: spin-restricted (TD)DFT (i.e., doubly
occupied "closed shells"), spin-unrestricted or "spin-polarized" (TD)DFT (i.e. we have two
electronic systems, one with spin up and one with spin down), or making use of two-component
spinors.
Options:
- unpolarized:
Spin-restricted calculations.
- polarized:
- spin_polarized:
(Synonym polarized.) Spin-unrestricted, also known as spin-DFT, SDFT. This mode will double the number of
wavefunctions necessary for a spin-unpolarized calculation.
- non_collinear:
- spinors:
(Synonym: non_collinear.) The spin-orbitals are two-component spinors. This effectively allows the spin-density to
be oriented non-collinearly: i.e. the magnetization vector is allowed to take different
directions at different points. This vector is always in 3D regardless of Dimensions.
Name SpiralBoundaryCondition
Section Mesh
Type logical
Default no
(Experimental) If set to yes, Octopus will apply spin-spiral boundary conditions.
The momentum of the spin spiral is defined by the variable
TDMomentumTransfer
Name StatesBlockSize
Section Execution::Optimization
Type integer
Some routines work over blocks of eigenfunctions, which
generally improves performance at the expense of increased
memory consumption. This variable selects the size of the
blocks to be used. If GPUs are used, the default is 32;
otherwise it is 4.
Name StatesCLDeviceMemory
Section Execution::Optimization
Type float
Default -512
This variable selects the amount of OpenCL device memory that
will be used by Octopus to store the states.
A positive number smaller than 1 indicates a fraction of the total
device memory. A number larger than one indicates an absolute
amount of memory in megabytes. A negative number indicates an
amount of memory in megabytes that would be subtracted from
the total device memory.
Name StatesOrthogonalization
Section SCF::Eigensolver
Type integer
The full orthogonalization method used by some
eigensolvers. The default is cholesky_serial, except with state
parallelization, the default is cholesky_parallel.
Options:
- cholesky_serial:
Cholesky decomposition implemented using
BLAS/LAPACK. Can be used with domain parallelization but not
state parallelization.
- cholesky_parallel:
Cholesky decomposition implemented using
ScaLAPACK. Compatible with states parallelization.
- cgs:
Classical Gram-Schmidt (CGS) orthogonalization.
Can be used with domain parallelization but not state parallelization.
The algorithm is defined in Giraud et al., Computers and Mathematics with Applications 50, 1069 (2005).
- mgs:
Modified Gram-Schmidt (MGS) orthogonalization.
Can be used with domain parallelization but not state parallelization.
The algorithm is defined in Giraud et al., Computers and Mathematics with Applications 50, 1069 (2005).
- drcgs:
Classical Gram-Schmidt orthogonalization with double-step reorthogonalization.
Can be used with domain parallelization but not state parallelization.
The algorithm is taken from Giraud et al., Computers and Mathematics with Applications 50, 1069 (2005).
According to this reference, this is much more precise than CGS or MGS algorithms. The MGS version seems not to improve much the stability and would require more communications over the domains.
Name StatesPack
Section Execution::Optimization
Type logical
When set to yes, states are stored in packed mode, which improves
performance considerably. Not all parts of the code will profit from
this, but should nevertheless work regardless of how the states are
stored.
If GPUs are used and this variable is set to yes, Octopus will store the wave-functions in device (GPU) memory. If there is not enough memory to store all the wave-functions, execution will stop with an error.
See also the related HamiltonianApplyPacked variable.
The default is yes.
Name StatesRandomization
Section States
Type integer
Default par_independent
The randomization of states can be done in two ways:
i) a parallelisation independent way (default), where the random states are identical,
irrespectively of the number of tasks and
ii) a parallelisation dependent way, which can prevent linear dependency
to occur for large systems.
Options:
- par_independent:
Parallelisation-independent randomization of states.
- par_dependent:
The randomization depends on the number of taks used in the calculation.
Name StaticElectricField
Section Hamiltonian
Type block
Default 0
A static constant electric field may be added to the usual Hamiltonian,
by setting the block StaticElectricField.
The three possible components of the block (which should only have one
line) are the three components of the electric field vector.
It can be applied in a periodic direction of a large supercell via
the single-point Berry phase.
Name StaticExternalPotentials
Section System
Type block
An static external potential is a model potential added to the local potential of the Hamiltonian
The format of this block is the following: The first field defines the type of species (the valid options are detailed below).
Then a list of parameters follows. The parameters are specified by a first field with the parameter name and the field that follows with the value of the parameter. Some parameters are specific to a certain species while others are accepted by all species. These are mass, max_spacing, and min_radius.
These are examples of possible species:
%ExternalPotential
potential_user_defined | potential_formula | "1/2*r^2"
%
Options:
- potential_from_file:
The potential is read from a file. Accepted file formats, detected by extension: obf, ncdf and csv.
- potential_user_defined:
Species with user-defined potential. The potential for the
species is defined by the formula given by the potential_formula
parameter.
- potential_charge_density:
The potential for this species is created from the distribution
of charge given by the density_formula parameter.
- file:
The path for the file that describes the species.
- potential_formula:
Mathematical expression that defines the potential for species_user_defined. You can use
any of the x, y, z or r variables.
- density_formula:
Mathematical expression that defines the charge density for species_charge_density. You can use
any of the x, y, z or r variables.
Name StaticMagneticField
Section Hamiltonian
Type block
A static constant magnetic field may be added to the usual Hamiltonian,
by setting the block StaticMagneticField.
The three possible components of the block (which should only have one
line) are the three components of the magnetic field vector. Note that
if you are running the code in 1D mode, this will not work, and if you
are running the code in 2D mode the magnetic field will have to be in
the z-direction, so that the first two columns should be zero.
Possible in periodic system only in these cases: 2D system, 1D periodic,
with StaticMagneticField2DGauge = linear_y;
3D system, 1D periodic, field is zero in y- and z-directions (given
currently implemented gauges).
The magnetic field should always be entered in atomic units, regardless
of the Units variable. Note that we use the "Gaussian" system
meaning 1 au[B] = $ 2.350517568\times 10^9$ Gauss, which corresponds to
$2.3505175678\times 10^5$ Tesla.
Name StaticMagneticField2DGauge
Section Hamiltonian
Type integer
Default linear_xy
The gauge of the static vector potential $A$ when a magnetic field
$B = \left( 0, 0, B_z \right)$ is applied to a 2D-system.
Options:
- linear_xy:
Linear gauge with $A = \frac{1}{2c} \left( -y, x \right) B_z$. (Cannot be used for periodic systems.)
- linear_y:
Linear gauge with $A = \frac{1}{c} \left( -y, 0 \right) B_z$. Can be used for PeriodicDimensions = 1
but not PeriodicDimensions = 2.
Name stderr
Section Execution::IO
Type string
Default “-"
The standard error by default goes to, well, to standard error. This can
be changed by setting this variable: if you give it a name (other than "-")
the output stream is printed in that file instead.
Name stdout
Section Execution::IO
Type string
Default “-"
The standard output by default goes to, well, to standard output. This can
be changed by setting this variable: if you give it a name (other than "-")
the output stream is printed in that file instead.
Name SubspaceDiagonalization
Section SCF::Eigensolver
Type integer
Default standard
Selects the method to perform subspace diagonalization. The
default is standard, unless states parallelization is used,
when the default is scalapack.
Note that this variable is not parsed in the case of the evolution eigensolver.
Options:
- none:
No subspace diagonalization. WARNING: this will generally give incorrect results.
- standard:
The standard routine. Can be used with domain parallelization but not
state parallelization.
- scalapack:
State-parallelized version using ScaLAPACK. (Requires that
Octopus was compiled with ScaLAPACK support.)
Name SupercellDimensions
Section Utilities::oct-tdtdm
Type block
Default KPointsGrid
This block allows to specify the size of the supercell used to plot excitonic wavefunctions.
If not specified, the code uses the number of k-points for defining the size of the supercell.
Name SymmetriesCompute
Section Execution::Symmetries
Type logical
If disabled, Octopus will not compute
nor print the symmetries.
By default, symmetries are computed when running in 3
dimensions for systems with less than 100 atoms.
For periodic systems, the default is always true, irrespective of the number of atoms.
Name SymmetriesTolerance
Section Execution::Symmetries
Type float
For periodic systems, this variable controls the tolerance used by the symmetry finder
(spglib) to find the spacegroup and symmetries of the crystal.
Name SymmetrizeDensity
Section States
Type logical
Default no
When enabled the density is symmetrized. Currently, this can
only be done for periodic systems. (Experimental.)
Name SymmetrizeDynamicalMatrix
Section Linear Response::Vibrational Modes
Type logical
Default true
If set to true, all entries of the dynamical matrix will be calculated and then
the matrix will be symmetrized to enforce $D_{ij} = D_{ji}$. If set to false,
only the upper half of the matrix will be calculated.
Name SymmetryBreakDir
Section Mesh::Simulation Box
Type block
This variable specifies a direction in which the symmetry of
the system will be broken. This is useful for generating k-point
grids when an external perturbation is applied.
Name Systems
Section System
Type block
List of systems that will be treated in the calculation.
The first column should be a string containing the system name.
The second column should be the system type. See below for a list of
available system types.
Options:
- electronic:
An electronic system. (not fully implemented yet)
- maxwell:
A maxwell system.
- classical_particle:
A classical particle. Used for testing purposes only.
- charged_particle:
A charged classical particle.
- dftbplus:
A DFTB+ system
- linear_medium:
A linear medium for classical electrodynamics.
- matter:
A matter system containing electrons and classical ions.
- dispersive_medium:
(Experimental) A dispersive medium for classical electrodynamics.
- multisystem:
A system containing other systems.