Skip to content

Latest commit

 

History

History
1456 lines (1075 loc) · 66.9 KB

input-main.md

File metadata and controls

1456 lines (1075 loc) · 66.9 KB

INPUT file

Structure of the file

Below is an example INPUT file with some of the most important parameters that need to be set:

INPUT_PARAMETERS
#Parameters (General)
ntype 1
nbands 4
#Parameters (Accuracy)
ecutwfc 60

Parameters list starts with key word INPUT_PARAMETERS. Any content before INPUT_PARAMETERS will be ignored.

Any line starting with # or / will also be ignored.

Each parameter value is provided by specifying the name of the input variable and then putting the value after the name, separated by one or more blank characters(space or tab). The following characters(≤ 150) in the same line will be neglected.

Depending on the input variable, the value may be an integer, a real number or a string. The parameters can be given in any order, but only one parameter should be given per line.

Furthermore, if a given parameter name appeared more than once in the input file, only the last value will be taken.

Note: if a parameter name is not recognized by the program, the program will stop with an error message.

In the above example, the meanings of the parameters are:

  • ntype : how many types of elements in the unit cell
  • nbands : the number of bands to be calculated
  • ecutwfc : the plane-wave energy cutoff for the wave function expansion (UNIT: Rydberg)

back to top

List of keywords

System variables

This part of 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

    back to top

  • ntype

    • Type: Integer
    • Description: Number of different atom species in this calculations. 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

    back to top

  • calculation

    • Type: String

    • Description: Specify the type of calculation.

      • scf: do self-consistent electronic structure calculation
      • relax: do structure relaxation calculation, one can ues ‘nstep’ to decide how many ionic relaxations you want.
      • cell-relax: do 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, ethr should be <= 1d-3.
      • istate: Please see the explanation for variable nbands_istate.
      • ienvelope: Please see the explanation for variable nbands_istate.
      • md: molecular dynamics

      Note: istate and ienvelope only work for LCAO basis set and are not working right now.

    • Default: scf

    back to top

  • dft_functional

    • Type: String

    • Description: In our package, the XC functional can either be set explicitly using the dft_functional keyword as explained below, or set implicitly according to the XC functional information read from pseudopotential file. The user should ensure that the XC functional set in the INPUT file and the pseudopotential file are consistent. If more than one element is present in the system, make sure all of pseudopotentials have the same XC functional. Currently only LDA and GGA are supported.

      To be specific, we briefly explain the format of the pseudopotential file and the key information it contains. There are a few lines in Si’s GGA pseudopotential file Si_ONCV_PBE-1.0.upf:

      ...
      <PP_HEADER
      generated="Generated using ONCVPSP code by D. R. Hamann"
      author="Martin Schlipf and Francois Gygi"
      date="150105"
      comment=""
      element="Si"
      pseudo_type="NC"
      relativistic="scalar"
      is_ultrasoft="F"
      is_paw="F"
      is_coulomb="F"
      has_so="F"
      has_wfc="F"
      has_gipaw="F"
      core_correction="F"
      functional="PBE"
      z_valence=" 4.00"
      total_psenergy=" -3.74274958433E+00"
      rho_cutoff=" 6.01000000000E+00"
      

      Possible values of this variable are:

      • none: the functional is specified implicity by the input pseudopotential file
      • lda: Perdew-Zunger local density approximation
      • pbe: Perdew-Burke-Ernzerhof general gradient approximation

      If the functional specified by the user is not consistent with the pseudopotential file, the program will stop with an error message.

    • Default: none

    back to top

  • pseudo_type

    • Type: String
    • Description: the format of pseudopotential files. Accepted value s are:
      • upf : .UPF format
      • vwr : .vwr format
      • upf201 : the new UPF format
      • blps : bulk local pseudopotential
    • Default : upf

    back to top

  • npool

    • Type: Integer
    • Description: devide all processors into npool 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

    back to top

  • symmetry

    • Type: Integer
    • Description: takes value 0 and 1, if set to 1, symmetry analysis will be performed to determine the type of Bravais lattice and associated symmetry operations.
    • Default: 0

    back to top

  • pseudo_rcut

    • Type: Real
    • Description: Cut-off of radial integration for pseudopotentials, in Bohr.
    • Default: 15

    back to top

  • renormwithmesh

    • 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

    back to top

  • nelec

    • Type: Real
    • Description: If >0.0, this denotes 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

    back to top

  • tot_magnetization

    • Type: Real
    • Description: Total magnetization of the system.
    • Default: 0.0

    back to top

  • 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

    back to top

  • latname

    • Type: String
    • Description: Specifies the type of Bravias lattice. When set to "test", the three lattice vectors are supplied explicitly in STRU file. When set to 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:
      • "test": free strcture.
      • "sc": simple cubie.
      • "fcc": face-centered cubic.
      • "bcc": body-centered cubic.
      • "hexagonal": hexagonal.
      • "trigonal": trigonal.
      • "st": simple tetragonal.
      • "bct": body-centered tetragonal.
      • "so": orthorhombic.
      • "baco": base-centered orthorhombic.
      • "fco": face-centered orthorhombic.
      • "bco": body-centered orthorhombic.
      • "sm": simple monoclinic.
      • "bacm": base-centered monoclinic.
      • "triclinic": triclinic.
    • Default: "test"

    back to top

  • start_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"

    back to top

  • seed

    • Type: Integer
    • Description: Only useful for plane wave basis only now. It is the random seed to initialize wave functions. Only positive integers are avilable.
    • Default:0

    back to top

  • start_charge

    • 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 this to ‘atomic’, the density is starting from summation of atomic density of single atoms. If set this to ‘file’, the density will be read in from 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_charge = 1 in INPUT file.
    • Default:atomic

    back to top

  • start_pot

    • Type: String
    • Description: It indicates the type of starting potential. If set this to ‘atomic’, the density is starting from summation of atomic potentials of single atoms. If set this to ‘file’, the density will be read in from file.
    • Default: atomic

    back to top

  • set_vel

    • Type: Boolean
    • Description: Read the atom velocity from the atom file (STRU) if set to true.
    • Default: false

    back to top

  • diago_proc

    • Type: Integer
    • Descrption: 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 same as 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 leaving it to default value.
    • Default: 0

    back to top

Variables related to input files

This part of variables are used to control input files related parameters.

  • atom_file

    • Type: String
    • Description: This parameter specifies the name of structure file which contains various information about atom species, including pseudopotential files, local orbitals files, cell information, atom positions, and whether atoms should be allowed to move.
    • Default: STRU

    back to top

  • kpoint_file

    • Type: String
    • Description: This parameter specifies the name of k-points file. Note that if you use atomic orbitals as basis, and you only use gamma point, you don’t need to have k-point file in your directory, ABACUS will automatically generate ‘KPT’ file. Otherwise, if you use more than one k-point, please do remember the algorithm in ABACUS is different for gamma only and various k-point dependent simulations. So first you should turn off the k-point algorithm by set gamma_only = 0 in INPUT and then you should setup your own k-points file.
    • Default: KPT

    back to top

  • pseudo_dir

    • Type: String
    • Description: This parameter specifies pseudopotential directory.
    • Default: ./

    back to top

  • orbital_dir

    • Type: String
    • Description: This parameter specifies orbital file directory.
    • Default: ./

    back to top

  • read_file_dir

    • Type: String
    • Description: when the program needs to read files such as electron density(SPIN1_CHG) as a starting point, this variables tells the location of the files. For example, './' means the file is located in the working directory.
    • Default: OUT.$suffix

    back to top

Plane wave related variables

This part of variables are used to control the plane wave related parameters.

  • ecutwfc

    • Type: Real
    • Description: Energy cutoff for plane wave functions, the unit is Rydberg. Note that even for localized orbitals basis, you still need to setup a energy cutoff for this system. Because our local pseudopotential parts and the related force are calculated from plane wave basis set, etc. Also, because our orbitals are generated by matching localized orbitals to a chosen set of wave functions from certain energy cutoff, so this set of localize orbitals are most accurate under this same plane wave energy cutoff.
    • Default: 50

    back to top

  • nx, ny, nz

    • Type: Integer
    • Description: If set to a positive number, then the three variables specify the numbers of FFT grid points in x, y, z directions, respectively. If set to 0, the number will be calculated from ecutwfc.
    • Default: 0

    back to top

  • ethr

    • Type: Real
    • Description: Only used when you use diago_type = cg or diago_type = david. It indicates the threshold for the first electronic iteration, from the second iteration the ethr will be updated automatically. For nscf calculations with planewave basis set, ethr should be <= 1d-3.
    • Default: 0.01

    back to top

  • diago_cg_maxiter

    • Type: Integer
    • Description: Only useful when you use ks_solver = cg or ks_solver = dav. It indicates the maximal iteration number for cg/david method.
    • Default: 40

    back to top

  • diago_david_ndim

    • Type: Integer
    • Description: Only useful when you use ks_solver = dav. It indicates the maximal dimension for the Davidson method.
    • Default: 10

    back to top

Numerical atomic orbitals related variables

This part of variables are used to control the numerical atomic orbitals related parameters.

  • nb2d

    • Type: Integer
    • Description: In LCAO calculations, we arrange the total number of processors in an 2D array, so that we can partition the wavefunction matrix (number of bands*total size of atomic orbital basis) and distribute them in this 2D array. When the system is large, we group processors into sizes of nb2d, so that multiple processors take care of one row block (a group of atomic orbitals) in the wavefunction matrix. If set to 0, nb2d will be automatically set in the program according to the size of atomic orbital basis:
      • if size <= 500 : nb2d = 1
      • if 500 < size <= 1000 : nb2d = 32
      • if size > 1000 : nb2d = 64;
    • Default: 0

    back to top

  • lmaxmax

    • Type: Integer
    • Description: If not equals to 2, then the maximum l channels on LCAO is set to lmaxmax. If 2, then the number of l channels will be read from the LCAO data sets. Normally no input should be supplied for this variable so that it is kept as its default.
    • Default: 2.

    back to top

  • lcao_ecut

    • Type: Real
    • Description: Energy cutoff when calculating LCAO two-center integrals. In Ry.
    • Default: 50

    back to top

  • lcao_dk

    • Type: Real
    • Description: Delta k for 1D integration in LCAO
    • Default: 0.01

    back to top

  • lcao_dr

    • Type: Real
    • Description: Delta r for 1D integration in LCAO
    • Default: 0.01

    back to top

  • lcao_rmax

    • Type: Real
    • Description: Max R for 1D two-center integration table
    • Default: 30

    back to top

  • search_radius

    • Type: Real
    • Description: Set the search radius for finding neighbouring atoms. If set to -1, then the radius will be set to maximum of projector and orbital cut-off.
    • Default: -1

    back to top

  • search_pbc

    • Type: Boolean
    • Description: In searching for neighbouring atoms, if set to 1, then periodic images will also be searched. If set to 0, then periodic images will not be searched.
    • Default: 1

    back to top

Electronic structure

This part of variables are used to control the electronic structure and geometry relaxation calculations.

  • basis_type

    • Type: String
    • Description: This is very important parameters 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

    back to top

  • ks_solver

    • Type: String

    • Description: It’s about choice of diagonalization methods for 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.
      • hpseps: old method, still used.
      • lapack: lapack can be used for localized orbitals, but is only used for single processor.

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

      hpseps 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)

    back to top

  • nbands

    • Type: Integer
    • Description: Number of bands 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)
    • Default (nspin=2): max(1.2*nelec, nelec+20)

    back to top

  • nbands_istate

    • Type: Integer
    • Description: Only used when calculation = ienvelope or calculation = istate, this variable indicates how many bands around Fermi level you would like to calculate. ienvelope means to calculate the envelope functions of wave functions ΨiμCΦμ, where Ψi is the ith wave function with the band index i and Φμ is the localized atomic orbital set. istate means to calculate the density of each wave function 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_lowf = 1.
    • Default: 5

    back to top

  • 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.
    • Default: 1

    back to top

  • occupations

    • Type: String
    • Description: Specifies how to calculate the occupations of bands. Available options are:
      • 'smearing' : gaussian smearing for metals; see also variables smearing and sigma.
      • 'tetrahedra' : Tetrahedron method, Bloechl's version: P.E. Bloechl, PRB 49, 16223 (1994). Requires a uniform grid of k-points that are automatically generated. Well suited for calculation of DOS, less so (because not variational) for force/optimization/dynamics calculations.
      • 'fixed' : for insulators with a gap
    • Default: 'smearing'

    back to top

  • smearing

    • 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. The method recommends for metals.
    • Default: fixed

    back to top

  • sigma

    • Type: Real
    • Description: energy range for smearing, the unit is Rydberg.
    • Default: 0.001

    back to top

  • mixing_type

    • Type: String
    • Description: Charge mixing methods.
      • plain: Just simple mixing.
      • kerker: Use kerker method, which is the mixing method in G space.
      • pulay: Standard Pulay method.
      • pulay-kerker:
    • Default: pulay

    back to top

  • mixing_beta

    • Type: Real
    • Description: mixing parameter: 0 means no new charge
    • Default: 0.7

    back to top

  • mixing_ndim

    • Type: Integer
    • Description: It indicates the mixing dimensions in Pulay, Pulay method use the density from previous mixing_ndim steps and do a charge mixing based on these density.
    • Default: 8

    back to top

  • mixing_gg0

    • Type: Real
    • Description: used in pulay-kerker mixing method
    • Default: 1.5

    back to top

  • gamma_only

    • Type: Integer
    • Description: It is an important parameter only to be used in localized orbitals set. It you set gamma_only = 1, ABACUS use gamma only, the algorithm is fast 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 gamma only algorithm.
    • Default: 0

    back to top

  • printe

    • Type: Integer
    • Description: Print out energy for each band for every printe steps
    • Default: 100

    back to top

  • niter

    • Type: Integer
    • Description:This variable indicates the maximal iteration number for electronic iterations.
    • Default: 40

    back to top

  • dr2

    • Type: Real
    • Description: An important parameter in ABACUS. It’s the threshold for electronic iteration. It represents the charge density error between two sequential density from electronic iterations. Usually for local orbitals, usually 1e-6 may be accurate enough.
    • Default:1e-06

    back to top

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

    back to top

Geometry relaxation

This part of variables are used to control the geometry relaxation.

  • nstep

    • Type: Integer
    • Description: The maximal number of ionic iteration steps, the minimal value is 1.
    • Default: 1

    back to top

  • 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

    back to top

  • 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.000388935 Ry/Bohr = 0.01 eV/Angstrom

    back to top

  • 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 recommendation value for using atomic orbitals is 0:04 eV/Angstrom.
    • Default: 0.01 eV/Angstrom

    back to top

  • force_set

    • Type: Integer
    • Description: Determines whether to output the force_set into a file named Force.dat or not. If 1, then force will be written; if 0, then the force will not be written.
    • Default: 0

    back to top

  • bfgs_w1

    • Type: Real
    • Description: This variable controls the Wolfe condition for BFGS algorithm used in geometry relaxation. You can look into paper Phys.Chem.Chem.Phys.,2000,2,2177 for more information.
    • Default: 0.01

    back to top

  • bfgs_w2

    • Type: Real
    • Description: This variable controls the Wolfe condition for BFGS algorithm used in geometry relaxation. You can look into paper Phys.Chem.Chem.Phys.,2000,2,2177 for more information.
    • Default: 0.5

    back to top

  • trust_radius_max

    • 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 trust_radius_max Bohr.
    • Default: 0.8

    back to top

  • trust_radius_min

    • 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 trust_radius_min Bohr , and the force convergence is still not achieved, the calculation will break down.
    • Default: 1e-5

    back to top

  • trust_radius_ini

    • 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 trust_radius_ini Bohr.
    • Default: 0.5

    back to top

  • 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

    back to top

  • 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: 10

    back to top

  • press1, 2, 3

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

    back to top

  • 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
      • 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
      • abc : fix all three axes during relaxation
    • Default: None

    back to top

  • move_method

    • Type: String
    • Description: The method to do geometry optimizations. If set to bfgs, using BFGS algorithm. If set to cg, using cg algorithm. If set to sd, using steepest-descent lgorithm.
    • Default: cg

    back to top

  • cg_threshold

    • 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 maximum of force on atoms is reduced below cg-threshold. Unit is eV/Angstrom.
    • Default: 0.5

    back to top

  • 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

Variables related to program output

This part of variables are used to control the output of properties.

  • mulliken

    • Type: Integer
    • Description: If set to 1, ABACUS will output the Mulliken population analysis result. The name of the output file is mulliken.txt
    • Default: 0

    back to top

  • out_charge

    • Type: Integer
    • Description: If set to 1, ABACUS will output the charge density on real space grid. The name of the density file is SPIN1_CHGCAR and SPIN2_CHGCAR (if nspin = 2). Suppose each density on grid has coordinate (x; y; z). The circle order of the density on real space grid is: z is the outer loop, then y and finally x (x is moving fastest).
    • Default: 0

    back to top

  • out_potential

    • Type: Integer
    • Description: If set to 1, ABACUS will output the local potential on real space grid. The name of the file is SPIN1_POT and SPIN2_POT (if nspin = 2). If set to 2, ABACUS will output the electrostatic potential on real space grid. The name of the file is ElecStaticPot and ElecStaticP ot_AV E (along the z-axis).
    • Default: 0

    back to top

  • out_dm

    • Type: Integer
    • Description: If set to 1, ABACUS will output the density matrix of localized orbitals, only useful for localized orbitals set. The name of the output file is SPIN1_DM and SPIN2_DM in the output directory.
    • Default: 0

    back to top

  • out_wf

    • Type: Integer
    • Description: Only used in planewave basis set. When set this variable to 1, it outputs the coefficients of wave functions into text files. The file names are WAVEFUNC$K.txt, where $K is the index of k point. When set this variable to 2, results are stored in binary files. The file names are WAVEFUNC$K.dat.
    • Default: 0

    back to top

  • out_lowf

    • Type: Integer
    • Description: Only used in localized orbitals set. If set to 1, ABACUS will output the wave functions coefficients.
    • Default: 0

    back to top

  • out_dos

    • Type: Integer
    • Description: Controls whether to output the density of state (DOS). For more information, refer to the worked example.
    • Default: 0

    back to top

  • out_band

    • Type: Integer
    • Description: Controls whether to output the band structure. For mroe information, refer to the worked example
    • Default: 0

    back to top

  • out_stru

    • Type: Boolean
    • Description: If set to 1, then tje structure files will be written after each ion step
    • Default: 0

    back to top

  • out_level

    • Type: String
    • Description: Controls the level of output. "ie" means write output at electron level; "i" means write additional output at ions level.
    • Default: ie

    back to top

  • out_alllog

    • Type: Integer
    • Description: determines whether to write log from all ranks in an MPI run. If set to be 1, then each rank will write detained running information to a file named running_${calculation}_(${rank}+1).log. If set to 0, log will only be written from rank 0 into a file named running_${calculation}.log.
    • Default: 0

    back to top

  • out_hs

    • Type: Boolean
    • Description: Only for LCAO calculations. When set to 1, ABACUS will generate two files data-H and data-S that store the Hamiltonian and S matrix in k space, respectively.
    • Default: 0

    back to top

  • out_r

    • Type: Boolean
    • Description: Only for LCAO and not gamma_only calculations. When set to 1, ABACUS will generate a file with name staring with data-rR-tr which stores overlap matrix as a function of R, in units of lattice vectors.
    • Default: 0

    back to top

  • out_hs2

    • Type: Boolean
    • Description: Only for LCAO and not gamma_only calculations. When set to 1, ABACUS will generate two files starting with data-HR-sparse and data-SR-sparse that store the Hamiltonian and S matrix in real space, respectively, as functions of R, in units of lattice vectors.
    • Default: 0

    back to top

Density of states

This part of 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.1

    back to top

  • dos_sigma

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

    back to top

  • dos_scale

    • Type: Real
    • Description: the energy range of dos output is given by (emax-emin)*(1+dos_scale), centered at (emax+emin)/2.
    • Default: 0.01

    back to top

Electric field

This part of variables are used to control the addition of an external electric field. It is achieved by adding a saw-like potential to the local ionic potential.

  • efield

    • Type: Bool
    • Description: Controls whether to add the external electric field. When set to 1, the electric field is turned on. When set to 0, there is no electric field.
    • Default: 0.

    back to top

  • edir

    • Type: Integer
    • Description: Tells which reciprocal lattice vector the external electric field aligns with. Allowed values are 1,2, and 3, corresponding to the three reciprocal lattice vectors respectively.
    • Default: 1

    back to top

  • emaxpos

    • Type: Real
    • Description: Position of the maximum of the saw-like potential along the reciprocal lattice vector specified by edir, 0 < emaxpos < 1.
    • Default: 0.5

    back to top

  • eopreg

    • Type: Real
    • Description: The saw-like potential increases in the region from (emaxpos+eopreg-1) to (emaxpos), then decreases to 0 until (emaxpos+eopreg), in units of the crystal vector edir. Important: the change of slope of this potential must be located in the empty region, or else unphysical forces will result.
    • Default: 0.1

    back to top

  • eamp

    • Type: Real
    • Description: Amplitude of the electric field, in atomic unit: 1 a.u. = 51.4220632*10^10 V/m.
    • Default: 0.001

    back to top

DeePKS

This part of variables are used to control the usage of DeePKS method (a comprehensive data-driven approach to improve accuracy of DFT).

  • out_descriptor

    • Type: Bool
    • 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
    
    • Default: 0

    back to top

  • lmax_descriptor

    • Type: Integer
    • Description: control the max angular momentum of descriptor basis.
    • Default: 0

    back to top

  • deepks_scf

    • Type: Bool
    • 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-consistant field iteration in DeePKS method.
    • Default: 0

    back to top

  • model_file

    • 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

    back to top

Exact Exchange

This part of variables are relevant when using hybrid functionals

  • exx_hybrid_type

    • Type: String

    • Description: Type of hybrid functional used. Options are "hf" (pure Hartree-Fock), "pbe0"(PBE0), "hse" (Note: in order to use HSE functional, LIBXC is required).

      If set to "no", then no hybrid functional is used (i.e.,Fock exchange is not included.)

      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: "no"

    back to top

  • exx_hybrid_alpha

    • Type: Real
    • Description: fraction of Fock exchange in hybrid functionals, so that EX=αFX+(1-α)E_X,LDA/GGA
    • Default: 0.25

    back to top

  • exx_hse_omega

    • Type:
    • Description: range-separation parameter in HSE functional, such that 1/r=erfc(ωr)/r+erf(ωr)/r.
    • Default: 0.11

    back to top adial integration for pseudopotentials, in Bohr. @@ -214,6 +279,13 @@ This part of variables are used to control general system para

    • Default: 0.3

    back to top

  • 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): φiφj~CkijPk. The size of the ABF (i.e. number of Pk) is reduced using principal component analysis. When a large PCA threshold is used, the number of ABF will be reduced, hence the calculations becomes faster. However this comes at the cost of computational accuracy. A relatively safe choice of the value is 1d-3.
    • Default: 0

    back to top

  • exx_c_threshold

    • Type: Real
    • Description: See also the entry exx_pca_threshold. Smaller components (less than exx_c_threshold) of the Ckij matrix is 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

    back to top

  • exx_v_threshold

    • Type: Real
    • Description: See also the entry exx_pca_threshold. With the approximation φiφj~CkijPk, the four-center integral in Fock exchange is expressed as (ik|jl)=Σa,bCaijVabCbkl, where Vab=(Pa|Pb) 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

    back to top

  • exx_dm_threshold

    • Type: Real
    • Description: The Fock exchange can be expressed as Σk,l(ik|jl)Dkl 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-3.
    • Default: 0

    back to top

  • 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-4.
    • Default: 0

    back to top

  • 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-6.
    • Default: 0

    back to top

  • exx_ccp_threshold

    • Type: Real
    • Description: It is related to the cutoff of on-site Coulomb potentials, currently not used.
    • Default: 1e-8

    back to top

  • 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

    back to top

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

    back to top

  • exx_opt_orb_lmax

    • Type: Integer
    • Description: See also the entry exx_hybrid_type. This parameter is only relevant when exx_hybrid_type="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

    back to top

  • exx_opt_orb_ecut

    • Type: Real
    • Description: See also the entry exx_hybrid_type. This parameter is only relevant when exx_hybrid_type="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

    back to top

  • exx_opt_orb_tolerence

    • Type: Real
    • Description: See also the entry exx_hybrid_type. This parameter is only relevant when exx_hybrid_type="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

    back to top

Molecular dynamics

This part of variables are used to control the molecular dynamics calculations.

  • md_type

    • Type: Integer
    • Description: control the ensemble to run md.
      • 0: When set to 0, ABACUS will use NVE ensemble;
      • 1: When set to 1, ABACUS will use NVT ensemble with Nose Hoover method;
      • 2: When set to 2, ABACUS will use NVT ensemble with Velosity Scaling method;
    • Default: 1

    back to top

  • md_potential

    • Type: String
    • Description: choose the potential type.
      • FP: First-Principles MD;
      • LJ: Leonard Jones potential;
      • DP: DeeP potential;
    • Default: FP

    back to top

  • md_rstmd

    • Type: Bool
    • Description: to control whether restart md.
      • 0:When set to 0, ABACUS will calculate md normolly.
      • 1:When set to 1, ABACUS will calculate md from last step in your test before.
    • Default: 0

    back to top

  • md_dt

    • Type: Double
    • Description: This is the time step(fs) used in md simulation .
    • Default: No default

    back to top

  • md_tfirst & md_tlast

    • Type: Double
    • Description: This is the temperature used in md simulation, md_tlast’s default value is md_tfirst. If md_tlast is setted and be different from the md_tfirst, ABACUS will automatically generate a linear temperature gradient file named ”ChangeTemp.dat”, you can also set this file according to your needs instead.
    • Default: No default

    back to top

  • md_qmass

    • Type: Double
    • Description: Inertia of extended system variable. Used only when md_type is 1 or 2, you should set a number which is larger than 0. If you want to autoset this by ABACUS,just set it to 0.
    • Default: 0

    back to top

  • md_dumpmdfred

    • Type: Integer
    • Description:This is the steps to control the frequence to output md information
    • Default: 1

    back to top

  • md_fixtemperature

    • Type: Integer
    • Description:
      • n:when set to n (n > 1), ABACUS will read the file "ChangeTemp.dat" and change system’s temperature every n steps
      • 0,1:When set to 0 or 1, ABACUS won’t change the temperature during running MD.
    • Default: 1

    back to top

  • NVT_control

    • Type: Integer
    • Description: Specifies which type of thermostat is used.
      • 1: Nose-Hoover
      • 2: Langevin
      • 3: Andersen
    • Default: 1

    back to top

  • NVT_tau

    • Type: Real
    • Description: Parameter for adjust effect of thermostat corresponding to the time scale of collision, in fs. If te input value is less than 1d-10, then it is automatically set in ABACUS.
    • Default: 0

    back to top

  • MNHC

    • Type: Integer
    • Description: Number of Nose-Hoover chains.
    • Default: 4

    back to top

  • md_ediff

    • Type: Real
    • Description: Parameter for constraining total energy change.
    • Default: 0.0001

    back to top

  • md_ediffg

    • Type: Real
    • Description: Parameter for constraining max force change
    • Default: 0.001

    back to top

  • rcut_lj

    • Type: Real
    • Description: Cut-off radius for Leonard Jones potential (angstrom).
    • Default: 8.5 (for He)

    back to top

  • epsilon_lj

    • Type: Real
    • Description: The value of epsilon for Leonard Jones potential (eV).
    • Default: 0.01032 (for He)

    back to top

  • sigma_lj

    • Type: Real
    • Description: The value of sigma for Leonard Jones potential (angstrom).
    • Default: 3.405 (for He)

    back to top

DFT+U correction

This part of variables are used to control DFT+U correlated parameters

  • dft_plus_u

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

    back to top

  • orbital_corr

    • Type: Int
    • 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 calculate for this atom.
    • Default: None

    back to top

  • 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 use. ABACUS use a simplified scheme which only need U and J for each atom.
    • Default: 0.0

    back to top

  • 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 use. ABACUS use a simplified scheme which only need U and J for each atom.
    • Default: 0.0

    back to top

  • yukawa_potential

    • Type: Bool
    • Description: whether 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

    back to top

  • omc

    • Type: Bool
    • Description: whether turn on occupation matrix control method or not
    • Default: 0

    back to top

VdW correction

This part of 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

    back to top

  • 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 values of this parameter in ABACUS is available for PBE. This variable will be set to default, if no vdW-corrected method has been used.
    • 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

    back to top

  • vdw_s8

    • Type: Real
    • Description: This scale factor is only the parameter of DFTD3 approachs including D3(0) and D3(BJ). Recommended values of this parameter with different DFT functionals can be found on the webpage. The default values of this parameter in ABACUS is available for PBE. This variable will be set to default, if no vdW-corrected method has been used.
    • Default: 0.722 if vdw_method is chosen to be d3_0; 0.7875 if vdw_method is chosen to be d3_bj

    back to top

  • vdw_a1

    • Type: Real
    • Description: This damping function parameter is only the parameter of DFT-D3 approachs including D3(0) and D3(BJ). Recommended values of this parameter with different DFT functionals can be found on the webpage. The default values of this parameter in ABACUS is available for PBE. This variable will be set to default, if no vdW-corrected method has been used.
    • Default: 1.217 if vdw_method is chosen to be d3_0; 0.4289 if vdw_method is chosen to be d3_bj

    back to top

  • vdw_a2

    • Type: Real
    • Description: This damping function arameter is only the parameter of DFT-D3(BJ) approach. Recommended values of this parameter with different DFT functionals can be found on the webpage. The default values of this parameter in ABACUS is available for PBE. This variable will be set to default, if no vdW-corrected method has been used.
    • Default: 1.0 if vdw_method is chosen to be d3_0; 4.4407 if vdw_method is chosen to be d3_bj

    back to top

  • vdw_d

    • Type: Real
    • Description: The variable is to control the dumping speed of dumping function of DFT-D2.
    • Default: 20

    back to top

  • vdw_abc

    • Type: Integer
    • Description: The variable is to control the calculation of three-body term of DFT-D3 approachs, 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

    back to top

  • vdw_C6_file

    • Type: String
    • Description: This variable which is useful only when set vdw_method to d2 specifies the name of each elemetent’s C6 Parameters file. If you don’t setup this, ABACUS will use the default C6 Parameters stored in the programme already. We’ve stored elements from 1_H to 86_Rn. Otherwise, if you want to use some new C6 Parameters, you should provide a file contained all the C6 Parameters ordered by periodic table of elements, from 1_H to the last elements you want.
    • Default: default

    back to top

  • vdw_C6_unit

    • Type: String
    • Description: This variable which is useful only when set vdw_method to d2 specifies unit of C6 Parameters. Two kinds of unit is available: J·nm6/mol (means J·nm6/mol) and eVA(means eV·Angstrom)
    • Default: Jnm6/mol

    back to top

  • vdw_R0_file

    • Type: String
    • Description: This variable which is useful only when set vdw_method to d2 specifies the name of each elemetent’s R0 Parameters file. If you don’t setup this, ABACUS will use the default R0 Parameters stored in the programme already. We’ve stored elements from 1_H to 86_Rn. Otherwise, if you want to use some new R0 Parameters, you should provide a file contained all the R0 Parameters ordered by periodic table of elements, from 1_H to the last elements you want.
    • Default: default

    back to top

  • vdw_R0_unit

    • Type: String
    • Description: This variable which is useful only when set vdw_method to d2 specifies unit of R0 Parameters. Two kinds of unit is available: A(means Angstrom) and Bohr.
    • Default: A

    back to top

  • vdw_model

    • Type: String
    • Description: To calculate the periodic structure, you can assign the number of lattice cells calculated. This variable specifies the kind of model to assign. If set to period, ABACUS will calculate a cubic periodic structure as assigned in vdw_period. If set to radius, ABACUS will calculate a cubic periodic structure containing a sphere, whose radius is vdw_radius and centre is origin point.
    • Default: radius

    back to top

  • vdw_radius

    • Type: Real
    • Description: If vdw_model is set to radius, this variable specifies the radius of the calculated sphere. For DFT-D2, the default value is 56.6918 ,while it is 95 for DFT-D3. This variable will be set to default, if no vdW-corrected method has been used.
    • Default: 56.6918 if vdw_method is chosen to be d2; 95 if vdw_method is chosen to be d3_0 or d3_bj

    back to top

  • vdw_radius_unit

    • Type: String
    • Description: If vdw_model is set to radius, this variable specifies the unit of vdw_radius. Two kinds of unit is available: A(means Angstrom) and Bohr.
    • Default: Bohr

    back to top

  • vdw_cn_radius

    • Type: Real
    • Description: This cutoff is chosen for the calculation of the coordination number (CN) in DFT-D3 approachs, including D3(0) and D3(BJ).
    • Default: 40.0

    back to top

  • vdw_cn_radius_unit

    • Type: String
    • Description: This variable specifies the unit of vdw_cn_radius. Two kinds of unit is available: A(means Angstrom) and Bohr.
    • Default: Bohr

    back to top

  • vdw_period

    • Type: Int Int Int
    • Description: If vdw_model is set to period, these variables specify the number of x, y and z periodic.
    • Default: 3 3 3

    back to top

Berry phase and wannier90 interface

This part of variables are used to control berry phase and wannier90 interfacae parameters.

  • berry_phase

    • Type: Integer
    • Description: 1, calculate berry phase; 0, no calculate berry phase.
    • Default: 0

    back to top

  • 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

    back to top

  • towannier90

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

    back to top

  • nnkpfile

    • Type: String
    • Description: the file name when you run “wannier90 -pp ...”.
    • Default: seedname.nnkp

    back to top

  • 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

    back to top

  • tddft

    • Type: Integer
    • Description:
      • 1: calculate the real time time dependent density functional theory (TDDFT).
      • 0: do not calculate TDDFT.
    • Default: 0

    back to top

  • vext

    • Type: Integer
    • Description:
      • 1: add a laser material interaction (extern laser field).
      • 0: no extern laser field.
    • Default: 0

    back to top

  • 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

    back to top

Variables useful for debugging

  • nurse(#nurse)

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

    back to top

  • t_in_h

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

    back to top

  • vl_in_h

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

    back to top

  • 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

    back to top

  • test_force

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

    back to top

  • test_stress

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

    back to top

  • colour

    • Type: Boolean
    • Description: If set to 1, output to terminal will have some color.
    • Default: 0

    back to top

  • new_dm

    • Type: Integer
    • Description: Controls output of some debug information related to our density matrix data-structures.
      • 1: show no debug information
      • 2: only show key debug information
      • 3: show all detail debug information
    • Default: 1

    back to top

  • test_just_neighbor

    • Type: Boolean
    • Description: If set to 1, then only perform the neighboring atoms search.
    • Default: 0

    back to top