Classes‎ > ‎458‎ > ‎


Important general tips

[edit]Initial Input Geometry

To know how to input your crystal of choice into PWSCF, you'll need to know its atomic coordinates. Almost always, these can be found in a paper in the literature or by using software such as Vesta to apply spacegroup symmetry operations to a few known atomic positions (or you can do that by hand!) The important thing is that generally, you will have fractional atomic coordinates available, which are given in terms of the lattice vectors a, b, and c. If you want PWSCF to use fractional coordinates, your ATOMIC_POSITIONS input line must look like this:


(crystal) tells PWSCF to look for fractional coordinates. Otherwise, it defaults to Cartesian!

Here is a very clear and helpful guide to inputting crystal geometries into PWSCF for calculations, from Stefano de Gironcoli:


For all elements in your calculations, you will need to obtain pseudopotentials from Go there and click on "PSEUDO." You should see a periodic table that shows all the elements that have been parametrized for use with PWSCF. General tips:

  • For the most robust calculations, select PBE or PW91 pseudos (these are both GGA); use LDA only if you have no other choice
  • Try to make the pseudos you select as similar as possible. That is, if you select one Vanderbilt potential ("van" in the name), try to get Vanderbilt potentials for your other elements. If one of your pseudos is norm-conserving, they all should be.
  • You will, of course, not be able to mix PBE with PW91 or with LDA, etc. You need to use the same style exchange-correlation in all your pseudos.

[edit]Transition Metal Oxides and Rare-Earth Compounds

If you are interested in modeling these materials, congratulations! Vanilla DFT is not enough for you, and will often predict insulators to be metals (check the band structure!) You will need to implement the DFT+U formalism, which adds a correction term to the Hamiltonian for cases in which electronic behavior is highly correlated. To enable DFT+U, add lines like below to &SYSTEM:

lda_plus_u = .true.,
Hubbard_U(1) = X
Hubbard_U(2) = Y

where each Hubbard_U line corresponds to one element in your input. The values of X and Y are the U parameters in eV. Please come see me if you are modeling these materials; they are the focus of my research as well, so I have more tips I can share.


If your calculation involves a magnetic element (Mn, Fe, Co, Ni...), you must explicitly enable spin polarization if you want magnetism to be reflected in your results! Here's a look at how to do that in your .in file under &SYSTEM:

nspin = 2,
starting_magnetization(i) = 0.3,

nspin=2 turns on magnetism, but you need to give PWSCF a guess for the initial spins of magnetic elements. So, for each magnetic element i, you must enter a starting_magnetization(i) between -1 and 1.


You have the choice between conjugate gradient (cg) and Davidson (david) algorithms in PWSCF. Each has advantages and disadvantages; typically, the choice won't matter, but I would default to Davidson.

[edit]How to Know if You're Right

There are some basic things you should check in the output of any simulation. First of all, look at the energy. If it's positive, something is definitely wrong. If it's only slightly negative (by single-digit or 10-20 Ryd), something is probably wrong. Secondly, take a look at your forces. The total force on the cell should be nearly 0. If that force is not 0, it means your whole cell has a net force and is "drifting." This is often an indication that your energy cutoff is insufficient. The forces on each atom should also be small (on the order of 0.001 Ryd/bohr or smaller). If these forces are large, check your input geometry!