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.1.1
compatible with
QE-6.4.1
. The thermo_pw
file should be copied
in the main (QE) directory and unpacked with the command:
tar -xzvf thermo_pw.1.1.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
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's guide
available in the thermo_pw/Doc
directory.
Please report any problem to
dalcorso .at. sissa.it.
The development version of thermo_pw
is hosted at https://github.com/dalcorso/thermo_pw. To download it you need the git
package. Then you can give the command:
git clone https://github.com/dalcorso/thermo_pw
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: 6.4.1
. 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.
If you are running a version of QE
older than 6.4.1
you can still use thermo_pw
but you should carefully match 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.1.1:
Patches for thermo_pw.1.0.0:
- Grimme-d3 not implemented.
- zeu+US+pools not working. Apply the changes described in commit 6c70c8f.
- The plotted Gruneisen parameters have the wrong sign when lmurn=.TRUE.. Apply the change described in commit d78859e.
- Ionic relaxations are working only the first time pw.x is called. Apply the change described in commit 6a1a5d8.
Known problems of thermo_pw.0.9.0:
- Phonons + tetrahedra are not working (not implemented yet).
- Phonons + lsda are not working (use one of previous versions).
Patches for thermo_pw.0.9.0:
- EELS with US-PP has still a bug. At line 75 of
qe/addusddenseq.f90
changegg
withqmod
. - There is a problem with
sym_for_diago=.TRUE.
in the noncollinear/spin-orbit case. Usesym_for_diago=.FALSE.
or use the following file for qe/c_bands.f90 - The code stops using the old diagonalization in the phonon with the flag
sym_for_diago=.FALSE
. At line 144 ofqe/set_defaults_pw.f90
remove the_tpw
from the call toset_kplusq
. - Some compilers could have problems to compile the routine
thermo_pw/qe/set_kplusq.f90
. Use the following set_kplusq.f90. - The plotted Gruneisen parameters have the wrong sign when lmurn=.TRUE.. Apply the change described in commit d78859e.
Patches for thermo_pw.0.8.0:
- A bug might create some differences for phonons and US and PAW-PP calculated
with images, so for these cases update to
thermo_pw.0.9.0
is recommended. It might affect also previous versions that use the new xml output.
Patches for thermo_pw.0.7.0:
- With pools, all bands are red in the band plot. At line 550 of
src/sym_band_sub.f90
substitutenks
withnkstot
and recompile. - Some problems with Intel compiler can be solved as described in the patch 68ec9d7
- When
emin_input
andemax_input
are given in thethermo_control
namelist, some bands could be missing. The problem can be solved as described in the patch c39f6f0
Patches for thermo_pw.0.6.0:
- There is a problem with anharmonic properties calculated recovering the run
with
after_disp=.TRUE.
introduced in this version. Take the file thermo_pw/src/q2r_sub.f90, substitute the one ofthermo_pw.0.6.0
and recompile.
Moreover, at lines 11307 and 11336 oflib/point_group.f90
, change1D-8
with1D-5
. - Modules/clocks.f90 : line 41 set
maxclock=200
otherwisethermo_pw
might run out of clocks.
Patches for thermo_pw.0.5.0:
- Modules/clocks.f90 : line 41 set
maxclock=200
otherwisethermo_pw
might run out of clocks.
Patches for thermo_pw.0.4.0:
- A problem with
max_geometries
: this is a bug. Add the instructionph_geometries=0
at the line 431 of the filesrc/thermo_pw.f90
and recompile. - Compilation problem of
tools/test_colors.f90
: remove the RETURN command at the end of the file. - Error from
find_aux_ind_two_groups
in a phonon plot. Please check commit 122688 and make the same changes tosrc/matdyn_sub.f90
.
Patches for thermo_pw.0.3.0:
- With some compilers the code crashes at the beginning.
Please change line 571 of
src/thermo_readin.f90
fromCALL clean_ngeo()
toCALL clean_ngeo(ngeo,ibrav)
. - Anharmonic properties can be calculated only with the dynamical matrix in
.xml
format. Old format is not working. (See commit 110778). - The code is not recovering correctly and gives an error
check_stop_init
not initialized. (Please apply commit 110838).
Patches for thermo_pw.0.2.0:
- Problem in anharmonic properties: use
thermo_pw.0.3.0
or higher, or make the same changes as in commit
maxclock=200
otherwise
thermo_pw
might run out of clocks.
* Bug fix: In anharmonic calculations some vertical lines in phonon dispersion
plots are double. Change as in commit
19386.
Patches for thermo_pw.0.1.0:
- src/Makefile : line 83 change
THERMO_PW
withthermo_pw
. - outdir: must end with a
/
, the other case is not dealt with correctly.
FAQ:
- 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. 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
.
10. 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
.
11. 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 apply the same changes
as in the
commit 197343 or update to a newer version.
12. 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.
13. 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
.
14. 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 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.
15. 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.
16. 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.
17. The code fails to identify the space group and stops with an error ''point group orientation uncorrect''.
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.
18.
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'
.
19. 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.
20. 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.
21. 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.
22. 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.