7. Changelog¶
7.1. dev¶
- Miscellaneous
Build Docker image with supply chain attestations
7.2. v3.0.0 - Oct 28, 2024¶
- New features
eminus preprint release!
Full type hint support!
- Rewritten minimizer
Massive speedup for more k-points
Fixed some convergence issues
- Add non-iterative SCDM localization
Use them as the initial guess for Wannier localization
Use Wannier orbital COMs for FLO generations if no FODs are given
Add magnetization functions
Add POSCAR read and write functions
Add a simple HDF5 file extra
Allow setting of external functional parameters (internal and in pylibxc)
- Coding style
Reformat the codebase using Ruff
Activate more linting rules
Add SPDX license identifiers
Modernize CI pipelines
Add CI release pipelines
Move tox.ini and setup.py contents to pyproject.toml
Merge all handle_k decorators into one
- Miscellaneous
Fix hexagonal grid generation
Fix gradient convergence check, get_ip, and Efermi in extras/viewer
Allow plotting densities in viewer functions for all unit cell types
Add an option to plot both spin channels in band structure plots
Add DOS calculation and plot functions
Add an isovalue keyword to the density viewer
Reduce the default surfaces from 20 to 10 in the density viewer to improve performance
Add pass-through keyword arguments in the Cell creation
Add view and write class methods to Atoms, SCF, and KPoints objects
Set default values for uninitialized SCF attributes to None
Mark the log attribute as private in Atoms and SCF classes
Sync GTH files (this changes values for Na-q9)
Small tests improvements
Update Docker image to Python 3.12
Indicate Python 3.13 support
Use Python 3.13 as the CI base image
Add an eminus Discord server
Add citation information
- Breaking
Cleanup main namespace by only including unified read and write functions
The rewritten minimizer will change the convergence behavior of some systems!
7.3. v2.7.1 - Feb 09, 2024¶
- New features
Stabilize Fermi smearing!
- Updated docs
Restyle many documentation pages
Add a citation page
Add an overview page with a workflow example
Add a smearing example
- Miscellaneous
Small performance improvements
Temperature unit conversion functions
Tests for the smearing implementation
Update Ruff rules
Misc coding style updates
7.4. v2.7.0 - Jan 19, 2024¶
- New features
- Add k-points!
Add k-point dependent calculations
Add a k-points object
Add a band structure, k-point, and Brillouin zone viewer
Add minimization functions for fixed Hamiltonians
Add a symmetry extra to symmetrize k-points
- Updated docs
Add k-point examples
Increase coverage precision
- Coding style
Activate several Ruff rules
Lint check notebooks
Rewrite operator handling
Add a lot of new tests
- Miscellaneous
Add a contour line viewer
Plot lattice vectors in the view_atoms function
Add a NixOS CI test
Add a Nix lock file
Use Python 3.12 as the CI base image
Move Matplotlib to dev extras
Unpin the notebook version
Small performance improvements, e.g, in Atoms object creation
- Experimental
Smearing functionalities
7.5. v2.6.1 - Oct 04, 2023¶
- New features
Add a Cell generation function
Add k-point generation functionalities
Add support to handle trajectory files
- Updated docs
Add a FOD optimization and a reduced density gradient example
Add references to data
- Miscellaneous
- Breaking
Rename X to pos in Atoms
Merge R into a in Atoms
Indicate Python 3.12 support
Support viewing multiple files
Support non-cubic cells in Atoms, io, and viewer functions
Support viewing trajectory files
Fix Nix flake
7.6. v2.6.0 - Aug 07, 2023¶
- New features
- Complete rewrite of the Atoms and SCF classes
Easily allow systems with different charge or multiplicity
Document all public properties
Use properties when parsing input arguments
Allow direct setting of attributes
Better input handling
Use an Occupations object to store electronic states information in Atoms
Use a GTH object to store GTH data in SCF
Add some properties to the objects, e.g., the volume element dV in Atoms
Indicate non-input arguments and non-results as private or read-only
- Breaking
Use unrestricted instead of Nspin
Use spin and charge instead of Nstate and f
Remove f and s as keyword arguments, can be set after initialization
Remove cgform as a keyword argument, use the run function to pass it to minimizers
Rename min keyword to opt
Merge symmetric with guess
Add DFT-D3 dispersion correction as an extra
- Updated docs
Add a theory introduction page
Add documentation to module data/constants
Add a list of all packages and their respective licenses
Re-add documentation of operators to Atoms
Add a custom functional example
Improve the geometry optimization example
Add PNGs to the downloads section
Sort attributes groupwise
Fix a lot of typos
- Coding style
Type check with mypy
Fix a lot of type warnings from mypy
Add type hints to scripts in docs and setup.py
Rename some arguments to not shadow builtins
- Miscellaneous
- Create the eminus-benchmarks repository
Move the SimpleDFT example to said repository
Small performance improvements, mostly for meta-GGAs
Add an error message when attempting to use operators of an unbuilt Atoms object
Add Matplotlib to the viewer setup to generate images in the examples
More tests, e.g, for different spin and charge states
Add a small demo function
7.7. v2.5.0 - Jul 10, 2023¶
- New features
- Add meta-GGA functionals!
Use all meta-GGAs that don’t need a Laplacian from Libxc using pylibxc or PySCF
- Improve minimizer
Add new auto minimizer that functions like pccg but can fallback to sd steps
Add Dai-Yuan conjugate-gradient form
Fancier-looking output from the minimizer
Option to converge the gradient norm
Print <S^2> after an unrestricted calculation
Add eigenenergies to the debug output
- Improve file viewer
Support PDB files
Allow usage outside of notebooks
- Updated docs
Update the introduction page in the documentation
Upload the HTML coverage report
Add a simple geometry optimization example
- Coding style
Simplify H function
Simplify minimizer module
Reduce McCabe code complexity
Switch linter from flake8 to Ruff
Comply with different linting rules, e.g., use triple-quotes in docstrings
More tests and more coverage
- Miscellaneous
Performance fix by using precomputed values correctly
Improve GGA performance
Do an unpaired calculation automatically if the system is unpaired
Option to use a symmetric initial guess, i.e., the same guess for both spin channels
Add trajectory keyword to XYZ and PDB writer to append geometries
Read the field data from CUBE files
- New functions for the
Electron localization function (ELF)
Positive-definite kinetic energy density
Reduced density gradient
Expectation value of S^2 and the multiplicity calculated from it
Option to set a path to directories containing GTH pseudopotential files
The SCF class now contains the xc_type and is_converged variables
Support functional parsing using pylibxc
Allow using custom densities when using the atoms viewer
Remove Gaussian initial guess
Remove exc_only keyword from functionals since it was basically unused
Fix GTH files not being installed when using the PyPI version
Fix mapping of field entries with the respective real-space coordinate
Fix GGA SIC evaluation
7.8. v2.4.0 - May 23, 2023¶
- New features
- Add GGA functionals!
Add internal PBE, PBEsol, and Chachiyo functionals
Option to use all GGAs from Libxc using pylibxc or PySCF
- Miscellaneous
Add Thomas-Fermi and von Weizsaecker kinetic energy density functions
Rewrite functionals for better readability
Fix Torch operators in some edge cases
Merge configuration files in tox.ini
Update minimum versions of dependencies
7.9. v2.3.0 - May 02, 2023¶
- New features
- Add Torch powered FFT operators as an extra
Up to 20% faster calculations
- Add a consolidated configuration class
Easier configuration and more performance infos
- Add a complete test suite
Add CI/CD coverage reports
Nix developer shell support
- Miscellaneous
Rewritten FODs guess function
Simplify the FOD interface in io and viewer
Fix a plethora of small bugs
Update Docker image to Python 3.11
7.10. v2.2.2 - Mar 03, 2023¶
- New features
Improve performance, i.e, in operators, dotprod, and density calculations
Large and/or spin-polarized systems are much faster!
- Coding style
Make Energies a dataclass
- Miscellaneous
Drop Python 3.6 support
Raise minimum version SciPy from 1.4 to 1.6
Add repository statistics to the PyPI sidebar
7.11. v2.2.1 - Feb 22, 2023¶
Hotfix for the broken PyPI installation
Use MANIFEST.in over package_data
Skip tests if pylibxc is not installed
7.12. v2.2.0 - Feb 21, 2023¶
- New features
Supercell Wannier localization
Rewritten xc parser
Modularize each functional
Greatly improve functional performance
Add modified functional variants
Modularize io module
Rewritten save and load functions to use JSON
Add a bunch of tests
Add a small ASCII logo in the info function
Update logo typography
- Updated docs
Add a nomenclature page of commonly used variables
Remove the package name from the module headings
Document members of classes
Add a germanium solid example
- Coding style
More secure coding practices
Remove the usage of eval, exec, and pickle
- Miscellaneous
Rename save and load to write_json and read_json
Fix PW spin-polarized functional
Align Chachiyo functional with Libxc
Add a recenter method to the Atoms and SCF class
Use pc-1 over pc-0 in the PyCOM extra
Add a pyproject.toml
7.13. v2.1.2 - Dec 15, 2022¶
- New features
Add a Dockerfile and -container
Rewrite the grid view function as an atoms viewer
Use plotly over VisPy
Option to plot densities from SCF objects
- Updated docs
Add Docker instructions under Installation section
Update examples to use the new atoms viewer
- Miscellaneous
Unify read, write, and view functions
Add an optional density threshold for functionals
Add covalent radii and CPK colors to data
Add changelog to the PyPI description
Fix flake8 configuration file
Fix Libxc functional warnings
7.14. v2.1.1 - Oct 24, 2022¶
- New features
Use the PySCF Libxc interface if pylibxc is not installed
Rework the addons/extras functionality inclusion
Dependencies can now be installed individually
Rework the Atoms object initialization
- Miscellaneous
Test different platforms and more Python versions in CI
Add kernel aliases to Atoms and SCF methods
Allow mixing Libxc and internal functionals
Add platform version in the info function
Improve logging in some places
Improve file writer formatting
Rename addons to extras
Rename filehandler to io
Update PyPI identifiers (e.g. to display Python 3.11 support)
7.15. v2.1.0 - Sep 19, 2022¶
- New features
Support for spin-polarized calculations!
Rewritten GTH parser to use the CP2K file format
This adds support for the elements Ac to Lr
Built-in Chachiyo correlation functional
New pseudo-random starting guess for comparisons with SimpleDFT
- Updated docs
Improve displaying of examples in the documentation
Convert notebooks to HTML pages
New overview image
Minify pages
- Miscellaneous
Minimal versions for dependencies
GUI option for viewer and better examples
Rename Ns to Nstate to avoid confusion with Nspin
Adapt to newer NumPy RNG generators (use SFC64)
Update default numerical parameters
Option to set charge directly in atom when calculating single atoms
Adapt print precision from convergence tolerance
CI tests for the minimal Python version
Some code style improvements (e.g. using pathlib over os.path)
Misc performance improvements (e.g. in Ylm_real and get_Eewald)
Fix some bugs (e.g. the Libxc interface for spin-polarized systems)
7.16. v2.0.0 - May 20, 2022¶
Performance improved by 10-30%
- New features
SCF class
Domains
Libxc interface
Examples
CG minimizer
Simplify and optimize operators
- Updated docs
New theme with dark mode
Add examples, changelog, and license pages
Add dev information
Enable compression
- Coding style
Improve comments and references
A lot of refactoring and renaming
Google style docstrings
Use loggers
Unify coding style
Remove legacy code
- Miscellaneous
Improve setup.py
More tests
Improve readability
Fix various bugs
7.17. v1.0.1 - Nov 23, 2021¶
Add branding
Fix GTH files not included in PyPI build
7.18. v1.0.0 - Nov 17, 2021¶
Initial release