Releases: SSCHAcode/CellConstructor
1.6
Release Notes for CellConstructor 1.6.0
Overview
CellConstructor 1.6.0 is a significant performance-focused release that delivers substantial speedups for phonon calculations, particularly for medium-sized systems (50-200 atoms). This release includes critical bug fixes for modern Fortran compilers and several new features.
Highlights
🚀 Performance Improvements
-
SymmetrizeFCQ Optimization: Vectorized coordinate conversions and q-star copying operations, resulting in up to 25% speedup for symmetry operations on typical systems.
- Cartesian-crystal coordinate conversions are now 6× faster through vectorized
np.einsumoperations - Q-star block copying optimized with NumPy transpose and reshape operations
- Added cached transformation matrices to avoid redundant computations
- Cartesian-crystal coordinate conversions are now 6× faster through vectorized
-
DiagonalizeSupercell Optimization: Major performance boost through vectorized operations and pre-computed phase factors, significantly reducing computation time for large supercell diagonalizations.
-
GenerateSupercell Optimization: New O(N)
set_tau_fastFortran routine replaces the previous O(N²) algorithm for supercell generation, providing substantial speedups for large systems.
🐛 Bug Fixes
- Fortran Compiler Compatibility: Fixed acoustic sum rule errors that occurred with newer Fortran compilers (gfortran 15+), ensuring compatibility with modern HPC environments.
- ForceTensor Error Messages: Improved error handling and messages for incorrect file formats in both second-order and third-order force tensors.
- DiagonalizeSupercell: Fixed the
lo_to_splitargument handling and a missing timer variable that caused NameError exceptions. - Spglib Integration: Removed the restrictive
spglib<=2.2requirement and fixed symmetrization bugs for better compatibility with newer spglib versions.
✨ New Features
- get_primitive_cell() Method: New method in the
Structureclass to easily obtain the primitive cell from any crystal structure, simplifying workflow for high-throughput calculations.
🔧 Improvements
- Timer Support: Added optional
timerparameter toSymmetrizeFCQ,SetupQPoint,SymmetrizeDynQ,ApplyQStar, andImposeSumRulefunctions for detailed performance profiling. - Fortran Module Updates: Enhanced
symdynph_gq_new.f90to properly enforce symmetries after small-group symmetrization.
Detailed Changes
Commits since v1.5
- 684036b - Optimize SymmetrizeFCQ with vectorized coordinate conversions and q-star copying
- d7db321 - Add get_primitive_cell() method to Structure class
- e5f5fff - Fix NameError: add missing t_main_loop_start timer in DiagonalizeSupercell_slow
- b462c05 - Optimize generate_supercell with O(N) set_tau_fast Fortran routine
- c49db94 - Optimize DiagonalizeSupercell with vectorized operations and pre-computed phase factors
- 8da226c - Fixed a typo
- 697666c - Fixed an error in the lo_to_split argumento of DiagonalizeSupercell
- 9415f83 - Fixed the error message when the fileformat is wrong in the ForceTensor
- a7c9f46 - Fixed a missing error message in the file_format
- 502225d - Fix another fortran error in third order
- 6be1e8e - Merge pull request #118 from SSCHAcode/fix_fortran_compiler
- 4228fd4 - New version. Fixed the error with older fortran compilers
- dd6fd10 - Fixed the error of the acoustic sum rule error for using a new fortran compiler
- 4a3bb93 - Fixed another spglib test
- 6e014e7 - Removed the requirement for spglib<=2.2
- d4a100a - Merge pull request #117 from SSCHAcode/spglib_fix
- 62649f2 - Fix a spelling
- cc4fe44 - Fixed a bug
- 49f36b6 - Fixed the spglib symmetrization
- 4045be7 - Fixing the interpolate mesh subroutine
Performance Benchmarks
Small System (CsSnI₃, 5 atoms, 10 irreducible q-points)
- Total Symmetrize time: 0.249s → 0.186s (25% speedup)
- Coordinate conversions: 0.06s → 0.01s (6× speedup)
Medium System (CsSnI₃ rhombohedral, 10 atoms, 18 irreducible q-points)
- Total Symmetrize time: ~0.092s with negligible coordinate conversion overhead
Note: Larger systems with bigger q-point stars will see even more significant improvements from the vectorized operations.
Compatibility
- Python: 3.8+
- NumPy: 1.20+
- ASE: Compatible with latest versions
- Fortran Compiler: gfortran 15+ and Intel Fortran
- Spglib: Now compatible with all recent versions (removed <=2.2 restriction)
Upgrade Notes
This release is fully backward compatible. No API changes were made - all optimizations maintain the existing function signatures and behavior. Users can upgrade seamlessly and immediately benefit from the performance improvements.
Contributors
Thanks to all contributors who made this release possible, particularly for the performance optimizations and compiler compatibility fixes.
Full Changelog: 1.5...1.6.0
1.5.2 : Patch release
This is a patch release of the 1.5 series. It introduces some patches to fix bugs (crashes) that were occurring when the source code is built with the latest version of gfortran.
What's Changed
- Bugfix for the ASR using the new fortran compiler by @mesonepigreco in #118
Full Changelog: 1.5...1.5.2
1.5
Release Notes – Version 1.5
Highlights
- Meson build system
- Migration to the Meson build system.
- Dropped the deprecated installation via
numpy.distutils. - Full compatibility with Python 3.13 and spglib ≥ 2.2.
New Features
- LO–TO splitting in interpolation
- Added support for LO–TO splitting in the
Interpolatemethod. - Enables computation of harmonic free energies for polar materials on dense q-grids.
- Added support for LO–TO splitting in the
Enhancements
- Acoustic Sum Rule for 1D systems
- Implemented enforcement of the acoustic sum rule for 1D materials.
1.4.1
This is a minor release update for 1.4.
It includes some small bug fixes and a new test suite for thermal conductivity.
What's Changed
- Update Spectral.py by @diegomartinez2 in #84
- Added test for the lattice thermal conductivity by @DjordjeDangic in #88
Full Changelog: v1.4...v1.4.1
v1.4
Release Notes for Version 1.4
The new version of cellconstructor introduces compatibility with python 3.11 and a series of bugfixes.
Most importantly:
- The spectral function multiprocessing now works and automatically reorders the results, allowing for efficiently compute the spectral function in parallel on multiple cores
- Phono3py and SSCHA conversion in the Methods section have improved documentation and bugfixes
This version is required to work with python-sscha >= 1.4, which allows for a 100x boost in performances.
What's Changed
- Fixed Functions for Translation: Enhanced translation functions between Phono3py and SSCHA. Contributed by @DjordjeDangic. PR #70
- Spectral Function Multiprocessing: Improved multiprocessing in spectral function. Twice contributed by @diegomartinez2. PR #45 and PR #80
SettingsCompatibility Bug Fix: Resolved a compatibility issue with Python 3.11 inSettings. Contributed by @bastonero. PR #73- Bug Fix in Group Velocities: Addressed a small bug in group velocities calculations which prevented the calculation of thermal transport correctly. Contributed by @DjordjeDangic. PR #74
New Contributors
- @bastonero made their first contribution in PR #73.
1.3
As the SSCHA school just passed, we released the latest development on CellConstructor in the 1.3 version, already distributed on PyPi for some weeks.
The major improvement is the module to compute the ThermalConductivity by @DjordjeDangic, tutorial and documentation is available on the SSCHA school tutorial:
http://sscha.eu/Schools/2023/sscha-school-2023.pdf
Other major improvements are:
- The method to compute phonons using finite differences exploits symmetries to reduce the number of calculations (similarly to phonopy)
- Speedup of 2 orders of magnitudes of some functions that find replicas of atoms in the supercells.
Tons of various bug fixes and improvements.
1.2
A new release of Cellconstructor.
This includes several bugfix and speedup of the code.
A major feature is the new SOBOL algorithm to extract random configurations and an improved parallelization of the Fourier transform.
1.0 vs 1.1
Finally, the code is free from a lot of bugs that affected the pre-release. We can release the 1.0 version...
... but a lot of new functions have been implemented since the 1.0 alpha version, therefore this is the 1.1 version!
What's Changed
- Add read ph output espresso by @mesonepigreco in #6
- Prima prova di pull request by @rafbianco in #8
- update by @mesonepigreco in #9
- Add intel/mkl and GNU/openblas setup.py scripts by @iamc in #17
- Now the Symmetries With SPGLIB should be able to adjust the Q star by @mesonepigreco in #21
- dynbubble routines and some improvements by @rafbianco in #22
- Effective charges interpolation by @mesonepigreco in #23
- Small improvementsof the existing routines by @rafbianco in #27
- Added the possibility to compute the Harmonic Free Energy (when gamma is not the first) by @mesonepigreco in #28
- Fix diagonalize supercell by @mesonepigreco in #30
- Fix symmetries supercell by @mesonepigreco in #31
- Bug fixed in diagonal bubble calculation by @rafbianco in #32
- Fast upsilon by @mesonepigreco in #37
New Contributors
- @mesonepigreco made their first contribution in #6
- @rafbianco made their first contribution in #8
- @iamc made their first contribution in #17
Full Changelog: https://github.com/SSCHAcode/CellConstructor/commits/v1.1