Automated all-functionals infrared and Raman spectra

This repository contains all the data to reproduce the calculations of the article: L. Bastonero and N. Marzari, Automated all-functionals infrared and Raman spectra, npj Comp. Mat. 10, 55 (2024).

It contains:

  • archive.aiida: AiiDA archive containing all the data and provenance of all the simulations (see also How to navigate)
  • scripts.tar.gz: all the scripts used to:
    • Run the AiiDA WorkChains for:
      • the atomic optimization (PwRelaxWorkChain, folder: relax)
      • the infrared and Raman calculation (IRamanSpectraWorkChain, folder: spectra)
      • the spectra powder spherical average (IntensitiesAverageWorkChain, folder: spectra)
    • Produce the figures and tables of the main paper, the peak table and the Raman spectra fit figure of the Supplementary Information (folder: post-processing)
    • Produce the benchmark figures on AlAs of the Supplementary Information (folder: supplementary_information)

How to reproduce

The calculations can be performed and reproduced with the following AiiDA plugins and codes:

In particular we ran the simulations on the supercomputer Lise and Emmy at NHR@ZIB and NHR@Göttingen as part of the NHR infrastructure, and conducted with computing resources under the project hbc00053 and hbi00059.

For Quantum ESPRESSO versions above and equal 7.1, the Hubbard syntax has changes, and within aiida-quantumespresso the HubbardStructureData should be adopted if trying to reproduce 6.8 versions.

The scripts use to relax the structures, compute the VibrationalData (i.e. via the IRamanSpectraWorkChain), and to obtain the figures can be found in the scripts.tar.gz archive. They can be used immediately after importing archive.aiida in AiiDA. This can be achieved by the following command line in bash (for aiida-core v2.x at least):

verdi archive import archive.aiida

How to navigate

The AiiDA database can be explored either directly on Materials Cloud Archive or by importing the archive.aiida archive in a local AiiDA installation (after having installed the dependencies; see How to reproduce).

To make the navigation of the calculations easier, we gathered the main nodes in the following groups:

  • LiNbO3/workflows/iraman: containing IRamanSpectraWorkChain production run nodes
  • LiNbO3/workflows/relax: containing PwBaseWorkChain production run nodes
  • LiNbO3/vibrational_data: containing the VibrationalData production nodes
  • LiNbO3/spherical_average: containing the IntensitiesAverageWorkChain production nodes
  • LiNbO3/tests: containing tests performed before the production runs
  • AlAs/benchmarks: containing benchmarks calculations on AlAs with finite electric field and DFPT methods

Each node of the production runs is provided by a label indicating the functional used for its calculation. Labels are: LDA, PBE, PBEsol, PBEsol+U, PBEsol+U+V, HSE06, PBE0. A short description of such nodes is also provided. The label can be used along with the query capabilities of aiida-core to query for specific functional(s).

For instance, to query for a LDA VibrationalData (aiida-core v2.x) in the verdi shell:

from aiida.orm import QueryBuilder

functional = 'LDA'
group_label = 'LiNbO3/vibrational_data'

query = QueryBuilder()
query.append(Group, filters={'label':group_label}, tag='group')
query.append((DataFactory('vibroscopy.vibrational'), DataFactory('vibroscopy.fp')), filters={'label':functional}, with_group='group')

vibrational_data = query.first()[0]