Skip to content

Preparing a phonopy calculation

All three IRMA outputs take the same phonon input: a phonopy.yaml, named on Card 6f of an ENDF input file (cards are the numbered records of the input format; see the input file reference), in the material.phonopy_yaml field of a spectra configuration, and in the same field of an NCrystal export configuration. The MLIP front end writes one for you inside every bundle from a pretrained machine-learned potential, with no force calculation of your own; if you have none, that page is your route. This page is for the other one: you have run your own force-constant calculation (DFT, AIMD, a classical potential, or a machine-learned potential outside irma mlip) and need to package it so IRMA can read it.

What IRMA actually reads

IRMA loads the phonopy.yaml for the cells and symmetry, then looks for force constants in a fixed order: embedded in the yaml itself first, and otherwise in a file sitting next to the yaml, trying force_constants.hdf5, then FORCE_CONSTANTS, then FORCE_SETS. Finding none of them is an error, and the working directory is never consulted; only the yaml's own directory is searched. The simplest arrangement is therefore a single self-contained file with the force constants embedded, and phonopy will produce exactly that.

From forces to a self-contained phonopy.yaml

The standard phonopy finite-displacement chain, shown here with VASP as the force calculator:

phonopy -d --dim 4 4 4        # displaced supercells + phonopy_disp.yaml
# ... run the force calculator on each displaced supercell ...
phonopy -f disp-001/vasprun.xml disp-002/vasprun.xml   # -> FORCE_SETS
phonopy-load --include-fc

The --include-fc flag is the important one for IRMA: phonopy saves a phonopy.yaml at the end of every run, and with --include-fc (or --include-all) that file carries the force constants inside it. Point IRMA at it and you are done. The same chain works for the other calculators phonopy supports; pass the calculator flag you used at the -d step to the -f step as well (for example phonopy --qe -d ... then phonopy --qe -f ... for Quantum ESPRESSO).

Any calculator interface will do. phonopy keeps the cell in the calculator's native length unit (bohr for qe, abinit, elk, siesta, wien2k, DFTB+, TURBOMOLE, fleur, abacus and qlm; Ångström for vasp, lammps, castep, aims, crystal, pwmat, cp2k) and converts frequencies with a factor that is likewise calculator-specific. IRMA reads both from the phonopy.yaml and applies them at load, so the interface you used changes nothing about the result. There is nothing to convert by hand, and no reason to prefer one interface over another on units grounds.

If you already have a force-constant file

A FORCE_CONSTANTS, force_constants.hdf5, or FORCE_SETS from an earlier phonopy run needs no conversion: place it in the same directory as the phonopy.yaml and IRMA discovers it in the order given above. With FORCE_SETS, phonopy's raw displacement-force data, IRMA has phonopy rebuild the force constants at load time, which costs a moment but changes nothing else.

Polar crystals: BORN and the non-analytical correction

For polar materials (MgO, BeO, oxides in general) the long-range dipole interaction splits the optical branches near the zone center, and phonopy handles it with the non-analytical-term correction (NAC) parameterized by a BORN file: the dielectric tensor and the Born effective charges. IRMA honors NAC two ways. If the phonopy.yaml already embeds the NAC parameters (a phonopy run with --include-all, or --nac workflows that save them), IRMA applies them. On an ENDF input file, Card 6f's use_born=1 additionally names a BORN file explicitly, and an unreadable file is an error rather than a silent fallback. A BORN file merely sitting in the working directory is never picked up on its own; the correction is applied only through one of those two explicit routes.

Checking the calculation before production

Whichever route produced the calculation, look at the phonon density of states before spending compute on an evaluation (phonopy's own -p plotting flag draws it, or plot the total_dos.dat it writes): imaginary modes or a cut-off spectrum mean the force-constant calculation needs attention, not the IRMA settings. The scattering modes page covers the mesh-convergence question, and the troubleshooting page lists the force-constant pitfalls IRMA diagnoses at load time, including the supercell and primitive-cell mismatches it rejects outright.