View on GitHub

Welcome to Thermo_pw

Thermo_pw is a driver of quantum-ESPRESSO routines for the automatic computation of ab-initio material properties.


In order to use thermo_pw you need a working version of the Quantum ESPRESSO (QE) package. Thermo_pw can be downloaded from its main page as a .tar.gz file. The current production version is 1.9.1 compatible with QE-7.3. The thermo_pw file should be copied in the main (QE) directory and unpacked with the command:

tar -xzvf thermo_pw.1.9.1.tar.gz

This command produces a directory called thermo_pw. To compile the code you need a Fortran compiler, for instance the gcc package and gfortran (or gcc-fortran in some distributions), and the same libraries required by QE. After getting the directory thermo_pw in the main QE directory, cd to the directory thermo_pw and give the command make join_qe. Then cd to the main QE directory and compile thermo_pw with the command:

make thermo_pw

Instead, to use cmake, you create the directory build enter there and give the command:

cmake -DCMAKE_C_COMPILER=c_compiler -DCMAKE_Fortran_COMPILER=fortran_compiler ../

Then the command make produces also the thermo_pw.x executable.

To run thermo_pw it is useful to have the gnuplot package, and to plot the Brillouin zone you need the asymptote package. Both are available as precompiled packages in many distributions. For further information, please refer to the user guide available in the thermo_pw/Doc directory. Please report any problem to dalcorso .at.

The development version of thermo_pw is hosted at To download it you need the git package. Then you can give the command:

git clone

and you should get a directory called thermo_pw that contains the source code. The git version can be used only together with the version of QE reported here: 7.3. Please note that sometimes the git version is not working properly and in any case its use is not recommended.

Although thermo_pw has been used for several years and can be considered reasonably stable, it remains an experimental code given as it is. A version of QE older than 7.2 can still be used with thermo_pw matching carefully the versions of thermo_pw and of QE as explained in the main thermo_pw page.

Before using thermo_pw, please apply the patches given below.

Patches for thermo_pw.1.9.1: The code hangs when using start_q and last_q with what='elastic_constants_geo'. Correct as in commit 48b77cc of Mar. 11, 2024.
Patches for thermo_pw.1.9.0:
At line 150 of qe/many_k_ph.f90 continuation line ‘&’ is missing.
Thermo_pw was not working with scalapak. See bug fix of Feb. 1, 2024.
A problem with calculation of EELS spectrum with Sternheimer method. See bug fix of Jan. 31, 2024
Patches for thermo_pw.1.8.1:
Thermo_pw was not working with scalapak. See bug fix of Feb. 1, 2024
A problem with calculation of EELS spectrum with Sternheimer method. See bug fix of Jan. 31, 2024
A problem with calculation of electronic free energy See bug fix aeedce4 of Jul. 3, 2023.

Patches for thermo_pw.1.8.0:

Patches for thermo_pw.1.7.1:

Patches for thermo_pw.1.7.0:

Patches for thermo_pw.1.6.1:

Patches for thermo_pw.1.6.0:

Patches for thermo_pw.1.5.1:

Patches for thermo_pw.1.5.0:
Patches for thermo_pw.1.4.1:

Patches for thermo_pw.1.4.0:

Patches for thermo_pw.1.3.1 and thermo_pw.1.3.2:

Patches for thermo_pw.1.3.0:

Patches for thermo_pw.1.2.1:

Patches for thermo_pw.1.2.0:

Patches for thermo_pw.1.1.1:

Patches for thermo_pw.1.0.0:

Known problems of thermo_pw.0.9.0:

Patches for thermo_pw.0.9.0:

Patches for thermo_pw.0.8.0:

Patches for thermo_pw.0.7.0:

Patches for thermo_pw.0.6.0:

Patches for thermo_pw.0.5.0:

Patches for thermo_pw.0.4.0:

Patches for thermo_pw.0.3.0:

Patches for thermo_pw.0.2.0:

Patches for thermo_pw.0.1.0:


  1. How can I learn to use thermo_pw?
    Please learn the basic use of Quantum ESPRESSO first. Then you can read the thermo_pw tutorial and user’s guide and run the examples. These FAQ assume that you have a basic understanding of thermo_pw and contain miscellaneous information not available in the user’s guide.

  2. Can I study the thermal expansion of anisotropic solids using thermo_pw?
    For some crystal systems, yes, but not all systems are supported or tested. Read carefully the user’s guide and use a version higher than 0.3.0. Also use dynamical matrices in .xml format or the calculation of thermal expansion with Gruneisen parameters will not work with all versions previous to 0.5.0.

  3. Can I calculate the temperature dependence of the band gap or in general of the band structure using thermo_pw?
    You can calculate the band structure at the crystal geometry that corresponds to a given temperature. In this way you evaluate the effect of thermal expansion on the band structure or on the gap. However an important temperature dependence of the band gaps and of the band structure comes from the electron-phonon interactions that are not included in thermo_pw. For this purpose you should use another package.

  4. Can I calculate the equilibrium geometry of a solid at a given temperature using thermo_pw?
    Yes, but the calculation is as heavy as computing the anharmonic properties and it will take a lot of time and resources. You need to learn how to use thermo_pw before starting such a complex calculation.

  5. Which is the difference between examples and inputs?
    Examples illustrate the features of thermo_pw and are fast, but are not converged. inputs are more realistic examples.

  6. Sometimes the examples of thermo_pw run correctly, sometimes they crash. Which is the problem?
    The most probable reason is that you have not removed the results directory produced by a previous run of the example script.

  7. make thermo_pw is not working. Compilation stops with some missing routines error.
    Most probably you have not matched the versions of QE and of thermo_pw.

  8. I have compiled thermo_pw but as I run it, it stops immediately. I am using thermo_pw.0.3.0.
    Most probably you have not applied the patch described above. Update to a newer version.

  9. After unpacking the tar file there is no thermo_pw directory.
    The directory obtained unpacking the source files obtained from the github releases web page is called thermo_pw-#version number. Just change the name of this directory to thermo_pw.

  10. I cannot run the examples. I have problems using images. What should I do?
    If you want to run the examples without images edit the file environment_variables in the main QE directory. Search the two variables PARA_IMAGE_PREFIX and PARA_IMAGE_POSTFIX and set -ni 1.

  11. I have not a parallel computer. I do not know what mpi is. Can I run thermo_pw?
    Only thermo_pw.0.5.0 or later versions can be compiled in serial. All previous versions must be compiled together with mpi.

  12. An ionic relaxation converges with pw.x but not with thermo_pw.x (version 0.4.0).
    This is a bug of version 0.4.0. Please
    update to a newer version.

  13. The plot of the phonon dispersions is very strange with several disjoint parts. Moreover the modes are not classified using symmetry. Why?
    The mode symmetry analysis requires dynamical matrices in .xml format. Please put the .xml extension in the fildyn variable in the ph.x input. Symmetry matrices are needed also to recognize symmetry equivalent point on the Brillouin zone.

  14. The plot of the Gruneisen parameters has strange crossings in some points. Why?
    In some cases the plot of the Gruneisen parameters needs more accuracy on the symmetry analysis than the phonon plot. Accidentally degenerate frequencies might have very different Gruneisen parameters. Change the parameter 5.D-2 at line 148 of PHonon/PH/find_mode_sym.f90 to 1.D-2 or less and recompile thermo_pw.

  15. Thermo_pw documentation does not compile and stops with an error saying that html.sty is missing or latex2html is missing.
    This is not a problem of thermo_pw. In order to compile the documentation thermo_pw needs a quite complete latex package. You can find html.sty on the web and copy it inside thermo_pw/Doc directory and you can install the package latex2html. Even if you do not solve this problem, thermo_pw.x will be available in the bin directory of QE. Only the documentation will be missing.

  16. The plot of the projected band structure has some problems. Some gaps have the same color of the projected band structure.
    This is a problem of old versions of gnuplot. Update to gnuplot 5.0 or higher.

  17. The phonon dispersion plot seems strange, some branches are missing.
    Please check that you used enough digits for the atomic positions. A typical problem appears when you write 1/3 and 2/3 in single precision. The pw.x code finds more symmetries than those that are actually present in the final modes and the routine that identifies the mode symmetry gets confused.

  18. The code fails to identify the space group and stops with an error ‘‘point group orientation incorrect’’.
    Most probably you are simulating a noncollinear magnetic system. Magnetic space group identification is not implemented but no check is done in versions up to 0.9.0. Please make the same changes as commit a68e6cb of 18 January 2018. If you find this error, you are using ibrav/=0, and your system is collinear, please send me your input.

  19. what='scf_disp' and partial phonon computations with start_q, last_q or start_irr last_irr gives strange error messages.
    The option what='scf_disp' requires all the dynamical matrices files in the dynamical_matrices directory. Use what='scf_ph' until you collect all the dynamical matrices and do a final run with what='scf_disp'.

  20. I am computing a phonon dispersion but some q points are not computed.
    Most probably you have not cleaned the outdir directory. Note that the thermo_pw always tries to use the content of the outdir directory if present.

  21. Is it possible to increase the temperature range?
    Yes, you have to remove the therm_files directory while keeping the dynamical_matrices and the restart directories. If you removed the outdir directory, use after_disp=.TRUE. and set fildyn with the name of the dynamical matrices.

  22. Is it possible to increase the number of points used to compute the phonon dos?
    Yes, you have to remove both the phdisp_files and the therm_files directories while keeping the dynamical_matrices and the restart directories.

  23. I made a calculation with with_eigen=.FALSE.. Is it possible to restart with with_eigen=.TRUE.?
    Yes, but you have to remove both the phdisp_files and the therm_files directories, while keeping the dynamical_matrices and the restart directories.

  24. I am using thermo_pw 1.3.1 withQE6.6 but the code hangs or stops in random places when computing phonon dispersions.
    Be careful with the use of pools. Since version 6.6 QE does not stop any longer if some pools have no k points, but thermo_pw cannot deal with this case. In order to check if you are in this situation search the string ‘suboptimal parallelization: some nodes have no k-points’ in your output. The solution is to decrease the number of pools until the message disappear. If you want a permanent check of this problem use thermo_pw.1.3.2.

  25. tmp_dir cannot be opened.
    Check your outdir directory in the pw.x input. Usually this error indicates a missing parent directory. You might have an error in the path indicated in outdir or you are not allowed to write or execute the parent directory.

  26. Error in namelist.
    Most probably there is a mistake in a variable of the namelist. Please check accurately the user guide. The other possibility is that your editor added some hidden characters in the input file. Please check for it for instance with the command cat -A input_file. Another possibility is that you are reading the user guide of a version of thermo_pw different from the one you are using and the variable is not yet available. Please match the versions of the user guide and of thermo_pw.

  27. Point group incompatible with the Bravais lattice.
    This means that your point group is different from the point groups compatible with a given Bravais lattice. The calculation is still possible but thermo_pw will not be able to find the space group and will not use the symmetries to simplify the calculation of the physical properties. Please check if you can find why some symmetries are missing, or why you have too many symmetries. Try to use one of the Bravais lattices suggested by the code. The message might also indicate that you have a supercell. If this is what you want, just ignore the message and continue the calculation, otherwise simplify your cell.

  28. Is thermo_pw compatible with the GPU version of QE?
    In part it is. With QE6.7 and with version 1.5.0 you can give the command make tpw_gpu to obtain a version of the code that can be compiled with q-e-gpu.6.7. Version 1.5.1 and QE6.8 or later versions can be compiled with CUDA enabled with the same commands used to enable CUDA in QE. You need to run configure with the CUDA options. Version 1.9.0 has been tested on Leonardo at CINECA with the nvidia fortran compiler.

  29. The band or phonon symmetry is not indicated. There are many question marks instead of the names of the irreducible representations.
    The question marks indicate that the algorithm that finds the symmetry is confused and is unable to find a well defined symmetry. There are several possible reasons:
    • You might have a too small cut-off, or a too large threshold for the self consistence and the symmetry is not accurate enough. Please modify these parameters.
    • Your atomic positions are quite close to a symmetry position but not exactly there. This is a common problem when using single precision atomic coordinates. Please correct the atomic coordinates adding more digits.
    • There might be some problem with the pseudopotential and there is some ghost state. Please check other pseudopotentials to see if the problem disappears.
    • If none of the above applies, there might be a problem in the algorithm that finds the symmetry. Please send me your input or post it to one of the forum mailing lists.

  30. Can I compute the temperature dependent elastic constants with thermo_pw?
    • Quasi-static elastic constants are available from version 0.6.0.Quasi-harmonic elastic constants require version 1.2.0 or later. The electronic contribution is implemented only starting for version 1.4.0.
    • Note that this feature is still work in progress and there are still some limitations. For instance, atomic coordinates are relaxed only at zero temperature.
    • Note also that the quasi-harmonic calculation is very time consuming. As an order of magnitude it requires hundreds of phonon dispersion calculations.

  31. Laue class not available when computing elastic constants.
    • This error usually means that your system has less symmetry than expected from the Bravais lattice. For instance there is no Laue class available for a solid with a cubic Bravais lattice and point group symmetry different from T, T_d, T_h, O, or O_h.
    • In this case the thermo_pw output writes that the point group and the Bravais lattice are not compatible and gives a set of Bravais lattices compatible with the symmetry. If you think that the symmetry of your system is correct, then you should use one of the Bravais lattices suggested by thermo_pw. Instead if some symmetry is missing for other reasons (see the Quantum Espresso PW user’s guide for possible reasons), then correct the problem before running the elastic constant calculation.
    • If you are using supercells or you have a low dimensional system in a supercell, then probably thermo_pw is not yet suited to compute automatically the elastic constants of your system.

  32. Thermo_pw does not compile (with Quantum ESPRESSO version 7.0 or later). There is an error no rule to make file make.depend.
    • After writing make join_qe and returning to QE root directory you need to rerun ./configure before make thermo_pw. (Thanks to H. Zhao for reporting the problem).
  33. Thermo_pw has problems with fully relativistic PAW.
    • Before reporting such problems check the correct matching of the PP_AEWFC_REL tag in the UPF file and in the upf reading routine. Starting from version 6.5 of QE and until version 6.7 the xml tag for the small component of the all electron partial waves has been called PP_AEWFC_rel, while in previous versions of QE it was called PP_AEWFC_REL. As such the fully relativistic pseudopotentials created with a version of QE older than 6.5 (as many of the PPs distributed in the QE site) were no more read correctly. The code does not stop and most of the time produces only slightly uncorrect results expecially in the PP test. To read a PP that contains the PP_AEWFC_REL tag you can change the file upflib/read_upf_new.f90 and upflib/write_upf_new.f90 searching for the string PP_AEWFC_rel in both files and changing it into PP_AEWFC_REL. In QE6.8, QE7.0, and QE7.1 the routine upflib/read_upf_new.f90 has been corrected and these versions of QE read correctly UPF PPs with the tag PP_AEWFC_REL, but unfortunately continue to write UPF PP with the tag PP_AEWFC_rel. The routine upflib/write_upf_new.f90 must be changed to make the code consistent and to read correctly the pseudopotential generated by the same version of QE. For version QE7.0 apply also the correction to PW/src/v_of_rho.f90 described above.