Skip to content

Releases: SSCHAcode/CellConstructor

1.6

25 Mar 18:19

Choose a tag to compare

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.einsum operations
    • Q-star block copying optimized with NumPy transpose and reshape operations
    • Added cached transformation matrices to avoid redundant computations
  • 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_fast Fortran 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_split argument handling and a missing timer variable that caused NameError exceptions.
  • Spglib Integration: Removed the restrictive spglib<=2.2 requirement and fixed symmetrization bugs for better compatibility with newer spglib versions.

✨ New Features

  • get_primitive_cell() Method: New method in the Structure class to easily obtain the primitive cell from any crystal structure, simplifying workflow for high-throughput calculations.

🔧 Improvements

  • Timer Support: Added optional timer parameter to SymmetrizeFCQ, SetupQPoint, SymmetrizeDynQ, ApplyQStar, and ImposeSumRule functions for detailed performance profiling.
  • Fortran Module Updates: Enhanced symdynph_gq_new.f90 to properly enforce symmetries after small-group symmetrization.

Detailed Changes

Commits since v1.5

  1. 684036b - Optimize SymmetrizeFCQ with vectorized coordinate conversions and q-star copying
  2. d7db321 - Add get_primitive_cell() method to Structure class
  3. e5f5fff - Fix NameError: add missing t_main_loop_start timer in DiagonalizeSupercell_slow
  4. b462c05 - Optimize generate_supercell with O(N) set_tau_fast Fortran routine
  5. c49db94 - Optimize DiagonalizeSupercell with vectorized operations and pre-computed phase factors
  6. 8da226c - Fixed a typo
  7. 697666c - Fixed an error in the lo_to_split argumento of DiagonalizeSupercell
  8. 9415f83 - Fixed the error message when the fileformat is wrong in the ForceTensor
  9. a7c9f46 - Fixed a missing error message in the file_format
  10. 502225d - Fix another fortran error in third order
  11. 6be1e8e - Merge pull request #118 from SSCHAcode/fix_fortran_compiler
  12. 4228fd4 - New version. Fixed the error with older fortran compilers
  13. dd6fd10 - Fixed the error of the acoustic sum rule error for using a new fortran compiler
  14. 4a3bb93 - Fixed another spglib test
  15. 6e014e7 - Removed the requirement for spglib<=2.2
  16. d4a100a - Merge pull request #117 from SSCHAcode/spglib_fix
  17. 62649f2 - Fix a spelling
  18. cc4fe44 - Fixed a bug
  19. 49f36b6 - Fixed the spglib symmetrization
  20. 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

21 Nov 07:19

Choose a tag to compare

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

Full Changelog: 1.5...1.5.2

1.5

03 Oct 16:45

Choose a tag to compare

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 Interpolate method.
    • Enables computation of harmonic free energies for polar materials on dense q-grids.

Enhancements

  • Acoustic Sum Rule for 1D systems
    • Implemented enforcement of the acoustic sum rule for 1D materials.

1.4.1

15 Feb 07:27

Choose a tag to compare

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

Full Changelog: v1.4...v1.4.1

v1.4

21 Nov 15:55

Choose a tag to compare

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
  • Settings Compatibility Bug Fix: Resolved a compatibility issue with Python 3.11 in Settings. 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

Full Changelog

1.3

07 Jul 15:16

Choose a tag to compare

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

10 Sep 14:07

Choose a tag to compare

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

24 Feb 21:17

Choose a tag to compare

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

New Contributors

Full Changelog: https://github.com/SSCHAcode/CellConstructor/commits/v1.1