## DFT calculations for atomsPaolo Giannozzi has developped a code that allows you to do density functional calculations for atoms (actually it is meant to produce pseudopotentials). Since this is a well defined, small problem it is ideal for getting an idea of how DFT calculations are done.- Download code (about 200 kB) and unpack in a new directory (needs about 1 MB)
- edit
`Src/Makefile`: change Fortran compiler (FC) to g77 and, if you don't have the BLAS and LAPACK libraries installed, comment LIBS= and uncomment LAPACK=.`cd ..`and`make ld1 wfcgraf` - to check if everything went ok, run
`Src/ld1 < Doc/ld1.in | tee ld1.out`and`diff ld1.out Doc/ld1.out`. The input to`ld1`is explained at the beginning of`Src/ld1.f`(see also below). - The file
`vs2p0d3.wfc`contains the wavefunctions, which can be plotted with`Src/wfcgraf`with the inputfilwf > vs2p0d3.wfc filwfp > wavefunction # 1 : label > 1s wavefunction # 2 : label > 2s wavefunction # 3 : label > 2p wavefunction # 4 : label > 3s wavefunction # 5 : label > 3p wavefunction # 6 : label > 3d wavefunction # 7 : label > 4s wavefunction # 8 : label > 4p wavefunction # 9 : label > show wavefunction ( or, to just see, e.g., the 4s wavefunction, enter) or rho (else) ? > r max, r tic > 5 0.5 output file (postscript) > wf.ps output file (xmgr) > filwf > vs2p0d3.wfc filwfp > wavefunction # 1 : label > 4s wavefunction # 2 : label > show wavefunction ( ) or rho (else) ? > r max, r tic > 10 0.5 output file (postscript) > wf4s.ps output file (xmgr) > - Now you are ready to run your own calculations.
The input to
`ld1`is explained in`Src/ld1.f`:c c--------------------------------------------------------------- program ld1 c--------------------------------------------------------------- c c- Self-consistent calculation of electronic states for atoms c (all-electron, AE) and pseudo-atoms (pseudopotential, PP) c Atomic Rydberg units are used : e^2=2, m=1/2, hbar=1 c Atomic wavefunctions: Psi(r)=(chi(r)/r)Y_lm(r) c The charge density rho(r) has spherical symmetry: c rho(r) = \sum oc_nl*chi_nl(r)^2/(4\pi r^2) c Gradient Correction added by Andrea Dal Corso c c namelist "input": c atom = atomic symbol c xmin = mesh parameter default: -8.0 c dx = mesh parameter default: 0.0500 c rmax = outermost mesh point default: 60.0 c The mesh is: r(i+1) = exp(xmin+i*dx)/zed (i=0,...,mesh) c Larger negative xmin and smaller dx yield denser and c more accurate grids. c rel = 1 (0): (non) scalar-relativistic calculation c default: non-relativistic if Z < 19 or for PP c beta = parameter for potential mixing (default: 0.5) c rcut = cut the exch-corr potential for r < rcut (default:0.0) c may be useful for gradient-corrected functionals c config= electronic configuration. Acceptable format: c '1s2 2s2 2p6 3s0.5' or '[Ne] 3s0.5' c For PP calculations, the labels should be the c labels of corresponding AE wavefunctions: c the main quantum number is "renormalized" to the c correct value (1s for the first s state and so on) c oldps = 0: new (PWSCF) PP format (default) c = 1: old PP format c dft = a string containing any of the following keywords c (case-insensitive, in any nonconflicting arrangement): c "lsd" LSD calculation of the energy (default:no) c "sic" Self-Interaction Correction (default:no) c "sla" Slater Exchange (default) c "noexc" No Exchange c "nocor" No Correlation c "pz" Perdew-Zunger correlation (default) c "gl" Gunnarson-Lunqvist correlation c "hl" Hedin-Lunqvist correlation c "pw" Perdew-Wang correlation c "vwn" Vosko-Wilk-Nusair correlation c "wig" Wigner correlation c "lyp" Lee-Yang-Parr correlation c "obz" Ortiz-Ballone form for Perdew-Zunger corr. c "obw" Ortiz-Ballone form for Perdew-Wang corr. c "nogcx" No Gradient Correction on exchange (default) c "nogcc" No Gradient Correction on correlation (default) c "b88" Becke88 grad-corr exchange (beta=0.0042) c "p86" Perdew86 grad-corr correlation c "bp" Becke88 + Perdew86 c "pw91" Perdew-Wang 91 GGA c "blyp" Becke88 + Lee-Yang-Parr c "pbe" Improved GGA by Perdew-Burke-Erzenhof c "revPBE" Revised PBE (Zhang and Yang) c "hcth" Cambridge functional after Handy & Co. (HCTH/120) c "optx" Handy's exchange functional (to be used with LYP) c file_pseudo input PP file (default: ' ') c file_wavefunctions output file for wavefcts (default: ' ') c file_logder output file for logarithmic derivatives c (default: 'logder') c Format readable by plotting program "xmgr" c A suffix is added to file_logder: c '.ae' for an AE calculation c '.pp' and '.kb' for a PP calculation c (the first is for semilocal PP, the second c for PP in the Kleinman-Bylander scheme. c The local part is read from the PP file) c emin, emax = energy range for logarithmic derivatives calculation c (default: emin = emax = 0) c ne = number of energy steps for log. der. calculations c (default: 100) c rd = radius used to calculated log.der. (default: 0.0) c c ibound= 0 : free boundary conditions (default) c = 1 : atom in a box (obsolete) c latt= 1(0): (no) Latter correction (default: no) You should compare your calculations to the Atomic Reference Data - Here you can find the documentation of how to use the codes and on the background (all relevant formulas are in appedix A)
Erik Koch |