Phonon bands with/without the ASRΒΆ

This example shows how to plot a phonon band structure with and without enforcing the acoustic sum rule (ASR). Both matplotlib and plotly are supported.

Important

Note that a manager.yml configuration file and an abinit installation are required to run this script as AbiPy needs to invoke anaddb to compute phonons from the DDB file.

Open the DDB file with:

from abipy import abilab
import abipy.data as abidata
filepath = abidata.ref_file("mp-1009129-9x9x10q_ebecs_DDB")
ddb = abilab.abiopen(filepath)

The ddb.anacompare_asr method computes the phonon bands and the DOS by calling anaddb with different values of asr and returns a PhononBandsPlotter object: To make the computation faster, we use the advanced options dipdip -1. This option should produce results similar to dipdip 1 yet make sure to test the effect of this variable before using it in production.

plotter = ddb.anacompare_asr(asr_list=(0, 2), dipdip=-1)
print(plotter)

Out:

[0] asr: 0, dipdip: -1, chneut: 1 --> ================================= Structure =================================
Full Formula (Mg1 O1)
Reduced Formula: MgO
abc   :   2.908638   2.908638   2.656848
angles:  90.000000  90.000000 120.000000
Sites (2)
  #  SP           a         b    c
---  ----  --------  --------  ---
  0  Mg    0         0         0
  1  O     0.333333  0.666667  0.5

Abinit Spacegroup: spgid: 0, num_spatial_symmetries: 12, has_timerev: True, symmorphic: False

Number of q-points: 345
Atomic mass units: {12.0: 24.305, 8.0: 15.9994}
Has non-analytical contribution for q --> 0: True
[1] asr: 2, dipdip: -1, chneut: 1 --> ================================= Structure =================================
Full Formula (Mg1 O1)
Reduced Formula: MgO
abc   :   2.908638   2.908638   2.656848
angles:  90.000000  90.000000 120.000000
Sites (2)
  #  SP           a         b    c
---  ----  --------  --------  ---
  0  Mg    0         0         0
  1  O     0.333333  0.666667  0.5

Abinit Spacegroup: spgid: 0, num_spatial_symmetries: 12, has_timerev: True, symmorphic: False

Number of q-points: 345
Atomic mass units: {12.0: 24.305, 8.0: 15.9994}
Has non-analytical contribution for q --> 0: True

To plot the bands on the same figure with matplotlib, use:

plot ddb asr

Out:

<Figure size 640x480 with 2 Axes>

For the plotly version, use:



To disable the DOS computation, set ``nqsmall` to 0:

plotter = ddb.anacompare_asr(asr_list=(0, 2), nqsmall=0, ndivsm=10, dipdip=-1)

To plot the bands on different subplots with matplotlib, use:

asr: 0, dipdip: -1, chneut: 1, asr: 2, dipdip: -1, chneut: 1

Out:

<Figure size 640x480 with 2 Axes>

For the plotly version, use:



Finally, remember to close the file with:

ddb.close()

Total running time of the script: ( 0 minutes 8.178 seconds)

Gallery generated by Sphinx-Gallery