PAOFLOW.phonon.do_qha#
Quasi-harmonic approximation (QHA) driver for PAOFLOW (Stage 4).
For a set of isotropically strained volumes the static DFT energy E(V) is
combined with the harmonic vibrational free energy F_vib(T, V) to obtain the
temperature-dependent equilibrium volume V(T), volumetric thermal expansion
alpha(T), isothermal bulk modulus B(T), Gibbs free energy G(T),
constant-pressure heat capacity C_p(T) and the thermodynamic Gruneisen
parameter gamma(T).
Two back-ends are used depending on how many volumes are sampled:
nvolumes = 5(default): the full equation-of-state QHA implemented byphonopy.PhonopyQHA(Vinet EOS by default). A four-parameter EOS needs at least four volume points, so this is the accurate, recommended choice.nvolumes = 3: a low-order (parabolic) fit ofG(V) = E(V) + F_vib(T, V)at each temperature. A quadratic is exactly determined by three points and is valid for the small volume changes probed here; it produces the same set of output files as the EOS route.
The routine mirrors the two-phase generate / analyse pattern used by the
rest of the phonon workflow: with forces=None it writes the Quantum
ESPRESSO inputs (a static SCF for E(V) plus the displaced supercells for the
phonons at every volume); with forces='qe' it harvests the results and runs
the QHA.
Attributes#
Functions#
|
Write the QE inputs for every sampled volume (generation phase). |
|
Mode Grueneisen parameters along a q-path (dispersion-style output). |
|
Harvest the volume scan and compute the QHA quantities (analysis phase). |
Module Contents#
- PAOFLOW.phonon.do_qha.generate_qha_inputs(data_controller, nvolumes=5, strain=0.02, qha_dir='qha', pp_dir=None, prefix=None, kgrid=None, hubbard_card=None)[source]#
Write the QE inputs for every sampled volume (generation phase).
For each isotropically strained cell this writes, under
<outputdir>/<qha_dir>/vol-NN/:scf.in– a static unit-cell SCF for the electronic energyE(V);supercell-NNN.in– the phonopy displaced supercells for the phonons.
Run
pw.xon every input, then re-call withforces='qe'.
- PAOFLOW.phonon.do_qha.compute_gruneisen_band(data_controller, phonons, q_path=None, q_labels=None, npoints=101, units='THz', cutoff_frequency=None, fname='qha')[source]#
Mode Grueneisen parameters along a q-path (dispersion-style output).
Uses three bracketing volumes (V0-, V0, V0+) centred on the middle of the volume scan to finite-difference
gamma_qv = -(V/omega) domega/dVviaphonopy.PhonopyGruneisen. Writes<fname>_gruneisen_band.dat(distance, then the per-branch Grueneisen parameter and frequency) and, when tick labels are available,<fname>_gruneisen_band.labels.The mode Grueneisen parameter carries a
1/omega**2factor, so the acoustic branches diverge asomega -> 0at Gamma and produce spurious spikes there. Modes whose frequency is belowcutoff_frequency(in the outputunits) are therefore masked (written asnan, so a plot simply leaves a gap).cutoff_frequency=Noneuses 1% of the maximum frequency along the path; pass0to disable the masking.Requires at least three volumes with force constants already built.
- PAOFLOW.phonon.do_qha.run_qha(data_controller, nvolumes=5, strain=0.02, qha_dir='qha', mesh=None, t_min=0.0, t_max=1000.0, t_step=10.0, eos='vinet', pressure=0.0, ibrav=None, q_path=None, q_labels=None, q_npoints=101, gruneisen_band=True, gruneisen_cutoff=None, units='THz', fname='qha')[source]#
Harvest the volume scan and compute the QHA quantities (analysis phase).