DoubleGrid
Section: Mesh
Type: logical
Default: no
Enables or disables the use of a double-grid technique to
increase the precision of the application of the
pseudopotentials. This is experimental, especially in parallel.
DoubleGridOrder
Section: Mesh
Type: integer
Default: 9
Order of the interpolation used for the double grid. Must be
an odd number. Low-order interpolation schemes are not
recommended. The default is to use 9th-order interpolation.
MultiResolutionArea
Section: Mesh
Type: block
(Experimental) Multiresolution regions are set with this
parameter. The first three numbers define the central
point of the region, and the following ones set
the radii where resolution changes (measured from the
central point).
NOTE: currently, only one area can be set up, and only works in 3D, and in serial.
MultiResolutionInterpolationOrder
Section: Mesh
Type: integer
Default: 5
The interpolation order in multiresolution approach. The default is 5.
MultigridLevels
Section: Mesh
Type: integer
Default: max_levels
Number of levels in the grid hierarchy used for multigrid. Positive
numbers indicate an absolute number of levels, negative
numbers are subtracted from the maximum number of levels possible.
Options:
OpenBoundaries
Section: Mesh
Type: block
This feature is experimental.
In transport mode it enables open boundaries in the x-direction
and defines the character of the leads attached to the left and right
of the finite central system.
The more general situation (non-transport) is that a given number
of leads (number_leads) are attached to the central region.
The format is as follows:
%OpenBoundaries lead_dataset | "dataset" | "dataset" lead_restart_dir | "directory" | "directory" lead_static_dir | "directory" | "directory" add_unit_cells | nl | nr td_pot_formula | "formula" | "formula" transport_mode | transport_on number_leads | 2 %
Spacing
Section: Mesh
Type: float
The spacing between the points in the mesh. If using curvilinear
coordinates, this is a canonical spacing that will be changed locally by the
transformation. In periodic directions, your spacing may be slightly larger than
what you request here, since the box size must be an integer multiple of the spacing.
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
%
UseFineMesh
Section: Mesh
Type: logical
Default: no
If enabled, Octopus will use a finer mesh for the calculation
of the forces or other sensitive quantities. The default is no.
CurvMethod
Section: Mesh::Curvilinear
Type: integer
Default: curv_uniform
The relevant functions in octopus are represented on a mesh in real space.
This mesh may be an evenly spaced regular rectangular grid (standard mode),
or else an *adaptive* or *curvilinear grid*. We have implemented
three kinds of adaptive meshes, although only one is currently working,
the one invented by F. Gygi (curv_gygi). The code will stop if any of
the other two is invoked. All are experimental with domain parallelization.
Options:
CurvGygiA
Section: Mesh::Curvilinear::Gygi
Type: float
Default: 0.5
The grid spacing is reduced locally around each atom, and the reduction is
given by 1/(1+A), where A is specified by this variable. So, if
A=1/2 (the default), the grid spacing is reduced to two thirds = 1/(1+1/2).
[This is the variable in Eq. 2 of F. Gygi and G. Galli, Phys.
Rev. B 52, R2229 (1995)]. It must be larger than zero.
CurvGygiAlpha
Section: Mesh::Curvilinear::Gygi
Type: float
Default: 2.0 a.u.
This number determines the region over which the grid is enhanced (range of
enhancement of the resolution). That is, the grid is enhanced on a sphere
around each atom, whose radius is given by this variable. [This is the
variable in Eq. 2 of F. Gygi and G. Galli, Phys. Rev. B 52, R2229 (1995)].
It must be larger than zero.
CurvGygiBeta
Section: Mesh::Curvilinear::Gygi
Type: float
Default: 4.0 a.u.
This number determines the distance over which Euclidean coordinates are
recovered. [This is the variable in Eq. 2 of F. Gygi and G. Galli,
Phys. Rev. B 52, R2229 (1995)]. It must be larger than zero.
CurvModineJBar
Section: Mesh::Curvilinear::Modine
Type: float
Default: 1/2
Increase in density of points is inverse of this parameter.
See N. A. Modine, G. Zumbach, and E. Kaxiras, Phys. Rev. B 55, 10289-10301 (1997).
CurvModineJlocal
Section: Mesh::Curvilinear::Modine
Type: float
Default: 0.25
Local refinement around the atoms. Must be between 0 and 1.
See N. A. Modine, G. Zumbach, and E. Kaxiras, Phys. Rev. B 55, 10289-10301 (1997).
CurvModineJrange
Section: Mesh::Curvilinear::Modine
Type: float
Default: 2 b
Local refinement range (a length).
See N. A. Modine, G. Zumbach, and E. Kaxiras, Phys. Rev. B 55, 10289-10301 (1997).
CurvModineXBar
Section: Mesh::Curvilinear::Modine
Type: float
Default: 1/3
Size of central flat region (in units of Lsize). Must be between 0 and 1.
See N. A. Modine, G. Zumbach, and E. Kaxiras, Phys. Rev. B 55, 10289-10301 (1997).
DerivativesOrder
Section: Mesh::Derivatives
Type: integer
Default: 4
This variable gives the discretization order for the approximation of
the differential operators. This means, basically, that
DerivativesOrder points are used in each positive/negative
spatial direction, e.g. DerivativesOrder = 1 would give
the well-known three-point formula in 1D.
The number of points actually used for the Laplacian
depends on the stencil used:
stencil_star: 2*DerivativesOrder*dim+1
stencil_cube: (2*DerivativesOrder+1)^dim
stencil_starplus: 2*DerivativesOrder+1+n with n being 12
in 2D and 44 in 3D.
DerivativesStencil
Section: Mesh::Derivatives
Type: integer
Default: stencil_star
Decides what kind of stencil is used, i.e. which points, around
each point in the mesh, are the neighboring points used in the
expression of the differential operator.
If curvilinear coordinates are to be used, then only the stencil_starplus
or the stencil_cube may be used. We only recommend the stencil_starplus,
since the cube typically needs way too much memory resources.
Options:
DoubleFFTParameter
Section: Mesh::FFTs
Type: float
Default: 2.0
For solving the Poisson equation in Fourier space, and for applying the local potential
in Fourier space, an auxiliary cubic mesh is built. This mesh will be larger than
the circumscribed cube of the usual mesh by a factor DoubleFFTParameter. See
the section that refers to Poisson equation, and to the local potential for details
[the default value of two is typically good].
FFTLibrary
Section: Mesh::FFTs
Type: logical
Default: fftw
(experimental) You can select the FFT library to use.
Options:
FFTOptimize
Section: Mesh::FFTs
Type: logical
Default: yes
Should octopus optimize the FFT dimensions?
This means that the mesh to which FFTs are applied is not taken to be as small
as possible: some points may be added to each direction in order to get a "good number"
for the performance of the FFT algorithm.
The best FFT grid dimensions are given by
where are arbitrary and are 0 or 1.
(http://www.fftw.org/doc/Complex-DFTs.html)
In some cases, namely when using
the split-operator, or Suzuki-Trotter propagators, this option should be turned off.
For spatial FFTs in periodic directions, the grid is never optimized, but a warning will
be written if the number is not good, with a suggestion of a better one to use, so you
can try a different spacing if you want to get a good number.
FFTPreparePlan
Section: Mesh::FFTs
Type: integer
Default: fftw_measure
The FFTs are performed in octopus with the help of the FFTW package (http://www.fftw.org).
Before doing the actual computations, this package prepares a "plan", which means that
the precise numerical strategy to be followed to compute the FFT is machine/compiler-dependent,
and therefore the software attempts to figure out which is this precise strategy (see the
FFTW documentation for details). This plan preparation, which has to be done for each particular
FFT shape, can be done exhaustively and carefully (slow), or merely estimated. Since this is
a rather critical numerical step, by default it is done carefully, which implies a longer initial
initialization, but faster subsequent computations. You can change this behaviour by changing
this FFTPreparePlan variable, and in this way you can force FFTW to do a fast guess or
estimation of which is the best way to perform the FFT.
Options:
NFFTCutoff
Section: Mesh::FFTs
Type: integer
Default: 6
Cut-off parameter of the window function.
See NFFT manual for details.
NFFTGuruInterface
Section: Mesh::FFTs
Type: logical
Default: false
Perform NFFT with guru interface. This permits the fine tuning of several critical parameters.
NFFTOversampling
Section: Mesh::FFTs
Type: float
Default: 2
NFFT oversampling factor (sigma). This will rule the size of the FFT under the hood.
NFFTPrecompute
Section: Mesh::FFTs
Type: integer
Default: NFFT_PRE_PSI
NFFT precomputation strategy.
Options:
KPoints
Section: Mesh::KPoints
Type: block
This block defines an explicit set of k-points and their weights for
a periodic-system calculation. The first column is the weight
of each k-point and the following are the components of the k-point
vector. You only need to specify the components for the
periodic directions. Note that the k-points should be given in
Cartesian coordinates (not in reduced coordinates), i.e.
what Octopus writes in a line in the ground-state standard output as
#k = 1, k = ( 0.154000, 0.154000, 0.154000).
The weights will be renormalized so they sum to 1.
For example, if you want to include only the Gamma point, you can
use:
%KPoints
1.0 | 0 | 0 | 0
%
KPointsGrid
Section: Mesh::KPoints
Type: block
Default: Gamma-point only
When this block is given (and the KPoints block is not present),
k-points are distributed in a uniform grid.
The first row of the block is a set of integers defining
the number of k-points to be used along each direction
in reciprocal space. The numbers refer to the whole Brillouin
zone, and the actual number of k-points is usually
reduced exploiting the symmetries of the system. By default
the grid will always include the Gamma point. An optional
second row can specify a shift in the k-points (between 0 and 1).
The number of columns should be equal to Dimensions,
but the grid and shift numbers should be 1 and zero in finite directions.
For example, the following input samples the BZ with 100 points in the
xy-plane of reciprocal space:
%KPointsGrid
10 | 10 | 1
%
KPointsReduced
Section: Mesh::KPoints
Type: block
Same as the block KPoints but this time the input is given in reduced
coordinates.
KPointsUseSymmetries
Section: Mesh::KPoints
Type: logical
Default: no
This variable defines whether symmetries are taken into account
or not for the choice of k-points. If it is set to no, the k-point
sampling will range over the full Brillouin zone.
The default is no.
When a perturbation is applied to the system, the full
symmetries of the system cannot be used. In this case you must
not use symmetries or use the SymmetryBreakDir to tell
Octopus the direction of the perturbation (for the moment this
has to be done by hand by the user, in the future it will be
automatic).
KPointsUseTimeReversal
Section: Mesh::KPoints
Type: logical
Default: yes
If symmetries are used to reduce the number of k-points,
this variable defines whether time-reversal symmetry is taken
into account or not. If it is set to no, the k-point
sampling will not be reduced according to time-reversal
symmetry.
The default is yes, unless symmetries are broken in one
direction by the SymmetryBreakDir block.
Warning: For time propagation runs with an external field,
time-reversal symmetry should not be used.
BoxOffset
Section: Mesh::Simulation Box
Type: float
Default: 0.0
Shifts the zero of the simulation box, relative to the atomic coordinates, by a specified vector.
It can be either a float, interpreted as (x,x,x), or a block containing the (x,y,z) value of the zero.
WARNING: This variable does not seem to work correctly!
BoxShape
Section: Mesh::Simulation Box
Type: integer
Default: minimum
This variable decides the shape of the simulation box.
Note that some incompatibilities apply:
BoxShapeImage
Section: Mesh::Simulation Box
Type: string
Name of the file that contains the image that defines the simulation box.
BoxShapeUsDef
Section: Mesh::Simulation Box
Type: string
Boolean expression that defines the interior of the simulation box. For example,
BoxShapeUsDef = "(sqrt(x^2+y^2) <= 4) && z>-2 && z<2" defines a cylinder
with axis parallel to the z-axis.
LatticeVectors
Section: Mesh::Simulation Box
Type: block
Default: simple cubic
(Experimental) Primitive lattice vectors. Vectors are stored in rows.
Note that these vectors will be normalized.
Default:
%LatticeVectors
1.0 | 0.0 | 0.0
0.0 | 1.0 | 0.0
0.0 | 0.0 | 1.0
%
Note: This version of Octopus does not support non-orthogonal cells.
Lsize
Section: Mesh::Simulation Box
Type: block
If BoxShape is parallelepiped, hypercube,
box_image, or user_defined, this is a
block of the form:
%Lsize
sizex | sizey | sizez | ...
%
where the size* are half the lengths of the box in each direction.
The number of columns must match the dimensionality of the
calculation. If you want a cube you can also set Lsize as a
single variable.
Radius
Section: Mesh::Simulation Box
Type: float
Defines the radius for BoxShape = sphere, cylinder, or minimum.
Must be a positive number. If not specified, the code will look for values in
the Species block, or, if default pseudopotentials are used, the rsize column of
share/PP/defaults. In these cases, for minimum, a different radius is used for each species,
while for other shapes, the maximum radius is used.
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.
Xlength
Section: Mesh::Simulation Box
Type: float
If BoxShape is cylinder, the total length of the cylinder is twice Xlength.
The default is Radius.