Hartree potential that may serve as an input for the PPM can be produced by various DFT codes. A slab calculations are necessary for a creation of the Hartree potential. The calculated system should be in the lower part of the unit cell, but z coordinates of the top-most layer has to be above zero! At least 10 Ǎ of vacuum above a slab geometry has to be used. 15-20 Ă of Vacuum are recommended. Here we show examples how to produce a hartree potential, for couple of DFT codes: == Fireball == A __fireball.in__ for creation of an __fftpot.xsf__ file with Hartree potential with using a McWEDA functional should look like: &OPTION basisfile = 'answer.bas' lvsfile = 'input.lvs' kptpreference = 'input.kpts' nstepf = 1 icluster = 0 itdse = 0 iqout = 1 ifixcharge = 1 ! 0 if you don't have pre-calculated atomic charges in CHARGES iquench = -1 &END &OUTPUT iwrtxsf = 1 ! print the important file iwrtden = 1 ! print the important file &END &MESH ifixg0 = 1 ! g0 = 0.0,0.0,0.0 ! do not shift the position of atoms in fftpot.xsf with respect to the answer.bas Ecut = 300.0d0 ! not really necessary, but gives grid sampling approximately 100 pm. &END A __fireball.in__ file for calculations with XC on a grid computations: &OPTION basisfile = 'answer.bas' lvsfile = 'input.lvs' kptpreference = 'samplek.kpts' nstepf = 1 icluster = 0 itdse = 0 iqout = 1 ifixcharge = 0 dt = 0.5 iquench = -1 iks = 1 imcweda = 0 idogs = 0 bmix = 0.05 &END &OUTPUT iwrtxsf = 1 ! print the important file iwrtden = 1 ! print the important file &END &MESH ifixg0 = 1 ! g0 = 0.0,0.0,0.0 ! do not shift the position of atoms in fftpot.xsf with respect to the answer.bas Ecut = 300.0d0 ! not really necessary, but gives grid sampling approximately 100 pm. &END == VASP == [[http://www.vasp.at/]] A __LOCPOT__ file containing the Hartree potential is produced during standart //VASP// run. One just have to care about a dipole correction (if necessary). The __LOCPOT__ file has to be convert into an *.xsf file, eg. via [[http://theory.chm.tu-dresden.de/~jk/software.html]] == FHI-AIMS == [[http://aimsclub.fhi-berlin.mpg.de/]] Add following sequention into your __control.in__ file: output cube hartree_potential cube origin lx ly lz where lx, ly & lz are shifting the output cube file so the written grid would be at the beginning of the Cartesian system. PPM can now read geometry from a cube file created by //FHI-AIMS// and shift it according to the shift of the cube cell; however for good run of the PPM calculation at least lz has to be properly specified. l = length of lattice vector / 2 - 0.05; But proper shift is used only, when the lattice vector follows some Cartesian direction.