****** 0.14.0 ****** Released 28 of September 2023. Contributors ============ A total of 4 people contributed to this release. People with a "+" by their names contributed a patch for the first time. * Nick Papior * Nils Wittemeier * Pol Febrer * Thomas Frederiksen Pull requests merged ==================== A total of 30 pull requests were merged for this release. * #421: Function to build heteroribbons * #476: Refactoring the viz module to a more modular design. * #528: bug: outSile.read_scf was not able to read unconverged SCF loops * #531: enh: Added Nodes and Workflows. * #533: bug: functions could not overwrite node arguments * #534: Add env variable to docs build * #540: bug: fixed swapaxes handling * #542: mnt: changed only= keyword arguments to what= * #544: aniSileSiesta * #546: mnt: added geometry collection with some more features * #547: mnt: nodes context settings are no longer a regular input * #549: Bugfix for rotate(..., atoms=list) + additional tests * #550: changed SuperCell to Lattice, long overdue * #562: Wrap fortran files import in try/except block. * #563: Scikit build core * #566: Make documentation tabs more visual * #573: VASP forces from OUTCAR * #575: cleaned the procedure for locating maxR * #581: undo change of filenames * #585: `translate2uc` for sparse matrices with associated geometries. * #586: Slicing IO `read_*` routines * #589: removed Collection + GeometryCollection * #594: Fix missing import in siesta_grid. * #596: netCDF4 is now an optional dependency * #598: maint: Adapt to breaking changes in scipy.sparse.isspmatrix [0.14.0] - 2023-09-28 ---------------------- Added ^^^^^^ * added SISL_UNIT_SIESTA to select between legacy or codata2018 units (since Siesta 5) New default is codata2018, may create inconsistencies until Siesta 5 is widely adopted. * added --remove to sgeom for removing single atoms * added a EllipticalCylinder as a new shape * added basis-enthalpy to the stdoutSiestaSile.read_energy routine * added `read_trajectory` to read cell vectors, atomic positions, and forces from VASP OUTCAR * slicing io files multiple output (still WIP), see #584 for details Intention is to have all methods use this method for returning multiple values, it should streamline the API. * allowed xyz files to read Origin entries in the comment field * allowed sile specifiers to be more explicit: * "hello.xyz{contains=}" equivalent to "hello.xyz{}" * "hello.xyz{startswith=}" class name should start with `` * "hello.xyz{endswith=}" class name should end with `` This is useful for defining a currently working code: SISL_IO_DEFAULT=siesta * added environment variable ``SISL_IO_DEFAULT`` which appends a sile specifier if not explicitly added. I.e. ``get_sile("hello.xyz")`` is equivalent to ``get_sile("hello.xyz{os.environ["SISL_IO_DEFAULT"]}"``. Fixes #576 * added a context manager for manipulating the global env-vars in temporary locations. ``with sisl_environ(SISL_IO_DEFAULT=...)`` * enabled `Geometry.append|prepend` in `sgeom` command (reads other files) * added `fdfSileSiesta.write_brillouinzone` to easily write BandLines to the fdf output, see #141 * added `aniSileSiesta` for MD output of Siesta, #544 * `mdSileOpenMX` for MD output of OpenMX * `Atoms.formula` to get a chemical formula, currently only Hill notation * unified the index argument for reading Grids, `read_grid`, this influences Siesta and VASP grid reads. * `sisl.mixing`: * `AndersonMixer` enables the popular and very simple linear-like mixer * `StepMixer` allows switching between different mixers, for instance this enabled restart capabilities among other things. * Enabled composite mixers (simple math with mixers) * `BrillouinZone.merge` allows simple merging of several objects, #537 Changed ^^^^^^^^ * updated the viz module, #476 * allowing ^ negation in order arguments for siles * internal change to comply with scipy changes, use issparse instead of spmatrix, see #598 * netCDF4 is now an optional dependency, #595 * interface for Sparse*.nonzero(), arguments suffixed with 's' * `stdoutSileVASP` will not accept `all=` arguments * `stdoutSileVASP.read_energy` returns as default the next item (no longer the last) * `txtSileOrca` will not accept `all=` arguments, see #584 * `stdoutSileOrca` will not accept `all=` arguments, see #584 * `xyzSile` out from sisl will now default to the extended xyz file-format Explicitly adding the nsc= value makes it compatible with other exyz file formats and parseable by sisl, this is an internal change * default of `Geometry.translate2uc`, now only periodic axes are default to be moved * all out files have been renamed to stdout to clarify they are user determined output file names, suggestion by @tfrederiksen * bumped Python requirement to >=3.8 * orbitals `R` arguments will now by default determine the minimal radii that contains 99.99% of the function integrand. The argument now accepts values -1:0 which is a fraction of the integrand that the function should contain, a positive value will explicitly set the range #574 * Added printout of the removed couplings in the `RecursiveSI` * `SuperCell` class is officially deprecated in favor of `Lattice`, see #95 for details The old class will still be accessible and usable for some time (at least a year) * Enabled EigenState.wavefunction(grid) to accept grid as the initialization of the grid argument, so one does not need to produce the `Grid` on before-hand * ``Geometry.rotate(only=)`` to ``(what=)``, this is to unify the interfaces across, #541 Also changed the default value to be "xyz" if atoms is Not none * ``tbtncSileTBtrans(only=)`` arguments are changed to (what=) #541 * `SelfEnergy.scattering_matrix` is changed to `SelfEnergy.broadening_matrix` ince the scattering matrix is an S-matrix usage. Also changed `se2scat` to `se2broadening` #529 * allow `BrillouinZone` initialization with scalar weights for all k-points #537 * `Geometry.swapaxes` and `SuperCell.swapaxes`, these are now more versatile by allowing multiple swaps in a single run, #539 * deprecated `set_sc` * internal build-system is changed to `scikit-build-core`, the `distutils` will be deprecated in Python>=3.12 so it was a needed change. This resulted in a directory restructuring. Fixed ^^^^^^ * fixed Mulliken calculations for polarized calculations due to missing copy, #611 * fixed single argument `ret_isc=True` of `close`, #604 and #605 * tiling Grid now only possible for commensurate grids (grid.lattice % grid.geometry.lattice) * rare cases for non-Gamma calculations with actual Gamma matrices resulted in crashes #572 * `MonkhorstPack.replace` now checks for symmetry k-points if the BZ is using trs. Additionally the displacements are moved to the primitive point before comparing, this partly fixed #568 * spin-orbit Hamiltonians in `RealSpaceSE` and `RealSpaceSI`, fixes #567 * ufunc reductions on `SparseGeometry` where `axis` arguments reduces dimensionality * interaction with pymatgen * `fdfSileSiesta.includes` would fail when empty lines were present, #555 fixed and added test * Documentation now uses global references * `Geometry.swapaxes` would not swap latticevector cartesian coordinates, #539 toolbox.btd ----------- Added ^^^^^^^^ * calculation of scattering matrices