Restructured tutorial suite
Summary
Removes calorine's reliance on data files checked into tutorials/. Every tutorial notebook
now downloads its input/reference data from Zenodo (record 21198312, plus a handful of
external records for shared models/datasets) instead of relying on files committed to the
repository or a local tests/ checkout.
While doing this, the tutorial suite got a full pass:
- All notebooks renamed to a consistent, topic-first naming convention (e.g.
calculators.ipynb->ase_calculators.ipynb,phonons.ipynb+elastic_stiffness_tensor.ipynbmerged intophonons_and_elastic_properties.ipynb). structure_relaxation.ipynb,elastic_stiffness_tensor.ipynb, andnep_descriptors.ipynbremoved (content merged intoase_calculators.ipynb,phonons_and_elastic_properties.ipynb, andnep_model_inspection.ipynb, respectively). Newstructure_analysis.ipynbadded (get_primitive_structure,get_spacegroup,get_wyckoff_sites).- Several notebooks reworked against real (not synthetic/placeholder) data:
nep_training.ipynbnow trains a real one-stage vs. two-stage-curriculum ensemble on a real DFT dataset;inelastic_neutron_scattering.ipynb,dielectric_functions.ipynb,ir_spectra.ipynb, andraman_spectra.ipynbuse real MD trajectories and add temperature-dependence and run-length-convergence sections;phonons_and_elastic_properties.ipynbadds LOTO splitting and a tetragonal BaTiO3 example showing relaxed-vs-clamped elastic constants differing when internal degrees of freedom are present. - Consistent conventions established suite-wide: figure style, point-of-use imports, and
from matplotlib import pyplot as plt. Plotting code is hidden when it appears on its own (as done in rhodent). - Fixed the Sphinx documentation, which the renaming had broken: updated
doc/get_started/index.rst's toctrees and thedoc/get_started/*.ipynbsymlinks to match the current notebook set, and fixed a stale filename filter in.gitlab-ci.yml. - Updated the Docker image to use updated versions of the Python packages, and added both phono3py and resins. This unblocked the BTE job in the tutorial job.
Two real bugs in calorine itself were found in the process and are tracked separately rather
than fixed here (see issues): an intermittent segfault from reusing a CPUNEP instance across
get_force_constants() -> get_elastic_stiffness_tensor() #143, and an O(n^2) memory blowup in
get_dielectric_function()'s default Kramers-Kronig settings on long trajectories #144 (closed) .
Edited by Paul Erhart