aiida_pythonjob_ins.workflows.base

Shared base WorkChain that obtains force constants for a phonon calculation.

The concrete workflows (dispersion, DOS) all need a ForceConstantsData to work from. This base lets that come from either:

Subclasses add their own inputs/outputs and an outline that begins with:

if_(cls.should_read_castep)(cls.read_force_constants),
cls.assign_force_constants,
...  # their compute steps, using ``self.ctx.force_constants``

Reading Phonopy inside the workflow is intentionally not built in here: Phonopy needs several files, so it is cleaner to read it up front into a ForceConstantsData and pass that as force_constants.