In order to make a calculation with THERMO_PW you need
an input file for the `pw.x` code of QUANTUM ESPRESSO. This input file
requires mainly five information:

- The Bravais lattice.
- The position of the atoms inside the unit cell.
- The type of atoms and the pseudopotentials files that you want to use.
- The cut-off energies.
- The
**k**-point mesh used to make integration over the Brillouin zone. The smearing parameter for metals.

The Bravais lattice is specified by an integer number `ibrav` and by the
crystal parameters `celldm` (up to six numbers).
The `ibrav` codes and the required crystal parameters
are described in the file `PW/Doc/INPUT_PW` of the
QUANTUM ESPRESSO distribution.
In QUANTUM ESPRESSO you can use `ibrav=0` and give the primitive
lattice vectors of the Bravais lattice. Presently THERMO_PW needs to
know the Bravais lattice number so this form of input is not recommended.
If you use it, THERMO_PW writes on output `ibrav`,
`celldm` and the atomic coordinates needed to simulate
the same cell and stops.
You can just cut and paste these quantities in the input of `pw.x`
or you can set the flag `find_ibrav=.TRUE.` in the THERMO_PW input
and THERMO_PW will make the conversion for you before runnig the job.
After setting the correct
`ibrav` and `celldm`, THERMO_PW might still tell you
that the Bravais lattice is not compatible with the point group. This
can happen, for instance, if you have isolated molecules, amorphous solids,
defects, or supercells. In these cases you can still continue but symmetry
will not be
used to reduce the number of components of the physical quantities tensors.
In order to use the residual symmetry, you have to
use one of the suggested `ibrav`, adjusting the `celldm` to
the parameters of your cell. For instance if you have a cubic cell, but
the symmetry requires a tetragonal lattice, you have to use a tetragonal
lattice with `celldm(3)=1.0`.
In rare cases, with lattices such as the face-centered orthorhombic some
symmetry operations might be incompatible with the FFT grid found by
`pw.x`. The choice made in QUANTUM ESPRESSO is to discard these symmetries making
the lattice incompatible with the point group. In these cases the code needs
`nr1=nr2=nr3`. Set these three parameters in the `pw.x` input
equal to the largest one.

The positions of the atoms inside the unit cell are defined by an integer
number `nat` (the number of atoms) and by `nat`
three-dimensional vectors as explained in the file `PW/Doc/INPUT_PW`.
You can use several units, give the coordinates in the Cartesian or in the
crystal basis or you can give the space group number and the
crystal coordinates of the nonequivalent atoms. Note that in centered lattices
the crystal basis is the conventional one when using the space group number
and the primitive one when not using it.
These options are supported by THERMO_PW. See the `pw.x` manual
for details.

The number of different types of atoms is given by an integer number
`ntyp` and for each atomic type you need to specify a
pseudopotential file. Pseudopotential files depend on the exchange and
correlation functional and can be found in many
different places. There is a pseudopotential page in the QUANTUM ESPRESSO website, or
you can consider generating your pseudopotentials with the `pslibrary`
inputs. You can consult the web page

The kinetic energies cut-offs depend on the pseudopotentials
and on the accuracy of your calculation. You can
find some hints about the required cut-offs inside the pseudopotentials files,
but you need to check the convergence of your results with the cut-off
energies. Many tests of the kinetic energy cut-offs can be found also at
`https://www.materials` `cloud.org/discover/sssp/`.

The **k**-point mesh is given by three integer numbers and possible
shifts (0 or 1) in the three directions. The convergence of the results
with this mesh should be tested. For metals you have also to specify a
smearing method (for instance `occupations='smearing'`,
`smearing='mp'`) and a value of the smearing parameter (in Ry)
(see the variable `degauss` in the file `PW/Doc/INPUT_PW`).
Note that the convergence with respect to the **k**-points depends on
the value of `degauss` and must be tested for each `degauss`.

Once you have an input for `pw.x`, in order to run THERMO_PW you
have to write a file called `thermo_control` that contains a
namelist called `INPUT_THERMO`. This namelist contains a keyword
`what` that controls the calculation performed by
THERMO_PW. Ideally you need to set only `what` and call
`thermo_pw.x` instead of `pw.x`, giving as input the
input prepared for `pw.x`. In practice each `what`
is controlled by several variables described in the user's guide.
These variables have default values that are usually sufficient to
give a first estimate of a given quantity but that must be fine tuned
to obtain publication quality results.