# Full List of INPUT Keywords

## 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. This value must be set. If the number you set is smaller than the atom species in the STRU file, ABACUS only read the wrong number of atom information. If the number is larger than the atom species in the STRU file, ABACUS may stop and quit.

• Default: No default value

### 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 <= 1d-3.

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

• ienvelope: 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_lmax, bessel_rcut and bessel_tol. 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 names 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;

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

• lj: Leonard Jones potential;

• dp: DeeP potential;

• Default: ksdft

### symmetry

• Type: Integer

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

• if set to 1, symmetry analysis will be performed to determine the type of Bravais lattice and associated symmetry operations. (point groups only)

• if set to 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.

• if set to -1, no symmetry will be considered.

• Default: 0

### 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 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. If set to atomic, the density is starting from the summation of the atomic density of single atoms. If set this to file, the density will be read in from a file. Besides, when you do nspin=1 calculation, you only need the density file SPIN1_CHGCAR. However, if you do nspin=2 calculation, you also need the density file SPIN2_CHGCAR. 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: Read the atom velocity from the atom file (STRU) if set to true.

• Default: false

### nelec

• Type: Real

• Description: If >0.0, this denotes the total number of electrons in the system. Must be less than 2*nbands. If set to 0.0, the total number of electrons will be calculated by the sum of valence electrons (i.e. assuming neutral system).

• Default: 0.0

### nupdown

• Type: Real

• Description: If >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. If set to 0.0, no constrain apply to system.

• Default: 0.0

### tot_magnetization

• Type: Real

• Description: Total magnetization of the system.

• 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); unit in Rydberg

• Default : 0.0

### pseudo_rcut

• Type: Real

• Description: Cut-off of radial integration for pseudopotentials, in Bohr.

• Default: 15

### pseudo_mesh

• Type: Integer

• Description: If set to 0, then use our own mesh for radial integration of pseudopotentials; if set to 1, then use the mesh that is consistent with quantum espresso.

• Default: 0

### mem_saver

• Type: Boolean

• Description: Used only for nscf calculations. If set to 1, then a memory saving technique will be used for many k point calculations.

• Default: 0

### diago_proc

• Type: Integer

• Description: If set to a positive number, then 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. If set to 0, then it will be set to the number of MPI threads. Normally, it is fine just leave it to the default value. Only used for pw base.

• 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)+1), where b_i is the reciprocal lattice vector. The default value 0.0 means that ABACUS will read the applied KPT file. Notice: 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

### symmetry_prec

• Type: Real

• Description: The accuracy for symmetry judgment. The unit is Bohr.

• Default: 1.0e-5

### 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

## Electronic structure

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

### basis_type

• Type: String

• Description: This is an important parameter to choose basis set in ABACUS.

• pw: Using plane-wave basis set only.

• lcao_in_pw: Expand the localized atomic set in plane-wave basis.

• lcao: Using localized atomic orbital sets.

• Default: pw

### ks_solver

• Type: String

• Description: It’s about the choice of diagonalization methods for the hamiltonian matrix expanded in a certain basis set.

For plane-wave basis,

• cg: cg method.

• dav: the Davidson algorithm. (Currently not working with Intel MKL library).

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: 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 (pw) or genelpa (lcao)

### nbands

• Type: Integer

• Description: Number of Kohn-Sham orbitals to calculate. It is recommended you setup this value, especially when you use smearing techniques, more bands should be included.

• Default:

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

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

### nbands_istate

• Type: Integer

• Description: Only used when calculation = ienvelope or calculation = istate, this variable indicates how many bands around the Fermi level you would like to calculate. ienvelope 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. istate 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: Number of spin components of wave functions. There are only two choices now: 1 or 2, meaning non spin or collinear spin. For the case of noncollinear polarized, nspin will be automatically set to 4 without being specified in user input.

• Default: 1

### smearing_method

• Type: String

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

• fixed: use fixed occupations.

• gauss or gaussian: use Gaussian smearing method.

• mp: use 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, the unit is Rydberg.

• Default: 0.001

### smearing_sigma_temp

• Type: Real

• Description: energy range for smearing, and is the same as smearing_sigma, but the unit is K. smearing_sigma = 1/2 * kB * smearing_sigma_temp.

### mixing_type

• Type: String

• Description: Charge mixing methods. We offer the following 3 options:

• plain: Just simple mixing.

• pulay: Standard Pulay method.

• broyden: Broyden method.

• Default: pulay

### mixing_beta

• Type: Real

• Description: mixing parameter: 0 means no new charge

• Default: 0.7

### 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: When set to a positive number, the high frequency wave vectors will be suppressed by multiplying a scaling factor $$\frac{k^2}{k^2+gg0^2}$$; if set to 0, then no Kerker scaling is performed.

• Default: 0.0

### gamma_only

• Type: Integer

• Description: It is an important parameter only to be used in localized orbitals set. If you set gamma_only = 1, ABACUS uses gamma only, the algorithm is faster and you don’t need to specify the k-points file. If you set gamma_only = 0, more than one k-point is used and the ABACUS is slower compared to the gamma only algorithm.

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: 40

### scf_thr

• Type: Real

• Description: An important parameter in ABACUS. 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

### chg_extrap

• Type: String

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

• 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. When set to 1, nspin is also automatically set to 4.

• Default: 0

### 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. If set to 1, nspin is also automatically set to 4.

• Default: 0

### soc_lambda

• Type: Real

• Description: Relevant for soc calculations. 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

## 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). We suggest using SDFT to calculate high-temperature systems and we only support smearing_method “fd”.

### method_sto

• Type: Integer

• Description:

• Different method to do SDFT.

• 1: SDFT calculates $$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 eigenvalue $$\in(-1,1)$$. This method cost less memory but is slower.

• 2: SDFT calculates $$T_n(\hat{h})\ket{\chi}$$ once but need 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 memory is not enough, only method 1 can be used.

• other: use 2

• Default: 2

### nbands_sto

• Type: Integer

• Description:

• nbands_sto>0: Number of stochastic orbitals to calculate in SDFT and MDFT. More bands obtain more precise results or smaller stochastic errors ($$\propto 1/\sqrt{N_{\chi}}$$);

• nbands_sto=0: Complete basis will be used to replace stochastic orbitals with the Chebyshev method (CT) and it will get the results the same as KSDFT without stochastic errors.

• If you want to do MDFT. nbands which represents the number of KS orbitals should be set.

• Default: 256

### nche_sto

• Type: Integer

• Description: Chebyshev expansion orders for SDFT, MDFT, CT methods.

• Default:100

### emin_sto

• Type: Real

• Description: Trial energy to guess the lower bound of eigen energies of the Hamitonian Operator $$\hat{H}$$. The unit is Ry.

• Default:0.0

### emax_sto

• Type: Real

• Description: Trial energy to guess the upper bound of eigen energies of the Hamitonian Operator $$\hat{H}$$. The unit is Ry.

• Default:0.0

### seed_sto

• Type: Integer

• Description: The random seed to generate stochastic orbitals.

• seed_sto>=0: Stochastic orbitals have the form of $$\exp(i2\pi\theta(G))$$, where $$\theta$$ is a uniform distribution in $$(0,1)$$. If seed_sto = 0, the seed is decided by time(NULL).

• seed_sto<=-1: Stochastic orbitals have the form of $$\pm1$$ with equal probability. If seed_sto = -1, the seed is decided by time(NULL).

• Default:0

### initsto_freq

• Type: Integer

• 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

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

• Default:1

## Geometry relaxation

These variables are used to control the geometry relaxation.

### relax_nmax

• Type: Integer

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

• Default: 1

### cal_force

• Description: If set to 1, calculate the force at the end of the electronic iteration. 0 means the force calculation is turned off.

• Default: 0

### force_thr

• Type: Real

• Description: The threshold of the force convergence, it indicates the largest force among all the atoms, the unit is Ry=Bohr

• Default: 0.001 Ry/Bohr = 0.0257112 eV/Angstrom

### force_thr_ev

• Type: Real

• Description: The threshold of the force convergence, has the same function as force_thr, just the unit is different, it is eV/Angstrom, you can choose either one as you like. The recommended value for using atomic orbitals is 0.04 eV/Angstrom.

• Default: 0.0257112 eV/Angstrom

### force_thr_ev2

• Type: Real

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

• Default: 0.0 eV/Angstrom

### relax_bfgs_w1

• Type: Real

• Description: This variable controls the Wolfe condition for 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 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 indicates the maximal movement of all the atoms. The sum of the movements from all atoms can be increased during the optimization steps. However, it will not be larger than relax_bfgs_rmax 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

### relax_bfgs_init

• Type: Real

• Description: This variable is for geometry optimization. It indicates the initial movement of all the atoms. The sum of the movements from all atoms is relax_bfgs_init Bohr.

• Default: 0.5

### cal_stress

• Type: Integer

• Description: If set to 1, calculate the stress at the end of the electronic iteration. 0 means the stress calculation is turned off.

• Default: 0

### stress_thr

• Type: Real

• Description: The threshold of the stress convergence, it indicates the largest stress among all the directions, the unit is KBar,

• Default: 0.01

### press1, press2, press3

• Type: Real

• Description: the external pressures along three axes, the compressive stress is taken to be positive, and the unit is KBar.

• Default: 0

### fixed_axes

• Type: String

• Description: which axes are fixed when do cell relaxation. Possible choices are:

• None : default; all 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 = 1

• Default: None

### fixed_ibrav

• Type: Boolean

• Description: when set to true, the lattice type will be preserved during relaxation. Must be used along with relax_new set to true, and a specific latname must be provided

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: when set to true, the direct coordinates of atoms will be preserved during variable-cell relaxation. If set to false, 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

### relax_method

• Type: String

• Description: The method to do geometry optimizations, note that if relax_new is set to 1, then only cg is available:

• bfgs: using BFGS algorithm.

• sd: using steepest-descent algorithm.

• cg: using cg algorithm.

• cg-bfgs:

• Default: cg

### relax_cg_thr

• Type: Real

• Description: When move-method is set to ‘cg-bfgs’, a mixed cg-bfgs algorithm is used. The ions first move according to cg method, then switched to bfgs when the maximum of force on atoms is reduced below cg-threshold. The unit is eV/Angstrom.

• Default: 0.5

### relax_new

• Type: Boolean

• Description: At around the end of 2022 we made a new implementation of the CG method for relax and cell-relax calculations. But the old implementation was also kept. To use the new method, set relax_new to true. To use the old one, set it to false.

• Default: True

### 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

## Density of states

These variables are used to control the calculation of DOS.

### dos_edelta_ev

• Type: Real

• Description: controls the step size in writing DOS (in eV).

• Default: 0.01

### dos_sigma

• Type: Real

• Description: controls the width of Gaussian factor when obtaining smeared DOS (in eV).

• Default: 0.07

### dos_scale

• Type: Real

• Description: the energy range of dos output is given by (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

### dos_emin_ev

• Type: Real

• Description: minimal range for dos (in eV). If we set it, “dos_scale” will be ignored.

• Default: minimal eigenenergy of $$\hat{H}$$

### dos_emax_ev

• Type: Real

• Description: maximal range for dos (in eV). If we set it, “dos_scale” will be ignored.

• Default: maximal eigenenergy of $$\hat{H}$$

### dos_nche

• Type: Integer

• Description: orders of Chebyshev expansions when using SDFT to calculate DOS

• Default: 100

## 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

• Description: when set to 1, ABACUS will calculate and output descriptor for DeePKS training. In LCAO calculation, a path of *.orb file is needed to be specified under NUMERICAL_DESCRIPTORin STRUfile. For example:

NUMERICAL_ORBITAL
H_gga_8au_60Ry_2s1p.orb
O_gga_7au_60Ry_2s2p1d.orb

NUMERICAL_DESCRIPTOR
jle.orb


NUMERICAL_DESCRIPTOR jle.orb



• Default: 0

### deepks_scf

• Type: Boolean

• Description: only when deepks is enabled in LCAO calculation can this variable set to 1. Then, a trained, traced model file is needed for self-consistent field iteration in DeePKS method.

• Default: 0

### deepks_model

• Type: String

• Description: the path of the trained, traced NN model file (generated by deepks-kit). used when deepks_scf is set to 1.

• Default: None

### bessel_lmax

• Type: Integer

• Description: the projectors used in DeePKS are bessel functions. To generate such projectors, set calculation type to gen_bessel and run ABACUS. The lmax of Bessel functions is specified using bessel_lmax. See also calculation.

• Default: 2

### bessel_rcut

• Type: Real

• Description: cutoff radius of bessel functions. See also bessel_lmax.

• Default: 6.0

### bessel_tol

• Type: Real

• Description: tolerance when searching for the zeros of bessel functions. See also bessel_lmax.

• Default: 1.0e-12

### deepks_bandgap

• Type: Boolean

• Description: whether to include deepks bandgap correction.

• Default: False

### deepks_out_unittest

• Type: Boolean

• Description: this is used to generate some files for constructing DeePKS unit test. Not relevant when running actual calculations. When set to 1, ABACUS needs to be run with only 1 process.

• Default: False

## OFDFT: orbital free density functional theory

### of_kinetic

• Type: string

• Description: the type of kinetic energy density functional, including tf, vw, wt, and tf+.

• Default: wt

### of_method

• Type: string

• 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

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

• energy: total 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: Double

• Description: tolerance of the energy change (in Ry) for determining the convergence.

• Default: 2e-6

### of_tolp

• Type: Double

• Description: tolerance of potential (in a.u.) for determining the convergence.

• Default: 1e-5

### of_tf_weight

• Type: Double

• Description: weight of TF KEDF.

• Default: 1

### of_vw_weight

• Type: Double

• Description: weight of vW KEDF.

• Default: 1

### of_wt_alpha

• Type: Double

• Description: parameter alpha of WT KEDF.

• Default: $$5/6$$

### of_wt_beta

• Type: Double

• Description: parameter beta of WT KEDF.

• Default: $$5/6$$

### of_wt_rho0

• Type: Double

• Description: the average density of system, in Bohr^-3.

• Default: 0

### of_hold_rho0

• Type: Boolean

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

• Default: 0

• Type: Boolean

• Description: If set to 1, the kernel of WT KEDF will be filled from file of_kernel_file, not from formula. Only usable for WT KEDF.

• Default: 0

### of_kernel_file

• Type: String

• Description: The name of WT kernel file.

• Default: WTkernel.txt

### of_full_pw

• Type: Boolean

• Description: If set to 1, ecut will be ignored while collecting planewaves, so that all planewaves will be used in FFT.

• Default: 1

### of_full_pw_dim

• Type: Integer

• Description: If of_full_pw = 1, the dimension of FFT will be restricted to be (0) either odd or even; (1) odd only; (2) even only. Note that 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 set of_full_pw_dim = 1 if nbspline != -1.

• Default: 0

## Electric field and dipole correction

These variables are relevant to electric field and dipole correction

### efield_flag

• Type: Boolean

• Description: If set to true, a saw-like potential simulating an electric field is added to the bare ionic potential.

• Default: false

### dip_cor_flag

• Type: Boolean

• Description: If dip_cor_flag == true and efield_flag == true, a dipole correction is also added to the bare ionic potential. If you want no electric field, parameter efield_amp should be zero. Must be used ONLY in a slab geometry for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE.

• Default: false

### efield_dir

• Type: Integer

• 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 = 0, 1 or 2. Used only if efield_flag == true.

• Default: 2

### efield_pos_max

• Type: Real

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

• Default: 0.5

### efield_pos_dec

• Type: Real

• Description: Zone in the unit cell where the saw-like potential decreases, 0 < efield_pos_dec < 1. Used only if efield_flag == true.

• Default: 0.1

### efield_amp

• Type: Real

• Description: Amplitude of the electric field, in Hartree a.u.; 1 a.u. = 51.4220632*10^10 V/m. Used only if efield_flag == true. 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. Important: the change of slope of this potential must be located in the empty region, or else unphysical forces will result.

• Default: 0.0

## Gate field (compensating charge)

These variables are relevant to gate field (compensating charge)

### gate_flag

• Type: Boolean

• Description: In the case of charged cells, setting gate_flag == true represents the addition of compensating charge by a charged plate, which is placed at zgate. Note that the direction is specified by efield_dir.

• Default: false

### zgate

• Type: Real

• Description: Specify the position of the charged plate in units of the unit cell (0 <= zgate < 1).

• Default: 0.5

### block

• Type: Boolean

• Description: Add a potential barrier to the total potential to avoid electrons spilling into the vacuum region for electron doping. Potential barrier is from block_down to block_up and has a height of block_height. If dip_cor_flag == true, efield_pos_dec is used for a smooth increase and decrease of the potential barrier.

• Default: false

### block_down

• Type: Real

• Description: Lower beginning of the potential barrier in units of the unit cell size (0 <= block_down < block_up < 1).

• Default: 0.45

### block_up

• Type: Real

• Description: Upper beginning of the potential barrier in units of the unit cell size (0 <= block_down < block_up < 1).

• Default: 0.55

### block_height

• Type: Real

• Description: Height of the potential barrier in Rydberg.

• Default: 0.1

## Exact Exchange

These variables are relevant when using hybrid functionals

### exx_hybrid_alpha

• Type: Real

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

• Default: 0.25

### exx_hse_omega

• Type: Real

• Description: range-separation parameter in HSE functional, such that $$1/r=erfc(\omega r)/r+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. If this parameter is set to 0, it will start with a GGA-Loop, and then Hybrid-Loop, in which EXX Hamiltonian $$H_{exx}$$ is updated with electronic iterations. If this parameter is set to 1, 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: 1

### exx_hybrid_step

• Type: Integer

• Description: This variable indicates the maximal electronic iteration number in the evaluation of Fock exchange.

• Default: 100

### exx_lambda

• Type: Real

• 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 1d-4.

• Default: 0

### 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 1d-4.

• Default: 0

### 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: 0

### 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 1d-4.

• Default: 0

### 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 1d-5.

• 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 1d-7.

• Default: 0

### 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 HSE1, setting it to 1 is enough. But for PBE0, a much larger number must be used.

• Default: 10

### 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 is where atom pairs are simply distributed by their orders. hmeans is a distribution where the balance in time is achieved on each processor, hence if the memory is sufficient, this is the recommended method. kmeans1 and kmeans2 are two methods where the k-means clustering method is used to reduce memory requirement. They might be necessary for very large systems.

• Default: htime

### exx_opt_orb_lmax

• Type: Integer

• Description: See also the entry dft_functional. This parameter is only relevant when dft_functional=opt_orb. The radial part of opt-ABFs are generated as linear combinations of spherical Bessel functions. exx_opt_orb_lmax gives the maximum l of the spherical Bessel functions. A reasonable choice is 2.

• Default: 0

### exx_opt_orb_ecut

• Type: Real

• Description: See also the entry dft_functional. This parameter is only relevant when dft_functional=opt_orb. A plane wave basis is used to optimize the radial ABFs. This parameter thus gives the cut-off of plane wave expansion, in Ry. A reasonable choice is 60.

• Default: 0

### exx_opt_orb_tolerence

• Type: Real

• Description: See also the entry dft_functional. This parameter is only relevant when dft_functional=opt_orb. exx_opt_orb_tolerence determines the threshold when solving for the zeros of spherical Bessel functions. A reasonable choice is 1e-12.

• Default: 0

## Molecular dynamics

These variables are used to control the molecular dynamics calculations.

### md_type

• Type: Integer

• Description: control the algorithm to integrate the equation of motion for md. When md_type is set to 0, md_thermostat is used to specify the thermostat based on the velocity Verlet algorithm.

• -1: FIRE method to relax;

• 0: velocity Verlet algorithm (default: NVE ensemble);

• 1: Nose-Hoover style non-Hamiltonian equations of motion;

• 2: NVT ensemble with Langevin method;

• 4: MSST method;

Note: when md_type is set to 1, md_tfreq is required to stablize temperature. It is an empirical parameter whose value is system-dependent, ranging from 1/(40*md_dt) to 1/(100*md_dt). An improper choice of its value might lead to failure of job.

• Default: 1

### md_thermostat

• Type: String

• Description: specify the thermostat based on the velocity Verlet algorithm (useful when md_type is set to 0).

• nve: NVE ensemble.

• anderson: NVT ensemble with Anderson thermostat, see the parameter md_nraise.

• berendsen: NVT ensemble with Berendsen thermostat, see the parameter md_nraise.

• rescaling: NVT ensemble with velocity Rescaling method 1, see the parameter md_tolerance.

• rescale_v: NVT ensemble with velocity Rescaling method 2, see the parameter md_nraise.

• Default: NVE

### md_nstep

• Type: Integer

• Description: the total number of md steps.

• Default: 10

### md_restart

• Type: Boolean

• Description: to control whether restart md.

• 0: When set to 0, ABACUS will calculate md normally.

• 1: When set to 1, ABACUS will calculate md from the last step in your test before.

• Default: 0

### md_dt

• Type: Real

• Description: This is the time step(fs) used in md simulation.

• Default: 1.0

### md_tfirst, md_tlast

• Type: Real

• Description: This is the temperature (K) used in md simulation. 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

### md_dumpfreq

• Type: Integer

• Description: This is the frequency to dump md information.

• Default: 1

### md_restartfreq

• Type: Integer

• Description: This is the frequency to output restart information.

• Default: 5

### md_seed

• Type: Integer

• Description:

• md_seed < 0: No srand() in MD initialization.

• md_seed >= 0: srand(md_seed) in MD initialization.

• Default: -1

### md_tfreq

• Type: Real

• Description: control the frequency of the 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.

• Default: 1/40/md_dt

### md_tchain

• Type: Integer

• Description: number of thermostats coupled with the particles in the Nose Hoover Chain method.

• Default: 1

### md_pmode

• Type: String

• Description: specify the NVT or NPT ensemble based on the Nose-Hoover style non-Hamiltonian equations of motion.

• none: NVT ensemble.

• iso: NPT ensemble with isotropic cetl fluctuations.

• aniso: NPT ensemble with anisotropic cetl fluctuations.

• tri: NPT ensemble with non-orthogonal (triclinic) simulation box.

• Default: none

### md_pcouple

• Type: String

• Description: the coupled lattice vectors will scale proportionally.

• 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: This is the target pressure (KBar) used in npt ensemble simulation, 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

### md_pfreq

• Type: Real

• Description: control the frequency of the 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.

• Default: 1/400/md_dt

### md_pchain

• Type: Integer

• Description: number of thermostats coupled with the barostat in the Nose Hoover Chain method.

• Default: 1

### lj_rcut

• Type: Real

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

• Default: 8.5 (for He)

### lj_epsilon

• Type: Real

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

• Default: 0.01032 (for He)

### lj_sigma

• Type: Real

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

• Default: 3.405 (for He)

### pot_file

• Type: String

• Description: The filename of potential files for CMD such as DP.

• Default: graph.pb

### msst_direction

• Type: Integer

• Description: the direction of shock wave for MSST.

• Default: 2 (z direction)

### msst_vel

• Type: Real

• Description: the velocity of shock wave (Angstrom/fs) for MSST.

• Default: 0.0

### msst_vis

• Type: Real

• Description: artificial viscosity (mass/length/time) for MSST.

• Default: 0.0

### msst_tscale

• Type: Real

• Description: reduction in initial temperature (0~1) used to compress volume in MSST.

• Default: 0.01

### msst_qmass

• Type: Real

• Description: Inertia of extended system variable. Used only when md_type is 4, you should set a number that is larger than 0. Note that Qmass of NHC is set by md_tfreq.

• Default: No default

### md_damp

• Type: Real

• Description: damping parameter (fs) used to add force in Langevin method.

• Default: 1.0

### md_tolerance

• Type: Real

• Description: Tolerance for velocity rescaling. Velocities are rescaled if the current and target temperature differ more than md_tolerance (Kelvin).

• Default: 100.0

### 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

## DFT+U correction

These variables are used to control DFT+U correlated parameters

### dft_plus_u

• Type: Boolean

• Description: If set to 1, ABCUS will calculate plus U correction, which is especially important for correlated electron.

• Default: 0

### orbital_corr

• Type: Integer

• Description: $$l_1,l_2,l_3,\ldots$$ for atom type 1,2,3 respectively.(usually 2 for d electrons and 3 for f electrons) .Specify which orbits need plus U correction for each atom. If set to -1, the correction would not be calculated for this atom.

• Default: None

### hubbard_u

• Type: Real

• Description: Hubbard Coulomb interaction parameter U(ev) in plus U correction, which should be specified for each atom unless Yukawa potential is used. ABACUS uses a simplified scheme that only needs U and J for each atom.

• Default: 0.0

### hund_j

• Type: Real

• Description: Hund exchange parameter J(ev) in plus U correction, which should be specified for each atom unless Yukawa potential is used. ABACUS uses a simplified scheme that only needs U and J for each atom.

• Default: 0.0

### yukawa_potential

• Type: Boolean

• Description: whether to use the local screen Coulomb potential method to calculate the value of U and J. If this is set to 1, hubbard_u and hund_j do not need to be specified.

• Default: 0

### yukawa_lambda

• Type: Real

• Description: The screen length of Yukawa potential. Relevant if yukawa_potential is set to 1. If left to default, we will calculate the screen length 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: Boolean

• Description: whether turn on occupation matrix control method or not

• Default: 0

## vdW correction

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

### vdw_method

• Type: String

• Description: If set to d2 ,d3_0 or d3_bj, ABACUS will calculate corresponding vdW correction, which is DFT-D2, DFT-D3(0) or DFTD3(BJ) method. And this correction includes energy and forces. none means that no vdW-corrected method has been used.

• Default: none

### vdw_s6

• Type: Real

• Description: This scale factor is to optimize the interaction energy deviations. For DFT-D2, it is found to be 0.75 (PBE), 1.2 (BLYP), 1.05 (B-P86), 1.0 (TPSS), and 1.05 (B3LYP). For DFT-D3, 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.75 if vdw_method is chosen to be d2; 1.0 if vdw_method is chosen to be d3_0 or d3_bj

### vdw_s8

• Type: Real

• Description: This scale factor is only relevant for D3(0) and D3(BJ) methods. 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 chosen to be d3_0; 0.7875 if vdw_method is chosen to be d3_bj

### vdw_a1

• Type: Real

• Description: This damping function parameter is relevant for D3(0) and D3(BJ) methods. 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 chosen to be d3_0; 0.4289 if vdw_method is chosen to be d3_bj

### vdw_a2

• Type: Real

• Description: This damping function parameter is only relevant for the DFT-D3(BJ) approach. 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 chosen to be d3_0; 4.4407 if vdw_method is chosen to be d3_bj

### vdw_d

• Type: Real

• Description: The variable is to control the damping rate of damping function of DFT-D2.

• Default: 20

### vdw_abc

• Type: Integer

• Description: The variable is to control whether three-body terms are calculated for DFT-D3 approaches, including D3(0) and D3(BJ). If set to 1, ABACUS will calculate three-body term, otherwise, the three-body term is not included.

• Default: 0

### vdw_C6_file

• Type: String

• Description: This variable is relevant if the user wants to manually set the $$C_6$$ parameters in D2 method. It gives the name of the file which contains the list of $$C_6$$ parameters for each element.

If not set, ABACUS will use the default $$C_6$$ Parameters stored in the program. The default values of $$C_6$$ for elements 1_H up to 86_Rn can be found by searching for C6_default in the source code. The unit is Jnm6/mol.

Otherwise, if user wants to manually set the $$C_6$$ Parameters, they should provide a file containing the $$C_6$$ parameters to be used. 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

• Description: This variable is relevant if the user wants to manually set the $$C_6$$ parameters in D2 method. It specified the unit of the supplied $$C_6$$ parameters. Allowed values are: Jnm6/mol (meaning J·nm^{6}/mol) and eVA(meaning eV·Angstrom)

• Default: Jnm6/mol

### vdw_R0_file

• Type: String

• Description: This variable is relevant if the user wants to manually set the $$R_0$$ parameters in D2 method. If not set, ABACUS will use the default $$C_6$$ Parameters stored in the program. The default values of $$C_6$$ for elements 1_H up to 86_Rn can be found by searching for R0_default in the source code. The unit is Angstrom.

Otherwise, if the user wants to manually set the $$C_6$$ Parameters, they should provide a file containing the $$C_6$$ parameters to be used. 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

• Description: This variable is relevant if the user wants to manually set the $$R_0$$ parameters in D2 method. It specified the unit of the supplied $$C_6$$ parameters. Allowed values are: A(meaning Angstrom) and Bohr.

• Default: A

### vdw_cutoff_type

• Type: String

• Description: When applying Van-der-Waals correction in periodic systems, a cutoff radius needs to be supplied to avoid infinite summation. In ABACUS, we restrict the range of correction to a supercell centered around the unit cell at origin.

In ABACUS, we provide two ways to determine the extent of the supercell.

When vdw_cutoff_type is set to radius, the supercell is chosen such that it is contained in a sphere centered at the origin. The radius of the sphere is specified by vdw_cutoff_radius.

When vdw_cutoff_type is set to period, the extent of the supercell is specified explicitly using keyword vdw_cutoff_period.

• Type: Real

• Description: If vdw_cutoff_type is set to radius, this variable specifies the radius of the cutoff sphere. For DFT-D2, the default value is 56.6918, while for DFT-D3, the default value is 95.

• Default: 56.6918 if vdw_method is chosen to be d2; 95 if vdw_method is chosen to be d3_0 or d3_bj

• Type: String

• Description: If vdw_cutoff_type is set to radius, this variable specifies the unit of vdw_cutoff_radius. Two values are allowed: A(meaning Angstrom) and Bohr.

• Default: Bohr

### vdw_cutoff_period

• Type: Integer Integer Integer

• Description: If vdw_cutoff_type is set to period, the three integers supplied here will 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

• Description: Only relevant for D3 correction. The cutoff radius when calculating coordination numbers.

• Default: 40

### vdw_cn_thr_unit

• Type: String

• Description: Unit of the coordination number cutoff. Two values are allowed: A(meaning Angstrom) and Bohr.

• Default: Bohr

## Berry phase and wannier90 interface

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

### berry_phase

• Type: Integer

• Description: 1, calculate berry phase; 0, not calculate berry phase.

• Default: 0

### gdir

• Type: Integer

• Description:

• 1: calculate the polarization in the direction of the lattice vector a_1 that is defined in STRU file.

• 2: calculate the polarization in the direction of the lattice vector a_2 that is defined in STRU file.

• 3: calculate the polarization in the direction of the lattice vector a_3 that is defined in STRU file.

• Default: 3

### towannier90

• Type: Integer

• Description: 1, generate files for wannier90 code; 0, no generate.

• Default: 0

### nnkpfile

• Type: String

• Description: the file name when you run “wannier90 -pp …”.

• Default: seedname.nnkp

### wannier_spin

• Type: String

• Description: If nspin is set to 2,

• up: calculate spin up for wannier function.

• down: calculate spin down for wannier function.

• Default: up

## TDDFT: time dependent density functional theory

### td_scf_thr

• Type: Real

• Description: Accuracy of electron convergence when doing time-dependent evolution.

• Default: 1e-9

### td_dt

• Type: Real

• Description: Time-dependent evolution time step. (fs)

• Default: 0.02

### td_force_dt

• Type: Real

• Description: Time-dependent evolution force changes time step. (fs)

• Default: 0.02

### td_vext

• Type: Integer

• Description:

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

• 0: no extern laser field.

• Default: 0

### td_vext_dire

• Type: Integer

• Description:

• 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_timescale

• Type: Real

• Description: Time range of external electric field application. (fs)

• Default: 0.5

### td_vexttype

• Type: Integer

• Description:

• 1: Gaussian-type light field.

• 2: Delta function form light field.

• 3: Trigonometric function form light field.

• Default: 1

### td_vextout

• Type: Integer

• Description:

• 1: Output external electric field.

• 0: do not Output external electric field.

• Default: 0

### td_dipoleout

• Type: Integer

• Description:

• 1: Output dipole.

• 0: do not Output dipole.

• Default: 0

### ocp

• Type: Boolean

• Description: choose whether calculating constrained DFT or not.

• 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.

• Default:0

### 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

### td_val_elec_01

• Type: Integer

• Description: Only useful when calculating the dipole. Specifies the number of valence electron associated with the first element.

• Default: 1.0

### td_val_elec_02

• Type: Integer

• Description: Only useful when calculating the dipole. Specifies the number of valence electron associated with the second element.

• Default: 1.0

### td_val_elec_03

• Type: Integer

• Description: Only useful when calculating the dipole. Specifies the number of valence electron associated with the third element.

• Default: 1.0

## Variables useful for debugging

### nurse

• Type: Boolean

• Description: If set to 1, the Hamiltonian matrix and S matrix in each iteration will be written in output.

• Default: 0

### t_in_h

• Type: Boolean

• Description: If set to 0, then kinetic term will not be included in obtaining the Hamiltonian.

• Default: 1

### vl_in_h

• Type: Boolean

• Description: If set to 0, then local pseudopotential term will not be included in obtaining the Hamiltonian.

• Default: 1

### vnl_in_h

• Type: Boolean

• Description: If set to 0, then non-local pseudopotential term will not be included in obtaining the Hamiltonian.

• Default: 1

### test_force

• Type: Boolean

• Description: If set to 1, then detailed components in forces will be written to output.

• Default: 0

### test_stress

• Type: Boolean

• Description: If set to 1, then detailed components in stress will be written to output.

• Default: 0

### colour

• Type: Boolean

• Description: If set to 1, output to terminal will have some color.

• Default: 0

### test_skip_ewald

• Type: Boolean

• Description: If set to 1, then ewald energy will not be calculated.

• Default: 0

## Electronic conductivities

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

Onsager coefficiencies:

$$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

• Description: If set to 1, electronic conductivities will be calculated. Only supported in calculations of SDFT and KSDFT_PW.

• Default: 0

### cond_nche

• Type: Integer

• Description: Chebyshev expansion orders for stochastic Kubo Greenwood. Only used when the calculation is SDFT.

• Default: 20

### cond_dw

• Type: Real

• Description: Frequency interval ($$d\omega$$) for frequency-dependent conductivities. The unit is eV.

• Default: 0.1

### cond_wcut

• Type: Real

• Description: Cutoff frequency for frequency-dependent conductivities. The unit is eV.

• Default: 10.0

### cond_wenlarge

• Type: Integer

• Description: Control the t interval: dt = $$\frac{\pi}{\omega_{cut}\times\omega enlarge}$$

• Default: 10

### cond_fwhm

• Type: Integer

• Description: We use gaussian functions to approximate $$\delta(E)\approx \frac{1}{\sqrt{2\pi}\Delta E}e^{-\frac{E^2}{2{\Delta E}^2}}$$. FWHM for conductivities, $$FWHM=2*\sqrt{2\ln2}\cdot \Delta E$$. The unit is eV.

• Default: 0.3

### cond_nonlocal

• Type: Boolean

• Description: Conductivities need to calculate velocity matrix $$\bra{\psi_i}\hat{v}\ket{\psi_j}$$ and $$m\hat{v}=\hat{p}+\frac{im}{\hbar}[\hat{V}_{NL},\hat{r}]$$. If cond_nonlocal is false, $$m\hat{v}\approx\hat{p}$$.

• Default: True

## 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 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: If set to 1, an implicit solvation correction is considered.

• Default: 0

### eb_k

• Type: Real

• Description: The relative permittivity of the bulk solvent, 80 for water. Used only if imp_sol == true.

• Default: 80

### tau

• Type: Real

• Description: The effective surface tension parameter, which describes the cavitation, the dispersion, and the repulsion interaction between the solute and the solvent that are not captured by the electrostatic terms. The unit is $$Ry/Bohr^{2}$$.

• Default: 1.0798e-05

### sigma_k

• Type: Real

• Description: We assume a diffuse cavity that is implicitly determined by the electronic structure of the solute. sigma_k is the parameter that describes the width of the diffuse cavity.

• Default: 0.6

### nc_k

• Type: Real

• Description: It determines at what value of the electron density the dielectric cavity forms. The unit is $$Bohr^{-3}$$.

• Default: 0.00037