Full List of INPUT Keywords

back to top

System variables

These variables are used to control general system parameters.

suffix

  • Type: String

  • Description: In each run, ABACUS will generate a subdirectory in the working directory. This subdirectory contains all the information of the run. The subdirectory name has the format: OUT.suffix, where the suffix is the name you can pick up for your convenience.

  • Default: ABACUS

ntype

  • Type: Integer

  • Description: Number of different atom species in this calculation. If this value is not equal to the atom species in the STRU file, ABACUS will stop and quit. If not set or set to 0, ABACUS will automatically set it to the atom species in the STRU file.

  • Default: 0

calculation

  • Type: String

  • Description: Specify the type of calculation.

    • scf: do self-consistent electronic structure calculation

    • relax: do structure relaxation calculation, one can use relax_nmax to decide how many ionic relaxations you want

    • cell-relax: do variable-cell relaxation calculation

    • nscf: do the non self-consistent electronic structure calculations. For this option, you need a charge density file. For nscf calculations with planewave basis set, pw_diag_thr should be <= 1e-3

    • get_pchg: For LCAO basis. Please see the explanation for variable nbands_istate

    • get_wf: Envelope function for LCAO basis. Please see the explanation for variable nbands_istate

    • md: molecular dynamics

    • test_memory : checks memory required for the calculation. The number is not quite reliable, please use it with care

    • test_neighbour : only performs neighbouring atom search

    • gen_bessel : generates projectors (a series of Bessel functions) for DeePKS; see also keywords bessel_descriptor_lmax, bessel_descriptor_rcut and bessel_descriptor_tolerence. A file named jle.orb will be generated which contains the projectors. An example is provided in examples/H2O-deepks-pw

    • get_S : only works for multi-k calculation with LCAO basis. Generates and writes the overlap matrix to a file named SR.csr in the working directory. The format of the file will be the same as that generated by out_mat_hs2

  • Default: scf

esolver_type

  • Type: String

  • Description: choose the energy solver.

    • ksdft: Kohn-Sham density functional theory

    • ofdft: orbital-free density functional theory

    • sdft: stochastic density functional theory

    • tddft: real-time time-dependent density functional theory (TDDFT)

    • lj: Leonard Jones potential

    • dp: DeeP potential, see details in md.md

  • Default: ksdft

symmetry

  • Type: Integer

  • Description: takes value 1, 0 or -1.

    • -1: No symmetry will be considered.

    • 0: Only time reversal symmetry would be considered in symmetry operations, which implied k point and -k point would be treated as a single k point with twice the weight.

    • 1: Symmetry analysis will be performed to determine the type of Bravais lattice and associated symmetry operations. (point groups, space groups, primitive cells, and irreducible k-points)

  • Default:

    • -1: if (dft_fuctional==hse/hf/pbe0/scan0/opt_orb or rpa==True) and calculation!=nscf. Currently symmetry is not supported in EXX (exact exchange) calculation.

    • 0: if calculation==md/nscf/get_pchg/get_wf/get_S or [gamma_only]==True

    • 1: else

symmetry_prec

  • Type: Real

  • Description: The accuracy for symmetry judgment. Usually the default value is good enough, but if the lattice parameters or atom positions in STRU file is not accurate enough, this value should be enlarged.

    Note: if calculation=cell_relax, this value can be dynamically enlarged corresponding to the accuracy loss of the lattice parameters and atom positions during the relaxation. There will be a warning message in that case.

  • Default: 1.0e-5

  • Unit: Bohr

kpar

  • Type: Integer

  • Description: divide all processors into kpar groups, and k points will be distributed among each group. The value taken should be less than or equal to the number of k points as well as the number of MPI threads.

  • Default: 1

bndpar

  • Type: Integer

  • Description: divide all processors into bndpar groups, and bands (only stochastic orbitals now) will be distributed among each group. It should be larger than 0.

  • Default: 1

latname

  • Type: String

  • Description: Specifies the type of Bravias lattice. When set to none, the three lattice vectors are supplied explicitly in STRU file. When set to a certain Bravais lattice type, there is no need to provide lattice vector, but a few lattice parameters might be required. For more information regarding this parameter, consult the page on STRU file.

    Available options are (correspondence with ibrav in QE(Quantum Espresso) is given in parenthesis):

    • none: free structure

    • sc: simple cubic (1)

    • fcc: face-centered cubic (2)

    • bcc: body-centered cubic (3)

    • hexagonal: hexagonal (4)

    • trigonal: trigonal (5)

    • st: simple tetragonal (6)

    • bct: body-centered tetragonal (7)

    • so: orthorhombic (8)

    • baco: base-centered orthorhombic (9)

    • fco: face-centered orthorhombic (10)

    • bco: body-centered orthorhombic (11)

    • sm: simple monoclinic (12)

    • bacm: base-centered monoclinic (13)

    • triclinic: triclinic (14)

  • Default: none

init_wfc

  • Type: String

  • Description: Only useful for plane wave basis only now. It is the name of the starting wave functions. In the future. we should also make this variable available for localized orbitals set.

    Available options are:

    • atomic: from atomic pseudo wave functions. If they are not enough, other wave functions are initialized with random numbers.

    • atomic+random: add small random numbers on atomic pseudo-wavefunctions

    • file: from file

    • random: random numbers

  • Default: atomic

init_chg

  • Type: String

  • Description: This variable is used for both plane wave set and localized orbitals set. It indicates the type of starting density.

    • atomic: the density is starting from the summation of the atomic density of single atoms.

    • file: the density will be read in from a file. Besides, when you do nspin=1 calculation, you only need the density file SPIN1_CHG.cube. However, if you do nspin=2 calculation, you also need the density file SPIN2_CHG.cube. The density file should be output with these names if you set out_chg = 1 in INPUT file.

  • Default: atomic

init_vel

  • Type: Boolean

  • Description:

    • True: read the atom velocity from the atom file (STRU) if set to true. (atomic unit : 1 a.u. = 21.877 Angstrom/fs)

    • False: assign value to atom velocity using Gaussian distributed random numbers.

  • Default: False

nelec

  • Type: Real

  • Description:

    • 0.0: the total number of electrons will be calculated by the sum of valence electrons (i.e. assuming neutral system).

    • >0.0: this denotes the total number of electrons in the system. Must be less than 2*nbands.

  • Default: 0.0

nupdown

  • Type: Real

  • Description:

    • 0.0: no constrain apply to system.

    • >0.0: this denotes the difference number of electrons between spin-up and spin-down in the system. The range of value must in [-nelec ~ nelec]. It is one method of constraint DFT, the fermi energy level will separate to E_Fermi_up and E_Fermi_down.

  • Default: 0.0

dft_functional

  • Type: String

  • Description: In our package, the XC functional can either be set explicitly using the dft_functional keyword in INPUT file. If dft_functional is not specified, ABACUS will use the xc functional indicated in the pseudopotential file. On the other hand, if dft_functional is specified, it will overwrite the functional from pseudopotentials and performs calculation with whichever functional the user prefers. We further offer two ways of supplying exchange-correlation functional. The first is using ‘short-hand’ names such as ‘LDA’, ‘PBE’, ‘SCAN’. A complete list of ‘short-hand’ expressions can be found in the source code. The other way is only available when compiling with LIBXC, and it allows for supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by a plus sign, for example, ‘dft_functional=‘LDA_X_1D_EXPONENTIAL+LDA_C_1D_CSC’. The list of LIBXC keywords can be found on its website. In this way, we support all the LDA,GGA and mGGA functionals provided by LIBXC.

    Furthermore, the old INPUT parameter exx_hybrid_type for hybrid functionals has been absorbed into dft_functional. Options are hf (pure Hartree-Fock), pbe0(PBE0), hse (Note: in order to use HSE functional, LIBXC is required). Note also that HSE has been tested while PBE0 has NOT been fully tested yet, and the maximum CPU cores for running exx in parallel is \(N(N+1)/2\), with N being the number of atoms. And forces for hybrid functionals are not supported yet.

    If set to opt_orb, the program will not perform hybrid functional calculation. Instead, it is going to generate opt-ABFs as discussed in this article.

  • Default: same as UPF file.

xc_temperature

  • Type: Real

  • Description: specifies temperature when using temperature-dependent XC functionals (KSDT and so on).

  • Default : 0.0

  • Unit: Ry

pseudo_rcut

  • Type: Real

  • Description: Cut-off of radial integration for pseudopotentials

  • Default: 15

  • Unit: Bohr

pseudo_mesh

  • Type: Integer

  • Description:

    • 0: use our own mesh for radial integration of pseudopotentials

    • 1: use the mesh that is consistent with quantum espresso

  • Default: 0

mem_saver

  • Type: Boolean

  • Description: Used only for nscf calculations.

    • 0: no memory saving techniques are used.

    • 1: a memory saving technique will be used for many k point calculations.

  • Default: 0

diago_proc

  • Type: Integer

  • Availability: pw base

  • Description:

    • 0: it will be set to the number of MPI threads. Normally, it is fine just leave it to the default value.

    • >0: it specifies the number of threads used for carrying out diagonalization. Must be less than or equal to total number of MPI threads. Also, when cg diagonalization is used, diago_proc must be the same as the total number of MPI threads.

  • Default: 0

nbspline

  • Type: Integer

  • Description: If set to a natural number, a Cardinal B-spline interpolation will be used to calculate Structure Factor. nbspline represents the order of B-spline basis and a larger one can get more accurate results but cost more. It is turned off by default.

  • Default: -1

kspacing

  • Type: Real

  • Description: Set the smallest allowed spacing between k points, unit in 1/bohr. It should be larger than 0.0, and suggest smaller than 0.25. When you have set this value > 0.0, then the KPT file is unnecessary, and the number of K points nk_i = max(1, int(|b_i|/KSPACING_i)+1), where b_i is the reciprocal lattice vector. The default value 0.0 means that ABACUS will read the applied KPT file. If only one value is set (such as kspacing 0.5), then kspacing values of a/b/c direction are all set to it; and one can also set 3 values to set the kspacing value for a/b/c direction separately (such as: kspacing 0.5 0.6 0.7).

    Note: if gamma_only is set to be true, kspacing is invalid.

  • Default: 0.0

min_dist_coef

  • Type: Real

  • Description: a factor related to the allowed minimum distance between two atoms. At the beginning, ABACUS will check the structure, and if the distance of two atoms is shorter than min_dist_coef*(standard covalent bond length), we think this structure is unreasonable. If you want to calculate some structures in extreme conditions like high pressure, you should set this parameter as a smaller value or even 0.

  • Default: 0.2

device

  • Type: String

  • Description: Specifies the computing device for ABACUS.

    Available options are:

    • cpu: for CPUs via Intel, AMD, or Other supported CPU devices

    • gpu: for GPUs via CUDA.

    Known limitations:

    • pw basis: required by the gpu acceleration options

    • cg ks_solver: required by the gpu acceleration options

  • Default: cpu

back to top

Electronic structure

These variables are used to control the electronic structure and geometry relaxation calculations.

basis_type

  • Type: String

  • Description: Choose the basis set.

    • pw: Using plane-wave basis set only.

    • lcao: Using localized atomic orbital sets.

    • lcao_in_pw: (Unavailable currently, it will be fixed in future versions) Expand the localized atomic set in plane-wave basis.

  • Default: pw

ks_solver

  • Type: String

  • Description: Choose the diagonalization methods for the Hamiltonian matrix expanded in a certain basis set.

    For plane-wave basis,

    • cg: cg method.

    • dav: the Davidson algorithm.

    For atomic orbitals basis,

    • genelpa: This method should be used if you choose localized orbitals.

    • scalapack-gvx: Scalapack can also be used for localized orbitals.

    • cusolver: (Unavailable currently, it will be fixed in future versions) This method needs building with the cusolver component for lcao and at least one gpu is available.

    If you set ks_solver=genelpa for basis_type=pw, the program will be stopped with an error message:

    genelpa can not be used with plane wave basis.
    

    Then the user has to correct the input file and restart the calculation.

  • Default: cg (plane-wave basis), or genelpa (localized atomic orbital basis, if compiling option USE_ELPA has been set), scalapack_gvx, (localized atomic orbital basis, if compiling option USE_ELPA has not been set)

nbands

  • Type: Integer

  • Description: The number of Kohn-Sham orbitals to calculate. It is recommended to setup this value, especially when smearing techniques are utilized, more bands should be included.

  • Default:

    • nspin=1: max(1.2*occupied_bands, occupied_bands + 10)

    • nspin=2: max(1.2*nelec_spin, nelec_spin + 10), in which nelec_spin = max(nelec_spin_up, nelec_spin_down)

    • nspin=4: max(1.2*nelec, nelec + 20)

nbands_istate

  • Type: Integer

  • Availability: Only used when calculation = get_wf or calculation = get_pchg.

  • Description: The number of bands around the Fermi level you would like to calculate. get_wf means to calculate the envelope functions of wave functions \(\Psi_{i}=\Sigma_{\mu}C_{i\mu}\Phi_{\mu}\), where \(\Psi_{i}\) is the ith wave function with the band index \(i\) and \(\Phi_{\mu}\) is the localized atomic orbital set. get_pchg means to calculate the density of each wave function \(|\Psi_{i}|^{2}\). Specifically, suppose we have highest occupied bands at 100th wave functions. And if you set this variable to 5, it will print five wave functions from 96th to 105th. But before all this can be carried out, the wave functions coefficients should be first calculated and written into a file by setting the flag out_wfc_lcao = 1.

  • Default: 5

nspin

  • Type: Integer

  • Description: The number of spin components of wave functions.

    • 1: Spin degeneracy

    • 2: Collinear spin polarized.

    • 4: For the case of noncollinear polarized, nspin will be automatically set to 4 without being specified by the user.

  • Default: 1

smearing_method

  • Type: String

  • Description: It indicates which occupation and smearing method is used in the calculation.

    • fixed: fixed occupations.

    • gauss or gaussian: Gaussian smearing method.

    • mp: methfessel-paxton smearing method; recommended for metals.

    • fd: Fermi-Dirac smearing method: \(f=1/\{1+\exp[(E-\mu)/kT]\}\) and smearing_sigma below is the temperature \(T\) (in Ry).

  • Default: fixed

smearing_sigma

  • Type: Real

  • Description: Energy range for smearing.

  • Default: 0.001

  • Unit: Ry

smearing_sigma_temp

  • Type: Real

  • Description: Energy range for smearing, smearing_sigma = 1/2 * kB * smearing_sigma_temp.

  • Default: 2 * smearing_sigma_temp / kB.

  • Unit: K

mixing_type

  • Type: String

  • Availability: smearing_method is not fixed.

  • Description: Charge mixing methods.

    • plain: Just simple mixing.

    • pulay: Standard Pulay method.

    • broyden: Broyden method.

  • Default: pulay

mixing_beta

  • Type: Real

  • Description: mixing parameter. We recommend the following options:

    • -10.0: Program will auto set mixing_beta and mixing_gg0 before charge mixing method starts.

      • Default values of transition metal system are mixing_beta=0.2 and mixing_gg0=1.5;

      • Default values of metal system (bandgap <= 1.0 eV) are mixing_beta=0.2 and mixing_gg0=0.0;

      • Default values of other systems (bandgap > 1.0eV) are mixing_beta=0.7 and mixing_gg0=0.0.

    • 0: keep charge density unchanged, usually used for restarting with init_chg=file or testing.

    • 0.1 or less: if convergence of SCF calculation is difficult to reach, please try 0 < mixing_beta < 0.1.

    Note: For low-dimensional large systems, the setup of mixing_beta=0.1, mixing_ndim=20, and mixing_gg0=1.5 usually works well.

  • Default: -10.0

mixing_ndim

  • Type: Integer

  • Description: It indicates the mixing dimensions in Pulay, Pulay method uses the density from previous mixing_ndim steps and do a charge mixing based on this density.

  • Default: 8

mixing_gg0

  • Type: Real

  • Description: Whether to perfom Kerker scaling.

    • >0: The high frequency wave vectors will be suppressed by multiplying a scaling factor \(\frac{k^2}{k^2+gg0^2}\). Setting mixing_gg0 = 1.5 is normally a good starting point.

    • 0: No Kerker scaling is performed.

  • Default: 0.0

mixing_tau

  • Type: Boolean

  • Availability: Only relevant for meta-GGA calculations.

  • Description: Whether to mix the kinetic energy density.

    • True: The kinetic energy density will also be mixed. It seems for general cases, SCF converges fine even without this mixing. However, if there is difficulty in converging SCF for meta-GGA, it might be helpful to turn this on.

    • False: The kinetic energy density will not be mixed.

  • Default: False

mixing_dftu

  • Type: Boolean

  • Availability: Only relevant for DFT+U calculations.

  • Description: Whether to mix the occupation matrices.

    • True: The occupation matrices will also be mixed by plain mixing. From experience this is not very helpful if the +U calculation does not converge.

    • False: The occupation matrices will not be mixed.

  • Default: False

gamma_only

  • Type: Integer

  • Availability: Only used in localized orbitals set

  • Description: Whether to use gamma_only algorithm.

    • 0: more than one k-point is used and the ABACUS is slower compared to the gamma only algorithm.

    • 1: ABACUS uses gamma only, the algorithm is faster and you don’t need to specify the k-points file.

    Note: If gamma_only is set to 1, the KPT file will be overwritten. So make sure to turn off gamma_only for multi-k calculations.

  • Default: 0

printe

  • Type: Integer

  • Description: Print out energy for each band for every printe step

  • Default: 100

scf_nmax

  • Type: Integer

  • Description: This variable indicates the maximal iteration number for electronic iterations.

  • Default: 100

scf_thr

  • Type: Real

  • Description: It’s the threshold for electronic iteration. It represents the charge density error between two sequential densities from electronic iterations. Usually for local orbitals, usually 1e-6 may be accurate enough.

  • Default: 1.0e-9 (plane-wave basis), or 1.0e-7 (localized atomic orbital basis).

scf_thr_type

  • Type: Integer

  • Description: Choose the calculation method of convergence criterion.

    • 1: the criterion is defined as \(\Delta\rho_G = \frac{1}{2}\iint{\frac{\Delta\rho(r)\Delta\rho(r')}{|r-r'|}d^3r d^3r'}\).

    • 2: the criterion is defined as \(\Delta\rho_R = \int{|\Delta\rho(r)|d^3r}\).

    Note: This parameter is still under testing and the default setting is usually sufficient.

  • Default: 1 (plane-wave basis), or 2 (localized atomic orbital basis).

chg_extrap

  • Type: String

  • Description: Methods to do extrapolation of density when ABACUS is doing geometry relaxations or molecular dynamics.

    • atomic: atomic extrapolation.

    • first-order: first-order extrapolation.

    • second-order: second-order extrapolation.

  • Default: atomic

lspinorb

  • Type: Boolean

  • Description: Whether to consider spin-orbital coupling effect in the calculation.

    • True: Consider spin-orbital coupling effect, and nspin is also automatically set to 4.

    • False: Do not consider spin-orbital coupling effect.

  • Default: False

noncolin

  • Type: Boolean

  • Description: Whether to allow non-collinear polarization, in which case the coupling between spin up and spin down will be taken into account.

    • True: Allow non-collinear polarization, and nspin is also automatically set to 4.

    • False: Do not allow non-collinear polarization.

  • Default: False

soc_lambda

  • Type: Real

  • Availability: Relevant for soc calculations.

  • Description: Sometimes, for some real materials, both scalar-relativistic and full-relativistic can not describe the exact spin-orbit coupling. Artificial modulation may help in such cases.

    soc_lambda, which has value range [0.0, 1.0] , is used for modulate SOC effect.

    In particular, soc_lambda 0.0 refers to scalar-relativistic case and soc_lambda 1.0 refers to full-relativistic case.

  • Default: 1.0

back to top

Electronic structure (SDFT)

These variables are used to control the parameters of stochastic DFT (SDFT), mix stochastic-deterministic DFT (MDFT), or complete-basis Chebyshev method (CT). In the following text, stochastic DFT is used to refer to these three methods. We suggest using SDFT to calculate high-temperature systems and we only support smearing_method “fd”. Both “scf” and “nscf” calculation are supported.

method_sto

  • Type: Integer

  • Availability: esolver_type = sdft

  • Description: Different methods to do stochastic DFT

    • 1: Calculate \(T_n(\hat{h})\ket{\chi}\) twice, where \(T_n(x)\) is the n-th order Chebyshev polynomial and \(\hat{h}=\frac{\hat{H}-\bar{E}}{\Delta E}\) owning eigenvalues \(\in(-1,1)\). This method cost less memory but is slower.

    • 2: Calculate \(T_n(\hat{h})\ket{\chi}\) once but needs much more memory. This method is much faster. Besides, it calculates \(N_e\) with \(\bra{\chi}\sqrt{\hat f}\sqrt{\hat f}\ket{\chi}\), which needs a smaller nche_sto. However, when the memory is not enough, only method 1 can be used.

    • other: use 2

  • Default: 2

nbands_sto

  • Type: Integer or string

  • Availability: esolver_type = sdft

  • Description: The number of stochastic orbitals

    • > 0: Perform stochastic DFT. Increasing the number of bands improves accuracy and reduces stochastic errors, which scale as \(1/\sqrt{N_{\chi}}\); To perform mixed stochastic-deterministic DFT, you should set nbands, which represents the number of KS orbitals.

    • 0: Perform Kohn-Sham DFT.

    • all: All complete basis sets are used to replace stochastic orbitals with the Chebyshev method (CT), resulting in the same results as KSDFT without stochastic errors.

  • Default: 256

nche_sto

  • Type: Integer

  • Availability: esolver_type = sdft

  • Description: Chebyshev expansion orders for stochastic DFT.

  • Default: 100

emin_sto

  • Type: Real

  • Availability: esolver_type = sdft

  • Description: Trial energy to guess the lower bound of eigen energies of the Hamiltonian Operator \(\hat{H}\).

  • Default: 0.0

  • Unit: Ry

emax_sto

  • Type: Real

  • Availability: esolver_type = sdft

  • Description: Trial energy to guess the upper bound of eigen energies of the Hamiltonian Operator \(\hat{H}\).

  • Default: 0.0

  • Unit: Ry

seed_sto

  • Type: Integer

  • Availability: esolver_type = sdft

  • Description: The random seed to generate stochastic orbitals.

    • >= 0: Stochastic orbitals have the form of \(\exp(i2\pi\theta(G))\), where \(\theta\) is a uniform distribution in \((0,1)\).

    • 0: the seed is decided by time(NULL).

    • <= -1: Stochastic orbitals have the form of \(\pm1\) with equal probability.

    • -1: the seed is decided by time(NULL).

  • Default: 0

initsto_freq

  • Type: Integer

  • Availability: esolver_type = sdft

  • Description: Frequency (once each initsto_freq steps) to generate new stochastic orbitals when running md.

    • positive integer: Update stochastic orbitals

    • 0: Never change stochastic orbitals.

  • Default: 0

npart_sto

  • Type: Integer

  • Availability: method_sto = 2 and out_dos = True

  • Description: Make memory cost to 1/npart_sto times of the previous one when running the post process of SDFT like DOS.

  • Default: 1

back to top

Geometry relaxation

These variables are used to control the geometry relaxation.

relax_method

  • Type: String

  • Description: The methods to do geometry optimization. Note that there are two implementations of the conjugate gradient (CG) method, see relax_new. Also note that the Fast Inertial Relaxation Engine method (FIRE), a kind of molecular-dynamics-based relaxation algorithm, is implemented in the molecular dynamics (MD) module. The algorithm can be used by setting md_type to fire. See fire for more details.

    • cg: using the conjugate gradient (CG) algorithm (see relax_new for the new CG method).

    • bfgs: using the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm.

    • cg_bfgs: using the CG method for the initial steps, and switching to BFGS method when the force convergence is smaller than relax_cg_thr.

    • sd: using the steepest descent (SD) algorithm.

  • Default: cg

relax_new

  • Type: Boolean

  • Description: At around the end of 2022 we made a new implementation of the Conjugate Gradient (CG) method for relax and cell-relax calculations. But the old implementation was also kept.

    • True: use the new implementation of CG method for relax and cell-relax calculations.

    • False: use the old implementation of CG method for relax and cell-relax calculations.

  • Default: True

relax_scale_force

  • Type: Real

  • Availability: only used when relax_new set to True

  • Description: The paramether controls the size of the first conjugate gradient step. A smaller value means the first step along a new CG direction is smaller. This might be helpful for large systems, where it is safer to take a smaller initial step to prevent the collapse of the whole configuration.

  • Default: 0.5

relax_nmax

  • Type: Integer

  • Description: The maximal number of ionic iteration steps, the minimum value is 1.

  • Default: 1

relax_cg_thr

  • Type: Real

  • Description: When move-method is set to cg_bfgs, a mixed algorithm of conjugate gradient (CG) method and Broyden–Fletcher–Goldfarb–Shanno (BFGS) method is used. The ions first move according to CG method, then switched to BFGS method when the maximum of force on atoms is reduced below the CG force threshold, which is set by this parameter.

  • Default: 0.5

  • Unit: eV/Angstrom

cal_force

  • Type: Boolean

  • Description:

    • True calculate the force at the end of the electronic iteration

    • False no force calculation at the end of the electronic iteration

  • Default: False if calculation is set to scf, True if calculation is set to cell-relax, relax, or md.

force_thr

  • Type: Real

  • Description: Threshold of the force convergence in Ry/Bohr. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr_ev except for the unit. You may choose either you like.

  • Default: 0.001

  • Unit: Ry/Bohr (25.7112 eV/Angstrom)

force_thr_ev

  • Type: Real

  • Description: Threshold of the force convergence in eV/Angstrom. The threshold is compared with the largest force among all of the atoms. The recommended value for using atomic orbitals is 0.04 eV/Angstrom (0.0016 Ry/Bohr). The parameter is equivalent to force_thr except for the unit. You may choose either you like.

  • Default: 0.0257112

  • Unit: eV/Angstrom (0.03889 Ry/Bohr)

force_thr_ev2

  • Type: Real

  • Description: The calculated force will be set to 0 when it is smaller than the parameter force_thr_ev2.

  • Default: 0.0

  • Unit: eV/Angstrom

relax_bfgs_w1

  • Type: Real

  • Description: This variable controls the Wolfe condition for Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. You can look into the paper Phys.Chem.Chem.Phys.,2000,2,2177 for more information.

  • Default: 0.01

relax_bfgs_w2

  • Type: Real

  • Description: This variable controls the Wolfe condition for Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm used in geometry relaxation. You can look into the paper Phys.Chem.Chem.Phys.,2000,2,2177 for more information.

  • Default: 0.5

relax_bfgs_rmax

  • Type: Real

  • Description: This variable is for geometry optimization. It stands for the maximal movement of all the atoms. The sum of the movements from all atoms can be increased during the optimization steps. However, it can not be larger than relax_bfgs_rmax

  • Unit: Bohr

  • Default: 0.8

relax_bfgs_rmin

  • Type: Real

  • Description: This variable is for geometry optimization. It indicates the minimal movement of all the atoms. When the movement of all the atoms is smaller than relax_bfgs_rmin Bohr, and the force convergence is still not achieved, the calculation will break down.

  • Default: 1e-5

  • Unit: Bohr

relax_bfgs_init

  • Type: Real

  • Description: This variable is for geometry optimization. It stands for the sum of initial movements of all of the atoms.

  • Default: 0.5

  • Unit: Bohr

cal_stress

  • Type: Boolean

  • Description:

    • True: calculate the stress at the end of the electronic iteration

    • False: no calculation of the stress at the end of the electronic iteration

  • Default: True if calculation is cell-relax, False otherwise.

stress_thr

  • Type: Real

  • Description: The threshold of the stress convergence. The threshold is compared with the largest component of the stress tensor.

  • Default: 0.5

  • Unit: kbar

press1, press2, press3

  • Type: Real

  • Description: The external pressures along three axes. Positive input value is taken as compressive stress.

  • Default: 0

  • Unit: kbar

fixed_axes

  • Type: String

  • Availability: only used when calculation set to cell-relax

  • Description: Axes that are fixed during cell relaxation. Possible choices are:

    • None: default; all of the axes can relax

    • volume: relaxation with fixed volume

    • shape: fix shape but change volume (i.e. only lattice constant changes)

    • a: fix a axis during relaxation

    • b: fix b axis during relaxation

    • c: fix c axis during relaxation

    • ab: fix both a and b axes during relaxation

    • ac: fix both a and c axes during relaxation

    • bc: fix both b and c axes during relaxation

Note : fixed_axes = “shape” and “volume” are only available for relax_new = True

  • Default: None

fixed_ibrav

  • Type: Boolean

  • Availability: Must be used along with relax_new set to True, and a specific latname must be provided

  • Description:

    • True: the lattice type will be preserved during relaxation

    • False: No restrictions are exerted during relaxation in terms of lattice type

Note: it is possible to use fixed_ibrav with fixed_axes, but please make sure you know what you are doing. For example, if we are doing relaxation of a simple cubic lattice (latname = “sc”), and we use fixed_ibrav along with fixed_axes = “volume”, then the cell is never allowed to move and as a result, the relaxation never converges.

  • Default: False

fixed_atoms

  • Type: Boolean

  • Description:

    • True: The direct coordinates of atoms will be preserved during variable-cell relaxation.

    • False: No restrictions are exerted on positions of all atoms. However, users can still fix certain components of certain atoms by using the m keyword in STRU file. For the latter option, check the end of this instruction.

  • Default: False

cell_factor

  • Type: Real

  • Description: Used in the construction of the pseudopotential tables. It should exceed the maximum linear contraction of the cell during a simulation.

  • Default: 1.2

back to top

Density of states

These variables are used to control the calculation of DOS. Detailed introduction

dos_edelta_ev

  • Type: Real

  • Description: the step size in writing Density of States (DOS)

  • Default: 0.01

  • Unit: eV

dos_sigma

  • Type: Real

  • Description: the width of the Gaussian factor when obtaining smeared Density of States (DOS)

  • Default: 0.07

  • Unit: eV

dos_scale

  • Type: Real

  • Description: Defines the energy range of DOS output as (emax-emin)*(1+dos_scale), centered at (emax+emin)/2. This parameter will be used when dos_emin and dos_emax are not set.

  • Default: 0.01

  • Unit: eV

dos_emin_ev

  • Type: Real

  • Description: the minimal range for Density of States (DOS)

    • If set, “dos_scale” will be ignored.

  • Default: Minimal eigenenergy of \(\hat{H}\)

  • Unit: eV

dos_emax_ev

  • Type: Real

  • Description: the maximal range for Density of States (DOS)

    • If set, “dos_scale” will be ignored.

  • Default: Maximal eigenenergy of \(\hat{H}\)

  • Unit: eV

dos_nche

  • Type: Integer The order of Chebyshev expansions when using Stochastic Density Functional Theory (SDFT) to calculate DOS.

  • Default: 100

back to top

NAOs

These variables are used to control the generation of numerical atomic orbitals (NAOs), whose radial parts are linear combinations of spherical Bessel functions with a node (i.e., evaluate to zero) at the cutoff radius. In plane-wave-based calculations, necessary information will be printed into OUT.${suffix}/orb_matrix.${i}.dat, which serves as an input file for the generation of NAOs. Please check SIAB package for more information.

bessel_nao_ecut

  • Type: Real

  • Description: “Energy cutoff” (in Ry) of spherical Bessel functions. The number of spherical Bessel functions that constitute the radial parts of NAOs is determined by sqrt(bessel_nao_ecut)\(\times\)bessel_nao_rcut/\(\pi\).

  • Default: ecutwfc

bessel_nao_tolerence

  • Type: Real

  • Description: tolerance when searching for the zeros of spherical Bessel functions.

  • Default: 1.0e-12

bessel_nao_rcut

  • Type: Real

  • Description: Cutoff radius (in Bohr) and the common node of spherical Bessel functions used to construct the NAOs.

  • Default: 6.0

bessel_nao_smooth

  • Type: Boolean

  • Description: if True, NAOs will be smoothed near the cutoff radius by \(1-\exp\left(-\frac{(r-r_{cut})^2}{2\sigma^2}\right)\). See bessel_nao_rcut for \(r_{cut}\) and bessel_nao_sigma for \(\sigma\).

  • Default: True

bessel_nao_sigma

  • Type: Real

  • Description: Smoothing range (in Bohr). See also bessel_nao_smooth.

  • Default: 0.1

back to top

DeePKS

These variables are used to control the usage of DeePKS method (a comprehensive data-driven approach to improve the accuracy of DFT). Warning: this function is not robust enough for the current version. Please try the following variables at your own risk:

deepks_out_labels

  • Type: Boolean

  • Availability: numerical atomic orbital basis

  • Description: print energy and force labels and descriptors for DeePKS training

  • Note: In LCAO calculation, the path of a numerical descriptor (an orb file) is needed to be specified under the NUMERICAL_DESCRIPTOR tag in the STRU file. For example:

    NUMERICAL_ORBITAL
    H_gga_8au_60Ry_2s1p.orb
    O_gga_7au_60Ry_2s2p1d.orb
    
    NUMERICAL_DESCRIPTOR
    jle.orb
    
  • Default: False

deepks_scf

  • Type: Boolean

  • Availability: numerical atomic orbital basis

  • Description: perform self-consistent field iteration in DeePKS method

  • Note: A trained, traced model file is needed.

  • Default: False

deepks_model

  • Type: String

  • Availability: numerical atomic orbital basis and deepks_scf is true

  • Description: the path of the trained, traced neural network model file generated by deepks-kit

  • Default: None

bessel_descriptor_lmax

  • Type: Integer

  • Availability: gen_bessel calculation

  • Description: the maximum angular momentum of the Bessel functions generated as the projectors in DeePKS

  • NOte: To generate such projectors, set calculation type to gen_bessel in ABACUS. See also calculation.

  • Default: 2

bessel_descriptor_ecut

  • Type: Real

  • Availability: gen_bessel calculation

  • Description: energy cutoff of Bessel functions

  • Default: same as ecutwfc

  • Unit: Ry

bessel_descriptor_tolerence

  • Type: Real

  • Availability: gen_bessel calculation

  • Description: tolerance for searching the zeros of Bessel functions

  • Default: 1.0e-12

bessel_descriptor_rcut

  • Type: Real

  • Availability: gen_bessel calculation

  • Description: cutoff radius of Bessel functions

  • Default: 6.0

  • Unit: Bohr

bessel_descriptor_smooth

  • Type: Boolean

  • Availability: gen_bessel calculation

  • Description: smooth the Bessel functions at radius cutoff

  • Default: False

bessel_descriptor_sigma

  • Type: Real

  • Availability: gen_bessel calculation

  • Description: smooth parameter at the cutoff radius of projectors

  • Default: 0.1

  • Unit: Bohr

deepks_bandgap

  • Type: Boolean

  • Availability: numerical atomic orbital basis and deepks_scf is true

  • Description: include bandgap label for DeePKS training

  • Default: False

deepks_out_unittest

  • Type: Boolean

  • Description: generate files for constructing DeePKS unit test

  • Note: Not relevant when running actual calculations. When set to 1, ABACUS needs to be run with only 1 process.

  • Default: False

back to top

OFDFT: orbital free density functional theory

of_kinetic

  • Type: String

  • Availability: OFDFT

  • Description: The type of KEDF (kinetic energy density functional).

    • wt: Wang-Teter.

    • tf: Thomas-Fermi.

    • vw: von Weizsäcker.

    • tf+: TF\(\rm{\lambda}\)vW, the parameter \(\rm{\lambda}\) can be set by of_vw_weight.

    • lkt: Luo-Karasiev-Trickey.

  • Default: wt

of_method

  • Type: String

  • Availability: OFDFT

  • Description: The optimization method used in OFDFT.

    • cg1: Polak-Ribiere. Standard CG algorithm.

    • cg2: Hager-Zhang (generally faster than cg1).

    • tn: Truncated Newton algorithm.

  • Default:tn

of_conv

  • Type: String

  • Availability: OFDFT

  • Description: Criterion used to check the convergence of OFDFT.

    • energy: Ttotal energy changes less than of_tole.

    • potential: The norm of potential is less than of_tolp.

    • both: Both energy and potential must satisfy the convergence criterion.

  • Default: energy

of_tole

  • Type: Real

  • Availability: OFDFT

  • Description: Tolerance of the energy change for determining the convergence.

  • Default: 2e-6

  • Unit: Ry

of_tolp

  • Type: Real

  • Availability: OFDFT

  • Description: Tolerance of potential for determining the convergence.

  • Default: 1e-5

  • Unit: Ry

of_tf_weight

  • Type: Real

  • Availability: OFDFT with of_kinetic=tf, tf+, wt

  • Description: Weight of TF KEDF (kinetic energy density functional).

  • Default: 1.0

of_vw_weight

  • Type: Real

  • Availability: OFDFT with of_kinetic=vw, tf+, wt, lkt

  • Description: Weight of vW KEDF (kinetic energy density functional).

  • Default: 1.0

of_wt_alpha

  • Type: Real

  • Availability: OFDFT with of_kinetic=wt

  • Description: Parameter alpha of WT KEDF (kinetic energy density functional).

  • Default: \(5/6\)

of_wt_beta

  • Type: Real

  • Availability: OFDFT with of_kinetic=wt

  • Description: Parameter beta of WT KEDF (kinetic energy density functional).

  • Default: \(5/6\)

of_wt_rho0

  • Type: Real

  • Availability: OFDFT with of_kinetic=wt

  • Description: The average density of system.

  • Default: 0.0

  • Unit: Bohr^-3

of_hold_rho0

  • Type: Boolean

  • Availability: OFDFT with of_kinetic=wt

  • Description: Whether to fix the average density rho0.

    • True: rho0 will be fixed even if the volume of system has changed, it will be set to True automatically if of_wt_rho0 is not zero.

    • False: rho0 will change if volume of system has changed.

  • Default: False

of_lkt_a

  • Type: Real

  • Availability: OFDFT with of_kinetic=lkt

  • Description: Parameter a of LKT KEDF (kinetic energy density functional).

  • Default: 1.3

of_read_kernel

  • Type: Boolean

  • Availability: OFDFT with of_kinetic=wt

  • Description: Whether to read in the kernel file.

    • True: The kernel of WT KEDF (kinetic energy density functional) will be filled from the file specified by of_kernel_file.

    • False: The kernel of WT KEDF (kinetic energy density functional) will be filled from formula.

  • Default: False

of_kernel_file

  • Type: String

  • Availability: OFDFT with of_read_kernel=True

  • Description: The name of WT kernel file.

  • Default: WTkernel.txt

of_full_pw

  • Type: Boolean

  • Availability: OFDFT

  • Description: Whether to use full planewaves.

    • True: Ecut will be ignored while collecting planewaves, so that all planewaves will be used in FFT.

    • False: Only use the planewaves inside ecut, the same as KSDFT.

  • Default: True

of_full_pw_dim

  • Type: Integer

  • Availability: OFDFT with of_full_pw = True

  • Description: Specify the parity of FFT dimensions.

    • 0: either odd or even.

    • 1: odd only.

    • 2: even only.

    Note: Even dimensions may cause slight errors in FFT. It should be ignorable in ofdft calculation, but it may make Cardinal B-spline interpolation unstable, so please set of_full_pw_dim = 1 if nbspline != -1.

  • Default: 0

back to top

Electric field and dipole correction

These variables are relevant to electric field and dipole correction

efield_flag

  • Type: Boolean

  • Description: added the electric field.

    • True: A saw-like potential simulating an electric field is added to the bare ionic potential.

    • False: Not added the electric field.

  • Default: False

dip_cor_flag

  • Type: Boolean

  • Availability: with dip_cor_flag = True and efield_flag = True.

  • Description: Added a dipole correction to the bare ionic potential.

    • True:A dipole correction is also added to the bare ionic potential.

    • False: A dipole correction is not added to the bare ionic potential.

Note: If you want no electric field, parameter efield_amp should be zero. Must be used ONLY in a slab geometry for surface alculations, with the discontinuity FALLING IN THE EMPTY SPACE.

  • Default: False

efield_dir

  • Type: Integer

  • Availability: with efield_flag = True.

  • Description: The direction of the electric field or dipole correction is parallel to the reciprocal lattice vector, so the potential is constant in planes defined by FFT grid points, efield_dir can set to 0, 1 or 2.

    • 0: parallel to \(b_1=\frac{2\pi(a_2\times a_3)}{a_1\cdot(a_2\times a_3)}\)

    • 1: parallel to \(b_2=\frac{2\pi(a_3\times a_1)}{a_1\cdot(a_2\times a_3)}\)

    • 2: parallel to \(b_3=\frac{2\pi(a_1\times a_2)}{a_1\cdot(a_2\times a_3)}\)

  • Default: 2

efield_pos_max

  • Type: Real

  • Availability: with efield_flag = True.

  • Description: Position of the maximum of the saw-like potential along crystal axis efield_dir, within the unit cell, 0 < efield_pos_max < 1.

  • Default: 0.5

efield_pos_dec

  • Type: Real

  • Availability: with efield_flag = True.

  • Description: Zone in the unit cell where the saw-like potential decreases, 0 < efield_pos_dec < 1.

  • Default: 0.1

efield_amp

  • Type: Real

  • Availability: with efield_flag = True.

  • Description: Amplitude of the electric field. The saw-like potential increases with slope efield_amp in the region from efield_pos_max+efield_pos_dec-1) to (efield_pos_max), then decreases until (efield_pos_max+efield_pos_dec), in units of the crystal vector efield_dir.

Note: The change of slope of this potential must be located in the empty region, or else unphysical forces will result.

  • Default: 0.0

  • Unit: a.u., 1 a.u. = 51.4220632*10^10 V/m.

back to top

Gate field (compensating charge)

These variables are relevant to gate field (compensating charge) Detailed introduction

gate_flag

  • Type: Boolean

  • Description: Controls the addition of compensating charge by a charged plate for charged cells.

    • true: A charged plate is placed at the zgate position to add compensating charge. The direction is determined by efield_dir.

    • false: No compensating charge is added.

  • Default: false

zgate

  • Type: Real

  • Description: position of the charged plate in the unit cell

  • Unit: Unit cell size

  • Default: 0.5

  • Constraints: 0 <= zgate < 1

block

  • Type: Boolean

  • Description: Controls the addition of a potential barrier to prevent electron spillover.

    • true: A potential barrier is added from block_down to block_up with a height of block_height. If dip_cor_flag is set to true, efield_pos_dec is used to smoothly increase and decrease the potential barrier.

    • false: No potential barrier is added.

  • Default: false

block_down

  • Type: Real

  • Description: lower beginning of the potential barrier

  • Unit: Unit cell size

  • Default: 0.45

  • Constraints: 0 <= block_down < block_up < 1

block_up

  • Type: Real

  • Description: upper beginning of the potential barrier

  • Unit: Unit cell size

  • Default: 0.55

  • Constraints: 0 <= block_down < block_up < 1

block_height

  • Type: Real

  • Description: height of the potential barrier

  • Unit: Rydberg

  • Default: 0.1

back to top

Exact Exchange

These variables are relevant when using hybrid functionals.

Availablity: dft_functional==hse/hf/pbe0/scan0/opt_orb or rpa==True, and basis_type==lcao/lcao_in_pw

exx_hybrid_alpha

  • Type: Real

  • Description: fraction of Fock exchange in hybrid functionals, so that \(E_{X}=\alpha E_{X}+(1-\alpha)E_{X,\text{LDA/GGA}}\)

  • Default:

exx_hse_omega

  • Type: Real

  • Description: range-separation parameter in HSE functional, such that \(1/r=\text{erfc}(\omega r)/r+\text{erf}(\omega r)/r\)

  • Default: 0.11

exx_separate_loop

  • Type: Boolean

  • Description: There are two types of iterative approaches provided by ABACUS to evaluate Fock exchange.

    • False: Start with a GGA-Loop, and then Hybrid-Loop, in which EXX Hamiltonian \(H_{exx}\) is updated with electronic iterations.

    • True: A two-step method is employed, i.e. in the inner iterations, density matrix is updated, while in the outer iterations, \(H_{exx}\) is calculated based on density matrix that converges in the inner iteration.

  • Default: True

exx_hybrid_step

  • Type: Integer

  • Availability: exx_seperate_loop==1

  • Description: the maximal iteration number of the outer-loop, where the Fock exchange is calculated

  • Default: 100

exx_mixing_beta

  • Type: Real

  • Availability: exx_seperate_loop==1

  • Description: mixing_beta for densty matrix in each iteration of the outer-loop

  • Default: 1.0

exx_lambda

  • Type: Real

  • Availability: basis_type==lcao_in_pw

  • Description: It is used to compensate for divergence points at G=0 in the evaluation of Fock exchange using lcao_in_pw method.

  • Default: 0.3

exx_pca_threshold

  • Type: Real

  • Description: To accelerate the evaluation of four-center integrals (\(ik|jl\)), the product of atomic orbitals are expanded in the basis of auxiliary basis functions (ABF): \(\Phi_{i}\Phi_{j}\sim C^{k}_{ij}P_{k}\). The size of the ABF (i.e. number of \(P_{k}\)) is reduced using principal component analysis. When a large PCA threshold is used, the number of ABF will be reduced, hence the calculation becomes faster. However, this comes at the cost of computational accuracy. A relatively safe choice of the value is 1e-4.

  • Default: 1E-4

exx_c_threshold

  • Type: Real

  • Description: See also the entry exx_pca_threshold. Smaller components (less than exx_c_threshold) of the \(C^{k}_{ij}\) matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4.

  • Default: 1E-4

exx_v_threshold

  • Type: Real

  • Description: See also the entry exx_pca_threshold. With the approximation \(\Phi_{i}\Phi_{j}\sim C^{k}_{ij}P_{k}\), the four-center integral in Fock exchange is expressed as \((ik|jl)=\Sigma_{a,b}C^{a}_{ij}V_{ab}C^{b}_{kl}\), where \(V_{ab}=(P_{a}|P_{b})\) is a double-center integral. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation.

  • Default: 1E-1

exx_dm_threshold

  • Type: Real

  • Description: The Fock exchange can be expressed as \(\Sigma_{k,l}(ik|jl)D_{kl}\) where D is the density matrix. Smaller values of the density matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4.

  • Default: 1E-4

exx_c_grad_threshold

  • Type: Real

  • Description: See also the entry exx_pca_threshold. \(\nabla C^{k}_{ij}\) is used in force and stress. Smaller components (less than exx_c_grad_threshold) of the \(\nabla C^{k}_{ij}\) matrix are neglected to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-4.

  • Default: 1E-4

exx_v_grad_threshold

  • Type: Real

  • Description: See also the entry exx_pca_threshold. With the approximation \(\Phi_{i}\Phi_{j}\sim C^{k}_{ij}P_{k}\), the four-center integral in Fock exchange is expressed as \((ik|jl)=\Sigma_{a,b}C^{a}_{ij}V_{ab}C^{b}_{kl}\), where \(V_{ab}=(P_{a}|P_{b})\) is a double-center integral. \(\nabla V_{ab}\) is used in force and stress. Smaller values of the V matrix can be truncated to accelerate calculation. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 0, i.e. no truncation.

  • Default: 1E-1

exx_schwarz_threshold

  • Type: Real

  • Description: In practice the four-center integrals are sparse, and using Cauchy-Schwartz inequality, we can find an upper bound of each integral before carrying out explicit evaluations. Those that are smaller than exx_schwarz_threshold will be truncated. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-5. (Currently not used)

  • Default: 0

exx_cauchy_threshold

  • Type: Real

  • Description: In practice the Fock exchange matrix is sparse, and using Cauchy-Schwartz inequality, we can find an upper bound of each matrix element before carrying out explicit evaluations. Those that are smaller than exx_cauchy_threshold will be truncated. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-7.

  • Default: 1E-7

exx_cauchy_force_threshold

  • Type: Real

  • Description: In practice the Fock exchange matrix in force is sparse, and using Cauchy-Schwartz inequality, we can find an upper bound of each matrix element before carrying out explicit evaluations. Those that are smaller than exx_cauchy_force_threshold will be truncated. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-7.

  • Default: 1E-7

exx_cauchy_stress_threshold

  • Type: Real

  • Description: In practice the Fock exchange matrix in stress is sparse, and using Cauchy-Schwartz inequality, we can find an upper bound of each matrix element before carrying out explicit evaluations. Those that are smaller than exx_cauchy_stress_threshold will be truncated. The larger the threshold is, the faster the calculation and the lower the accuracy. A relatively safe choice of the value is 1e-7.

  • Default: 1E-7

exx_ccp_threshold

  • Type: Real

  • Description: It is related to the cutoff of on-site Coulomb potentials. (Currently not used)

  • Default: 1e-8

exx_ccp_rmesh_times

  • Type: Real

  • Description: This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. For HSE, setting it to 1 is enough. But for PBE0, a much larger number must be used.

  • Default:

exx_distribute_type

  • Type: String

  • Description: When running in parallel, the evaluation of Fock exchange is done by distributing atom pairs on different threads, then gather the results. exx_distribute_type governs the mechanism of distribution. Available options are htime, order, kmean1 and kmeans2.

    • order: Atom pairs are simply distributed by their orders.

    • htime: The balance in time is achieved on each processor, hence if the memory is sufficient, this is the recommended method.

    • kmeans1 , kmeans2: Two methods where the k-means clustering method is used to reduce memory requirement. They might be necessary for very large systems. (Currently not used)

  • Default: htime

exx_opt_orb_lmax

  • Type: Integer

  • Availability: dft_functional==opt_orb

  • Description: The maximum l of the spherical Bessel functions, when the radial part of opt-ABFs are generated as linear combinations of spherical Bessel functions. A reasonable choice is 2.

  • Default: 0

exx_opt_orb_ecut

  • Type: Real

  • Availability: dft_functional==opt_orb

  • Description: The cut-off of plane wave expansion, when the plane wave basis is used to optimize the radial ABFs. A reasonable choice is 60.

  • Default: 0

  • Unit: Ry

exx_opt_orb_tolerence

  • Type: Real

  • Availability: dft_functional==opt_orb

  • Description: The threshold when solving for the zeros of spherical Bessel functions. A reasonable choice is 1e-12.

  • Default: 0

exx_real_number

  • Type: Boolean

  • Description:

    • True: Enforce LibRI to use double data type.

    • False: Enforce LibRI to use complex data type.

  • Default: depends on the gamma_only option

    • True: if gamma_only

    • False: else

back to top

Molecular dynamics

These variables are used to control molecular dynamics calculations. For more information, please refer to md.md in detail.

md_type

  • Type: String

  • Description: Control the algorithm to integrate the equation of motion for molecular dynamics (MD), see md.md in detail.

    • fire: a MD-based relaxation algorithm, named fast inertial relaxation engine.

    • nve: NVE ensemble with velocity Verlet algorithm.

    • nvt: NVT ensemble, see md_thermostat in detail.

    • npt: Nose-Hoover style NPT ensemble, see md_pmode in detail.

    • langevin: NVT ensemble with Langevin thermostat, see md_damp in detail.

    • msst: MSST method, see msst_direction, msst_vel, msst_qmass, msst_vis, msst_tscale in detail.

  • Default: nvt

md_nstep

  • Type: Integer

  • Description: The total number of molecular dynamics steps.

  • Default: 10

md_dt

  • Type: Real

  • Description: The time step used in molecular dynamics calculations.

  • Default: 1.0

  • Unit: fs

md_thermostat

  • Type: String

  • Description: Specify the temperature control method used in NVT ensemble.

    • nhc: Nose-Hoover chain, see md_tfreq and md_tchain in detail.

    • anderson: Anderson thermostat, see md_nraise in detail.

    • berendsen: Berendsen thermostat, see md_nraise in detail.

    • rescaling: velocity Rescaling method 1, see md_tolerance in detail.

    • rescale_v: velocity Rescaling method 2, see md_nraise in detail.

  • Default: nhc

md_tfirst, md_tlast

  • Type: Real

  • Description: The temperature used in molecular dynamics calculations.

    Note that md_tlast is only used in NVT simulations. The default value of md_tlast is md_tfirst. If md_tlast is set to be different from md_tfirst, ABACUS will automatically change the temperature from md_tfirst to md_tlast.

  • Default: No default

  • Unit: K

md_restart

  • Type: Boolean

  • Description: Control whether to restart molecular dynamics calculations and time-dependent density functional theory calculations.

    • True: ABACUS will read in ${read_file_dir}/Restart_md.dat to determine the current step ${md_step}, then read in the corresponding STRU_MD_${md_step} in the folder OUT.$suffix/STRU/ automatically. For tddft, ABACUS will also read in LOWF_K_${kpoint} of the last step (You need to set out_wfc_lcao=1 and out_app_flag=0 to obtain this file).

    • False: ABACUS will start molecular dynamics calculations normally from the first step.

  • Default: False

md_restartfreq

  • Type: Integer

  • Description: The output frequency of OUT.${suffix}/Restart_md.dat and structural files in the directory OUT.${suffix}/STRIU/, which are used to restart molecular dynamics calculations, see md_restart in detail.

  • Default: 5

md_dumpfreq

  • Type: Integer

  • Description: The output frequency of OUT.${suffix}/MD_dump in molecular dynamics calculations, which including the information of lattices and atoms.

  • Default: 1

dump_force

  • Type: Boolean

  • Description: Whether to output atomic forces into the file OUT.${suffix}/MD_dump.

  • Default: True

dump_vel

  • Type: Boolean

  • Description: Whether to output atomic velocities into the file OUT.${suffix}/MD_dump.

  • Default: True

dump_virial

  • Type: Boolean

  • Description: Whether to output lattice virials into the file OUT.${suffix}/MD_dump.

  • Default: True

md_seed

  • Type: Integer

  • Description: The random seed to initialize random numbers used in molecular dynamics calculations.

    • < 0: No srand() function is called.

    • >= 0: The function srand(md_seed) is called.

  • Default: -1

md_tfreq

  • Type: Real

  • Description: Control the frequency of temperature oscillations during the simulation. If it is too large, the temperature will fluctuate violently; if it is too small, the temperature will take a very long time to equilibrate with the atomic system.

    Note: It is a system-dependent empirical parameter, ranging from 1/(40*md_dt) to 1/(100*md_dt). An improper choice might lead to the failure of jobs.

  • Default: 1/40/md_dt

  • Unit: \(\mathrm{fs^{-1}}\)

md_tchain

  • Type: Integer

  • Description: Number of thermostats coupled with the particles in the NVT/NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion.

  • Default: 1

md_pmode

  • Type: String

  • Description: Specify the cell fluctuation mode in NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion.

    • iso: The three diagonal elements of the lattice are fluctuated isotropically.

    • aniso: The three diagonal elements of the lattice are fluctuated anisotropically.

    • tri: The lattice must be a lower-triangular matrix, and all six freedoms are fluctuated.

  • Default: iso

  • Relavent: md_tfreq, md_tchain, md_pcouple, md_pfreq, and md_pchain.

md_prec_level

  • Type: Integer

  • Description: Determine the precision level of variable-cell molecular dynamics calculations.

    • 0: FFT grids do not change, only G vectors and K vectors are changed due to the change of lattice vector. This level is suitable for cases where the variation of the volume and shape is not large, and the efficiency is relatively higher.

    • 1: A reference cell is constructed at the beginning, controlled by ref_cell_factor. Then the reference cell is used to initialize FFT real-space grids and reciprocal space mesh instead of the initial cell. The cost will increase with the size of the reference cell.

      Currently, the option is useful only in plane-wave-based isotropic NPT simulations.

    • 2: FFT grids change per step. This level is suitable for cases where the variation of the volume and shape is large, such as the MSST method. However, accuracy comes at the cost of efficiency.

  • Default: 0

ref_cell_factor

  • Type: Real

  • Description: Construct a reference cell bigger than the initial cell. Only used in isotropic NPT ensemble currently, if md_prec_level is set to 1. The reference cell has to be large enough so that the lattice vectors of the fluctuating cell do not exceed the reference lattice vectors during MD. Typically, 1.02 ~ 1.10 is sufficient. However, the cell fluctuations depend on the specific system and thermodynamic conditions. So users must test for a proper choice. This parameters should be used in conjunction with q2sigma, qcutz, and ecfixed.

  • Default: 1.0

md_pcouple

  • Type: String

  • Description: The coupled lattice vectors will scale proportionally in NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion.

    • none: Three lattice vectors scale independently.

    • xyz: Lattice vectors x, y, and z scale proportionally.

    • xy: Lattice vectors x and y scale proportionally.

    • xz: Lattice vectors x and z scale proportionally.

    • yz: Lattice vectors y and z scale proportionally.

  • Default: none

md_pfirst, md_plast

  • Type: Real

  • Description: The target pressure used in NPT ensemble simulations, the default value of md_plast is md_pfirst. If md_plast is set to be different from md_pfirst, ABACUS will automatically change the target pressure from md_pfirst to md_plast.

  • Default: No default

  • Unit: kbar

md_pfreq

  • Type: Real

  • Description: The frequency of pressure oscillations during the NPT ensemble simulation. If it is too large, the pressure will fluctuate violently; if it is too small, the pressure will take a very long time to equilibrate with the atomic system.

    Note: It is a system-dependent empirical parameter. An improper choice might lead to the failure of jobs.

  • Default: 1/400/md_dt

  • Unit: \(\mathrm{kbar^{-1}}\)

md_pchain

  • Type: Integer

  • Description: The number of thermostats coupled with the barostat in the NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion.

  • Default: 1

lj_rcut

  • Type: Real

  • Description: Cut-off radius for Leonard Jones potential.

  • Default: 8.5 (for He)

  • Unit: Angstrom

lj_epsilon

  • Type: Real

  • Description: The value of epsilon for Leonard Jones potential.

  • Default: 0.01032 (for He)

  • Unit: eV

lj_sigma

  • Type: Real

  • Description: The value of sigma for Leonard Jones potential.

  • Default: 3.405 (for He)

  • Unit: Angstrom

pot_file

  • Type: String

  • Description: The filename of DP potential files, see md.md in detail.

  • Default: graph.pb

msst_direction

  • Type: Integer

  • Description: The direction of the shock wave in the MSST method.

    • 0: x direction

    • 1: y direction

    • 2: z direction

  • Default: 2

msst_vel

  • Type: Real

  • Description: The velocity of the shock wave in the MSST method.

  • Default: 0.0

  • Unit: Angstrom/fs

msst_vis

  • Type: Real

  • Description: Artificial viscosity in the MSST method.

  • Default: 0.0

  • Unit: g/(mol*Angstrom*fs)

msst_tscale

  • Type: Real

  • Description: The reduction percentage of the initial temperature used to compress volume in the MSST method.

  • Default: 0.01

msst_qmass

  • Type: Real

  • Description: Inertia of the extended system variable. You should set a number larger than 0.

  • Default: No default

  • Unit: \(\mathrm{g^{2}/(mol^{2}*Angstrom^{4})}\)

md_damp

  • Type: Real

  • Description: The damping parameter used to add fictitious force in the Langevin method.

  • Default: 1.0

  • Unit: fs

md_tolerance

  • Type: Real

  • Description: Thr temperature tolerance for velocity rescaling. Velocities are rescaled if the current and target temperature differ more than md_tolerance.

  • Default: 100.0

  • Unit: K

md_nraise

  • Type: Integer

  • Description:

    • Anderson: The “collision frequency” parameter is given as 1/md_nraise.

    • Berendsen: The “rise time” parameter is given in units of the time step: tau = md_nraise*md_dt, so md_dt/tau = 1/md_nraise.

    • Rescale_v: Every md_nraise steps the current temperature is rescaled to the target temperature.

  • Default: 1

cal_syns

  • Type: Boolean

  • Description: Whether the asynchronous overlap matrix is calculated for Hefei-NAMD.

  • Default: False

dmax

  • Type: Real

  • Description: The maximum displacement of all atoms in one step. This parameter is useful when cal_syns = True.

  • Default: 0.01

  • Unit: bohr

back to top

DFT+U correction

These variables are used to control DFT+U correlated parameters

dft_plus_u

  • Type: Boolean

  • Description: Determines whether to calculate the plus U correction, which is especially important for correlated electrons.

    • True: Calculate plus U correction.

    • False: Do not calculate plus U correction.

  • Default: False

orbital_corr

  • Type: Integer

  • Description: Specifies which orbits need plus U correction for each atom type (\(l_1,l_2,l_3,\ldots\) for atom type 1, 2, 3, respectively).

    • -1: The plus U correction will not be calculated for this atom.

    • 1: For p-electron orbits, the plus U correction is needed.

    • 2: For d-electron orbits, the plus U correction is needed.

    • 3: For f-electron orbits, the plus U correction is needed.

  • Default: None

hubbard_u

  • Type: Real

  • Description: Specifies the Hubbard Coulomb interaction parameter U (eV) in plus U correction, which should be specified for each atom unless the Yukawa potential is used.

Note: Since only the simplified scheme by Duradev is implemented, the ‘U’ here is actually U-effective, which is given by Hubbard U minus Hund J.

  • Default: 0.0

yukawa_potential

  • Type: Boolean

  • Description: Determines whether to use the local screen Coulomb potential method to calculate the values of U and J.

    • True: hubbard_u does not need to be specified.

    • False: hubbard_u does need to be specified.

  • Default: False

yukawa_lambda

  • Type: Real

  • Availability: DFT+U with yukawa_potential = True.

  • Description: The screen length of Yukawa potential. If left to default, the screen length will be calculated as an average of the entire system. It’s better to stick to the default setting unless there is a very good reason.

  • Default: Calculated on the fly.

omc

  • Type: Integer

  • Description: The parameter controls the form of occupation matrix control used.

    • 0: No occupation matrix control is performed, and the onsite density matrix will be calculated from wavefunctions in each SCF step.

    • 1: The first SCF step will use an initial density matrix read from a file named [initial_onsite.dm](http://initial_onsite.dm/), but for later steps, the onsite density matrix will be updated.

    • 2: The same onsite density matrix from initial_onsite.dm will be used throughout the entire calculation.

Note : The easiest way to create initial_onsite.dm is to run a DFT+U calculation, look for a file named onsite.dm in the OUT.prefix directory, and make replacements there. The format of the file is rather straight-forward.

  • Default: 0

back to top

vdW correction

These variables are used to control vdW-corrected related parameters.

vdw_method

  • Type: String

  • Description: Specifies the method used for Van der Waals (VdW) correction. Available options are:

  • Default: none

vdw_s6

  • Type: Real

  • Availability: vdw_method is set to d2, d3_0, or d3_bj

  • Description: This scale factor is used to optimize the interaction energy deviations in van der Waals (vdW) corrected calculations. The recommended values of this parameter are dependent on the chosen vdW correction method and the DFT functional being used. For DFT-D2, the recommended values are 0.75 (PBE), 1.2 (BLYP), 1.05 (B-P86), 1.0 (TPSS), and 1.05 (B3LYP). For DFT-D3, recommended values with different DFT functionals can be found on the here. The default value of this parameter in ABACUS is set to be the recommended value for PBE.

  • Default:

    • 0.75: if vdw_method is set to d2

    • 1.0: if vdw_method is set to d3_0 or d3_bj

vdw_s8

  • Type: Real

  • Availability: vdw_method is set to d3_0 or d3_bj

  • Description: This scale factor is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. The default value of this parameter in ABACUS is set to be the recommended value for PBE.

  • Default:

    • 0.722: if vdw_method is set to d3_0

    • 0.7875: if vdw_method is set to d3_bj

vdw_a1

  • Type: Real

  • Availability: vdw_method is set to d3_0 or d3_bj

  • Description: This damping function parameter is relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. The default value of this parameter in ABACUS is set to be the recommended value for PBE.

  • Default:

    • 1.217: if vdw_method is set to d3_0

    • 0.4289: if vdw_method is set to d3_bj

vdw_a2

  • Type: Real

  • Availability: vdw_method is set to d3_0 or d3_bj

  • Description: This damping function parameter is only relevant for D3(0) and D3(BJ) van der Waals (vdW) correction methods. The recommended values of this parameter with different DFT functionals can be found on the webpage. The default value of this parameter in ABACUS is set to be the recommended value for PBE.

  • Default:

    • 1.0: if vdw_method is set to d3_0

    • 4.4407: if vdw_method is set to d3_bj

vdw_d

  • Type: Real

  • Availability: vdw_method is set to d2

  • Description: Controls the damping rate of the damping function in the DFT-D2 method.

  • Default: 20

vdw_abc

  • Type: Integer

  • Availability: vdw_method is set to d3_0 or d3_bj

  • Description: Determines whether three-body terms are calculated for DFT-D3 methods.

    • True: ABACUS will calculate the three-body term.

    • False: The three-body term is not included.

  • Default: False

vdw_C6_file

  • Type: String

  • Availability: vdw_method is set to d2

  • Description: Specifies the name of the file containing \(C_6\) parameters for each element when using the D2 method. If not set, ABACUS uses the default \(C_6\) parameters (Jnm6/mol) stored in the program. To manually set the \(C_6\) parameters, provide a file containing the parameters. An example is given by:

    H  0.1
    Si 9.0
    

    Namely, each line contains the element name and the corresponding \(C_6\) parameter.

  • Default: default

vdw_C6_unit

  • Type: String

  • Availability: vdw_C6_file is not default

  • Description: Specifies the unit of the provided \(C_6\) parameters in the D2 method. Available options are:

    • Jnm6/mol (J·nm^6/mol)

    • eVA (eV·Angstrom)

  • Default: Jnm6/mol

vdw_R0_file

  • Type: String

  • Availability: vdw_method is set to d2

  • Description: Specifies the name of the file containing \(R_0\) parameters for each element when using the D2 method. If not set, ABACUS uses the default \(R_0\) parameters (Angstrom) stored in the program. To manually set the \(R_0\) parameters, provide a file containing the parameters. An example is given by:

    Li 1.0
    Cl 2.0
    

    Namely, each line contains the element name and the corresponding \(R_0\) parameter.

  • Default: default

vdw_R0_unit

  • Type: String

  • Availability: vdw_R0_file is not default

  • Description: Specifies the unit for the \(R_0\) parameters in the D2 method when manually set by the user. Available options are:

    • A (Angstrom)

    • Bohr

  • Default: A

vdw_cutoff_type

  • Type: String

  • Description: Determines the method used for specifying the cutoff radius in periodic systems when applying Van der Waals correction. Available options are:

    • radius: The supercell is selected within a sphere centered at the origin with a radius defined by vdw_cutoff_radius.

    • period: The extent of the supercell is explicitly specified using the vdw_cutoff_period keyword.

  • Default: radius

vdw_cutoff_radius

  • Type: Real

  • Availability: vdw_cutoff_type is set to radius

  • Description: Defines the radius of the cutoff sphere when vdw_cutoff_type is set to radius. The default values depend on the chosen vdw_method.

  • Default:

    • 56.6918 if vdw_method is set to d2

    • 95 if vdw_method is set to d3_0 or d3_bj

  • Unit: defined by vdw_radius_unit (default Bohr)

vdw_radius_unit

  • Type: String

  • Availability: vdw_cutoff_type is set to radius

  • Description: specify the unit of vdw_cutoff_radius. Available options are:

    • A(Angstrom)

    • Bohr

  • Default: Bohr

vdw_cutoff_period

  • Type: Integer Integer Integer

  • Availability: vdw_cutoff_type is set to period

  • Description: The three integers supplied here explicitly specify the extent of the supercell in the directions of the three basis lattice vectors.

  • Default: 3 3 3

vdw_cn_thr

  • Type: Real

  • Availability: vdw_method is set to d3_0 or d3_bj

  • Description: The cutoff radius when calculating coordination numbers.

  • Default: 40

  • Unit: defined by vdw_cn_thr_unit (default: Bohr)

vdw_cn_thr_unit

  • Type: String

  • Description: Unit of the coordination number cutoff (vdw_cn_thr). Available options are:

    • A(Angstrom)

    • Bohr

  • Default: Bohr

back to top

Berry phase and wannier90 interface

These variables are used to control berry phase and wannier90 interface parameters. Detail introduce

berry_phase

  • Type: Boolean

  • Description: controls the calculation of Berry phase

    • true: Calculate Berry phase.

    • false: Do not calculate Berry phase.

  • Default: false

gdir

  • Type: Integer

  • Description: the direction of the polarization in the lattice vector for Berry phase calculation

    • 1: Calculate the polarization in the direction of the lattice vector a_1 defined in the STRU file.

    • 2: Calculate the polarization in the direction of the lattice vector a_2 defined in the STRU file.

    • 3: Calculate the polarization in the direction of the lattice vector a_3 defined in the STRU file.

  • Default: 3

towannier90

  • Type: Integer

  • Description: Controls the generation of files for the Wannier90 code.

    • 1: Generate files for the Wannier90 code.

    • 0: Do not generate files for the Wannier90 code.

  • Default: 0

nnkpfile

  • Type: String

  • Description: the file name generated when running “wannier90 -pp …” command

  • Default: seedname.nnkp

wannier_spin

  • Type: String

  • Description: the spin direction for the Wannier function calculation when nspin is set to 2

    • “up”: Calculate spin up for the Wannier function.

    • “down”: Calculate spin down for the Wannier function.

  • Default: “up”

back to top

TDDFT: time dependent density functional theory

td_edm

  • Type: Integer

  • Description: the method to calculate the energy density matrix

    • 0: new method (use the original formula).

    • 1: old method (use the formula for ground state).

  • Default: 0

td_print_eij

  • Type: Real

  • Description:

    • <0: don’t print \(E_{ij}\).

    • >=0: print the \(E_{ij}\ (<\psi_i|H|\psi_j>\)) elements which are larger than td_print_eij.

  • Default: -1

td_propagator

  • Type: Integer

  • Description: method of propagator

    • 0: Crank-Nicolson.

    • 1: 4th Taylor expansions of exponential.

    • 2: enforced time-reversal symmetry (ETRS).

  • Default: 0

td_vext

  • Type: Boolean

  • Description:

    • True: add a laser material interaction (extern laser field).

    • False: no extern laser field.

  • Default: False

td_vext_dire

  • Type: String

  • Description: If td_vext is True, the td_vext_dire is a string to set the number of electric fields, like td_vext_dire 1 2 representing external electric field is added to the x and y axis at the same time. Parameters of electric field can also be written as a string, like td_gauss_phase 0 1.5707963267948966 representing the Gauss field in the x and y directions has a phase delay of Pi/2. See below for more parameters of electric field.

    • 1: the direction of external light field is along x axis.

    • 2: the direction of external light field is along y axis.

    • 3: the direction of external light field is along z axis.

  • Default: 1

td_stype

  • Type: Integer

  • Description: type of electric field in space domain

    • 0: length gauge.

    • 1: velocity gauge.

  • Default: 0

td_ttype

  • Type: Integer

  • Description: type of electric field in time domain

    • 0: Gaussian type function.

    • 1: Trapezoid function.

    • 2: Trigonometric function.

    • 3: Heaviside function.

    • 4: HHG function.

  • Default: 0

td_tstart

  • Type: Integer

  • Description: number of steps where electric field starts

  • Default: 1

td_tend

  • Type: Integer

  • Description: number of steps where electric field ends

  • Default: 100

td_lcut1

  • Type: Real

  • Description: cut1 of interval in length gauge
    E = E0 , cut1<x<cut2
    E = -E0/(cut1+1-cut2) , x<cut1 or cut2<x<1

  • Default: 0.05

td_lcut2

  • Type: Real

  • Description: cut2 of interval in length gauge
    E = E0 , cut1<x<cut2
    E = -E0/(cut1+1-cut2) , x<cut1 or cut2<x<1

  • Default: 0.05

td_gauss_freq

  • Type: Real

  • Description: frequency (freq) of Gauss type electric field (fs^-1)
    amp*cos(2pi*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2)

  • Default: 22.13

td_gauss_phase

  • Type: Real

  • Description: phase of Gauss type electric field
    amp*(2pi*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2)

  • Default: 0.0

td_gauss_sigma

  • Type: Real

  • Description: sigma of Gauss type electric field (fs)
    amp*cos(2pi*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2)

  • Default: 30.0

td_gauss_t0

  • Type: Real

  • Description: step number of time center (t0) of Gauss type electric field
    amp*cos(2pi*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2)

  • Default: 100

td_gauss_amp

  • Type: Real

  • Description: amplitude (amp) of Gauss type electric field (V/Angstrom)
    amp*cos(2pi*freq(t-t0)+phase)exp(-(t-t0)^2/2sigma^2)

  • Default: 0.25

td_trape_freq

  • Type: Real

  • Description: frequency (freq) of Trapezoid type electric field (fs^-1)
    E = amp*cos(2pi*freq*t+phase) t/t1 , t<t1
    E = amp*cos(2pi*freq*t+phase) , t1<t<t2
    E = amp*cos(2pi*freq*t+phase) (1-(t-t2)/(t3-t2)) , t2<t<t3
    E = 0 , t>t3

  • Default: 1.60

td_trape_phase

  • Type: Real

  • Description: phase of Trapezoid type electric field
    E = amp*cos(2pi*freq*t+phase) t/t1 , t<t1
    E = amp*cos(2pi*freq*t+phase) , t1<t<t2
    E = amp*cos(2pi*freq*t+phase) (1-(t-t2)/(t3-t2)) , t2<t<t3
    E = 0 , t>t3

  • Default: 0.0

td_trape_t1

  • Type: Real

  • Description: step number of time interval 1 (t1) of Trapezoid type electric field
    E = amp*cos(2pi*freq*t+phase) t/t1 , t<t1
    E = amp*cos(2pi*freq*t+phase) , t1<t<t2
    E = amp*cos(2pi*freq*t+phase) (1-(t-t2)/(t3-t2)) , t2<t<t3
    E = 0 , t>t3

  • Default: 1875

td_trape_t2

  • Type: Real

  • Description: step number of time interval 2 (t2) of Trapezoid type electric field
    E = amp*cos(2pi*freq*t+phase) t/t1 , t<t1
    E = amp*cos(2pi*freq*t+phase) , t1<t<t2
    E = amp*cos(2pi*freq*t+phase) (1-(t-t2)/(t3-t2)) , t2<t<t3
    E = 0 , t>t3

  • Default: 5625

td_trape_t3

  • Type: Real

  • Description: step number of time interval 3 (t3) of Trapezoid type electric field
    E = amp*cos(2pi*freq*t+phase) t/t1 , t<t1
    E = amp*cos(2pi*freq*t+phase) , t1<t<t2
    E = amp*cos(2pi*freq*t+phase) (1-(t-t2)/(t3-t2)) , t2<t<t3
    E = 0 , t>t3

  • Default: 7500

td_trape_amp

  • Type: Real

  • Description: amplitude (amp) of Trapezoid type electric field (V/Angstrom)
    E = amp*cos(2pi*freq*t+phase) t/t1 , t<t1
    E = amp*cos(2pi*freq*t+phase) , t1<t<t2
    E = amp*cos(2pi*freq*t+phase) (1-(t-t2)/(t3-t2)) , t2<t<t3
    E = 0 , t>t3

  • Default: 2.74

td_trigo_freq1

  • Type: Real

  • Description: frequency 1 (freq1) of Trigonometric type electric field (fs^-1)
    amp*cos(2*pi*freq1*t+phase1)*sin(2*pi*freq2*t+phase2)^2

  • Default: 1.164656

td_trigo_freq2

  • Type: Real

  • Description: frequency 2 (freq2) of Trigonometric type electric field (fs^-1)
    amp*cos(2*pi*freq1*t+phase1)*sin(2*pi*freq2*t+phase2)^2

  • Default: 0.029116

td_trigo_phase1

  • Type:Real

  • Description: phase 1 (phase1) of Trigonometric type electric field
    amp*cos(2*pi*freq1*t+phase1)*sin(2*pi*freq2*t+phase2)^2

  • Default: 0.0

td_trigo_phase2

  • Type: Real

  • Description: phase 2 (phase2) of Trigonometric type electric field
    amp*cos(2*pi*freq1*t+phase1)*sin(2*pi*freq2*t+phase2)^2

  • Default: 0.0

td_trigo_amp

  • Type: Real

  • Description: amplitude (amp) of Trigonometric type electric field (V/Angstrom)
    amp*cos(2*pi*freq1*t+phase1)*sin(2*pi*freq2*t+phase2)^2

  • Default: 2.74

td_heavi_t0

  • Type: Real

  • Description: step number of switch time (t0) of Heaviside type electric field
    E = amp , t<t0
    E = 0.0 , t>t0

  • Default: 100

td_heavi_amp

  • Type: Real

  • Description: amplitude (amp) of Heaviside type electric field (V/Angstrom)
    E = amp , t<t0
    E = 0.0 , t>t0

  • Default: 2.74

td_out_dipole

  • Type: Boolean

  • Description:

    • True: output dipole.

    • False: do not output dipole.

  • Default: False

td_out_efield

  • Type: Boolean

  • Description: The unit of output file is atomic unit (1 a.u. = 1 Ry/(bohr \(\cdot\) e) = 51.422 V/Angstrom).

    • True: output efield.

    • False: do not output efield.

  • Default: False

ocp

  • Type: Boolean

  • Availability:

    • For PW and LCAO codes. if set to 1, occupations of bands will be setting of “ocp_set”.

    • For TDDFT in LCAO codes. if set to 1, occupations will be constrained since second ionic step.

    • For OFDFT, this feature can’t be used.

  • Description:

  • True: fix the occupations of bands.

  • False: do not fix the occupations of bands.

  • Default: False

ocp_set

  • Type: String

  • Description: If ocp is True, the ocp_set is a string to set the number of occupancy, like ‘1 10 * 1 0 1’ representing the 13 band occupancy, 12th band occupancy 0 and the rest 1, the code is parsing this string into an array through a regular expression.

  • Default: none

back to top

Variables useful for debugging

t_in_h

  • Type: Boolean

  • Description: Specify whether to include kinetic term in obtaining the Hamiltonian matrix.

    • 0: No.

    • 1: Yes.

  • Default: 1

vl_in_h

  • Type: Boolean

  • Description: Specify whether to include local pseudopotential term in obtaining the Hamiltonian matrix.

    • 0: No.

    • 1: Yes.

  • Default: 1

vnl_in_h

  • Type: Boolean

  • Description: Specify whether to include non-local pseudopotential term in obtaining the Hamiltonian matrix.

    • 0: No.

    • 1: Yes.

  • Default: 1

vh_in_h

  • Type: Boolean

  • Description: Specify whether to include Hartree potential term in obtaining the Hamiltonian matrix.

    • 0: No.

    • 1: Yes.

  • Default: 1

vion_in_h

  • Type: Boolean

  • Description: Specify whether to include local ionic potential term in obtaining the Hamiltonian matrix.

    • 0: No.

    • 1: Yes.

  • Default: 1

test_force

  • Type: Boolean

  • Description: Specify whether to output the detailed components in forces.

    • 0: No.

    • 1: Yes.

  • Default: 0

test_stress

  • Type: Boolean

  • Description: Specify whether to output the detailed components in stress.

    • 0: No.

    • 1: Yes.

  • Default: 0

colour

  • Type: Boolean

  • Description: Specify whether to set the colorful output in terminal.

    • 0: No.

    • 1: Yes.

  • Default: 0

test_skip_ewald

  • Type: Boolean

  • Description: Specify whether to skip the calculation of the ewald energy.

    • 0: No.

    • 1: Yes.

  • Default: 0

back to top

Electronic conductivities

Frequency-dependent electronic conductivities can be calculated with Kubo-Greenwood formula [Phys. Rev. B 83, 235120 (2011)].

Onsager coefficients:

\(L_{mn}(\omega)=(-1)^{m+n}\frac{2\pi e^2\hbar^2}{3m_e^2\omega\Omega}\)

\(\times\sum_{ij\alpha\mathbf{k}}W(\mathbf{k})\left(\frac{\epsilon_{i\mathbf{k}}+\epsilon_{j\mathbf{k}}}{2}-\mu\right)^{m+n-2} \times |\langle\Psi_{i\mathbf{k}}|\nabla_\alpha|\Psi_{j\mathbf{k}}\rangle|^2\)

\(\times[f(\epsilon_{i\mathbf{k}})-f(\epsilon_{j\mathbf{k}})]\delta(\epsilon_{j\mathbf{k}}-\epsilon_{i\mathbf{k}}-\hbar\omega).\)

They can also be computed by \(j\)-\(j\) correlation function.

\(L_{mn}=\frac{2e^{m+n-2}}{3\Omega\hbar\omega}\Im[\tilde{C}_{mn}(\omega)]\)

\(\tilde{C}_{mn}=\int_0^\infty C_{mn}(t)e^{-i\omega t}e^{-\frac{1}{2}(\Delta E)^2t^2}dt\)

\(C_{mn}(t)=-2\theta(t)\Im\left\{Tr\left[\sqrt{\hat f}\hat{j}_m(1-\hat{f})e^{i\frac{\hat{H}}{\hbar}t}\hat{j}_ne^{-i\frac{\hat{H}}{\hbar}t}\sqrt{\hat f}\right]\right\}\),

where \(j_1\) is electric flux and \(j_2\) is thermal flux.

Frequency-dependent electric conductivities: \(\sigma(\omega)=L_{11}(\omega)\).

Frequency-dependent thermal conductivities: \(\kappa(\omega)=\frac{1}{e^2T}\left(L_{22}-\frac{L_{12}^2}{L_{11}}\right)\).

DC electric conductivities: \(\sigma = \lim_{\omega\to 0}\sigma(\omega)\).

Thermal conductivities: \(\kappa = \lim_{\omega\to 0}\kappa(\omega)\).

cal_cond

  • Type: Boolean

  • Availability: basis_type = pw

  • Description: Whether to calculate electronic conductivities.

  • Default: False

cond_nche

  • Type: Integer

  • Availability: esolver_type = sdft

  • Description: Chebyshev expansion orders for stochastic Kubo Greenwood.

  • Default: 20

cond_dw

  • Type: Real

  • Availability: basis_type = pw

  • Description: Frequency interval (\(\mathrm{d}\omega\)) for frequency-dependent conductivities.

  • Default: 0.1

  • Unit: eV

cond_wcut

  • Type: Real

  • Availability: basis_type = pw

  • Description: Cutoff frequency for frequency-dependent conductivities.

  • Default: 10.0

  • Unit: eV

cond_dt

  • Type: Real

  • Availability: basis_type = pw

  • Description: Time interval (\(\mathrm{d}t\)) to integrate Onsager coefficients.

  • Default: 0.02

  • Unit: a.u.

cond_dtbatch

  • Type: Integer

  • Availability: esolver_type = sdft

  • Description: exp(iH*dt*cond_dtbatch) is expanded with Chebyshev expansion to calculate conductivities. It is faster but costs more memory.

  • Default: 4

cond_fwhm

  • Type: Real

  • Availability: basis_type = pw

  • Description: FWHM for conductivities, \(\mathrm{FWHM}=2*\sqrt{2\ln2}\cdot \Delta E\). Here, we use gaussian functions to approximate \(\delta(E)\approx \frac{1}{\sqrt{2\pi}\Delta E}e^{-\frac{E^2}{2{\Delta E}^2}}\).

  • Default: 0.4

  • Unit: eV

cond_nonlocal

  • Type: Boolean

  • Availability: basis_type = pw

  • Description: Whether to consider nonlocal potential correction when calculating velocity matrix \(\bra{\psi_i}\hat{v}\ket{\psi_j}\).

    • True: \(m\hat{v}=\hat{p}+\frac{im}{\hbar}[\hat{V}_{NL},\hat{r}]\).

    • False: \(m\hat{v}\approx\hat{p}\).

  • Default: True

back to top

Implicit solvation model

These variables are used to control the usage of implicit solvation model. This approach treats the solvent as a continuous medium instead of individual “explicit” solvent molecules, which means that the solute is embedded in an implicit solvent and the average over the solvent degrees of freedom becomes implicit in the properties of the solvent bath.

imp_sol

  • Type: Boolean

  • Description: calculate implicit solvation correction

  • Default: False

eb_k

  • Type: Real

  • Availability: imp_sol is true.

  • Description: the relative permittivity of the bulk solvent, 80 for water

  • Default: 80

tau

  • Type: Real

  • Description: The effective surface tension parameter that describes the cavitation, the dispersion, and the repulsion interaction between the solute and the solvent which are not captured by the electrostatic terms

  • Default: 1.0798e-05

  • Unit: \(Ry/Bohr^{2}\)

sigma_k

  • Type: Real

  • Description: the width of the diffuse cavity that is implicitly determined by the electronic structure of the solute

  • Default: 0.6

nc_k

  • Type: Real

  • Description: the value of the electron density at which the dielectric cavity forms

  • Default: 0.00037

  • Unit: \(Bohr^{-3}\)

back to top