A fast and precise DFT wavelet code

DFT input parameters

A fast and precise DFT wavelet code
Jump to: navigation, search

Yaml input variables (experimental)


This section is related to the Density Functional parameters

Example via bullets:


Coarse and fine multiplication radii


Exchange correlation parameters Exclusive values:

  • LDA
  • PBE
  • PBE0


This is the grid spacing

* Allowed range: [0, 2]

This file contains all the parameters required for a single wavefunction calculation. It is named input.dft.


0.45 0.45 0.45      # hx,hy,hz: grid spacing in the three directions
10.0  8.0           # crmult, frmult: c(f)rmult*radii_cf(*,1(2)) gives the coarse (fine)radius around each atom
11                  # ixc: exchange-correlation parameter (LDA=1,PBE=11)
0 0.0  0.0  0.0     # qcharge: charge of the system, Electric field
1  0                # nspin=1 non-spin polarization, mpol=total magnetic moment
1.E-04              # gnrm_cv: convergence criterion gradient
100 2               # itermax,nrepmax: maximum number of wavefunction optimizations and of re-diagonalised runs
6  2                # ncong, idsx: # CG iterations for the preconditioning equation, length of the diis history
0                   # dispersion correction functional (values 1,2,3), 0=no correction
0  0  22            # InputPsiId, output_wf, output_denspot
0.0  30             # rbuf, ncongt: length of the tail (AU),# tail CG iterations
0 0 0               # davidson treatment, no. of virtual orbitals, no of plotted orbitals
T                   # disable the symmetry detection

Entry descriptions

All lines are mandatory. Follows a description line by line:

Wavelet grid definition

  • hgridx, hgridy, hgridz: The grid spacing of the Cartesian grid, in Bohr. As described in the wavelet formalism section, the nodes of this grid serve as the centers for the scaling function/wavelet basis. Values are in most cases between 0.3 and 0.6 bohr.
  • crmult, frmult: Coarse Region Multiplier and Fine Region Multiplier which serve to determine the radius for the low/high resolution sphere around the atom. Values are typically of the order of 5 for crmult and of the order of 10 for frmult.

Electronic treatment

  • ixc: integer specifying which exchange correlation functional will be used. The Abinit conventions are used and detailed information can be found on the Abinit Web page. Here is only a short summary of some wide-ly used functionals:
    • 1 – Pade LDA from Abinit XC library;
    • 11 – PBE from Abinit XC library;
    • -020 – Pade LDA from libXC;
    • -101130 – PBE from libXC;
    • -116133 – PBEsol from libXC;
    • -406 – PBE0 Hybrid functional (local part from libXC).

A positive integer refers to a functional from ABINIT library and a negative one from libXC library. In this case, you concatenate the codes for the exchange part and for the correlation part (see the table of codes).

  • qcharge, elecfield: Total charge of the system and uniform electric field Ex, Ey, Ez in units of Ha/Bohr. A positive ncharge means that electrons are taken away. The electric field can not have components in periodic directions, e.g. Ex = Ez = 0 in case surface BC is used.
  • nspin, mpol:
    • nspin = 1: closed shell system without spin polarization;
    • nspin = 2: spin polarized system;
    • nspin = 4: non-collinear magnetic system.

SCF loop

  • gnrm_cv: convergence criterion for the wavefunction optimization (norm of the gradient). Reasonable values are in most cases between 1.d-4 and 1.d-5.
  • itermax, nrepmax: Maximum number of gradient evaluations for a single cycle in a wavefunction optimization and maximum number of cycles. At the end of each cycle a subspace diagonalization is done which helps in cases where one has near degeneracy between the HOMO and LUMO orbitals. 50 and 2 are usually sufficient.
  • ncong, idsx: ncong gives the number of iterations in the solution of the preconditioning equation. For free boundary conditions 5 is a good value whereas for other boundary condition a value from 0 to 2 is in general sufficient. Large values of ncong lead to a smaller number of iterations in the wavefunction optimization and better forces, but each iteration is more costly. So an optimal compromise value has to be found. idsx gives the history length of the DIIS convergence acceleration in the wavefunction optimization. 6 is usually a good value for fast convergence. In case of convergence problems it can be advantageous to switch off DIIS by setting idsx = 0. The memory requirements grow considerably with large values of idsx. If memory is the limiting factor one has to choose idsx smaller than the value which gives the fastest convergence. The bigdft-tool tool can be used to predict the memory requirements for different choices of idsx.


  • dispersion: A non-zero values activates an empirical add-on treatment of dispersion effects. The values 1, 2 and 3 specify different switching on functions using the convention[1].
  • InputPsiId, output_wf, output_denspot: three values to handle wavefunctions, density and potentials on disk.

InputPsiId specifies how the input guess wavefunction is generated:

  • InputPsiId = -2: Random numbers are used as input guess. This is of course a poor input guess which will need many iterations of the wavefunction optimization and might even lead to divergences.
  • InputPsiId = -1: The input wavefunction is imported from the CP2K code which uses Gaussian functions. The basis set should be contained in a file named gaubasis.dat whereas the coefficients should appear in the gaucoeff.dat file. Both files are the output files of CP2K code. See the H2O-CP2K test for an example.
  • InputPsiId = 0: A subspace diagonalization in a minimal atomic basis set is used. This input guess should be used in general if one starts a new calculation.
  • InputPsiId = 1: The previously calculated wavefunctions (for instance from the previous geometry optimization step) are used as input guess. Setting InputPsiId to this value does only make sense from within a main program where call_cluster() subroutine was called previously. The old wavefunction is passed to the new call via the data structure restart.
  • InputPsiId = 2: The input wavefunction is read from the wavefunction.* files which contain all the scaling function and wavelet coefficients. In case some parameters such as hgridx or crmult have changed, compared to the previous run, the wavefunctions will be also transformed to the new parameter set. Use also this value to restart from ETSF file format wavefunction-etsf.nc.
  • InputPsiId = 10: The same as 0 but activates the ’Gaussian help’: after convergence the wavefunctions are projected onto the localised basis set used for the input guess, and Mulliken Charge Population Analysis (MCPA) is performed on this basis. The user has the possibility to perform MCPA with separate basis set (functionality to be added)
  • InputPsiId = 11: Restart with Gaussian approximation contained in the ’restart’ data structure.
  • InputPsiId = 12: The input wavefunction is read from the wavefunctions.gau file, which contains an approximation in a minimal Gaussian basis set of the previously calculated wavefunctions.
  • InputPsiId = 13: To be described

output_wf controls the output of wavefunctions on disk at the end of the calculation:

  • output_wf = 0, Do not write the wavefunctions to disk.
  • output_wf = 1, The output wavefunctions are written at the end of the wavefunction optimization into plain text files. If InputPsiId was greater than 10 the wavefunction will be written in the Gaussian approximation into a single wavefunctions.gau file otherwise into wavefunction.* files. Writing a wavefunction.* file for each orbital can take a considerable amount of time and disk space.
  • output_wf = 2, The output wavefunctions are written at the end of the wavefunction optimization into Fortran binary files. This format is not portable between compilers and machines.
  • output_wf = 3, The output wavefunctions are written at the end of the wavefunction optimization into ETSF binary files. This format is portable between compilers and machines since based on NetCDF. Parallel IO are taken into account.

output_denspot controls the output of density and pontentials on disk at the end of the calculation:

  • output_denspot = 0, No output density is written.
  • output_denspot = 1, Output electronic density is written in the .pot format of V_Sim into the file electronic_density.pot (deprecated, use 11 instead).
  • output_denspot = 2, In addition to the electronic density, the potential (local_potential.pot) and its components (’external_potential.pot’ and ’Hartree_potential.pot’) are also output in plain text ’.pot’ files (deprecated, use 12 instead).
  • output_denspot = 11, Same as output_denspot = 1, but files are written in ETSF file format (portable binary format based on NetCDF).
  • output_denspot = 12, Same as output_denspot = 2, but files are written in ETSF file format (portable binary format based on NetCDF).
  • output_denspot = 21, Same as output_denspot = 1, but files are written in ’.cube’ file format (plain text).
  • output_denspot = 22, Same as output_denspot = 2, but files are written in ’.cube’ file format (plain text).
  • rbuf, ncongt: Far reaching tails of the wavefunctions decaying into the vacuum are added in a perturbative treatment if the variable rbuf is set to a strictly positive value. This allows to do a calculation with some moderate value of crmult and then to extrapolate to the limit of large crmult. This procedure is not variational and gives too low energies. The true energy is in between the two energies and in general much closer to the extrapolated energy. This procedure can also be used to judge whether the chosen value of crmult is large enough for a certain required precision. rbuf gives the amount by which the radii for the coarse resolution region are increased in atomic units. ncongt gives the number of iterations used in the perturbation calculation. Reasonable values for ncongt are around 30.
  • norbv,nvirt, nplot: Usually unoccupied orbitals are not calculated since they are not needed for the total energy and other physical properties of the electronic ground state. Putting norbv to a non-zero value will result in the calculation of norbv virtual orbitals in a postprocessing routine after the occupied orbitals have been calculated, which uses Davidson iterative treatment . nplot of these orbitals will be written in the ’virtual.*.pot’ files and nplot (if that many exist) of the highest occupied orbitals will be written in the ’orbital.*.pot’ file The Kohn Sham eigenvalues are written in the ordinary output file. nvirt corresponds to the actual number of orbitals the convergence process is taking care of during the Davidson iterations.
  • disable sym: a logical to set to ’T’ to disable the usage of symmetry operations in the calculations. By default symmetries are used to update the density in periodic boundary condition calculations, and surface boundary conditions also.
  1. Q. Hill and C.-K. Skylaris. Proc. R. Soc. A 465 669 (2009)
Personal tools