0.15.0

Released 13 of August 2024.

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 92 pull requests were merged for this release.

  • #393: Linear and efficient neighbour finder

  • #496: Calculate psi values on a sparse grid, to accelerate multiple…

  • #497: mnt: changed spin_squared name to other name

  • #647: Added a node to keep track of files

  • #651: added typing hints for Lattice and LatticeChild

  • #652: added sanitize to SparseCSR and __setitem__

  • #658: Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11

  • #659: Bump JamesIves/github-pages-deploy-action from 4.4.3 to 4.5.0

  • #660: Bump actions/setup-python from 4 to 5

  • #662: Bump github/codeql-action from 2 to 3

  • #663: Bump actions/upload-artifact from 3 to 4

  • #664: Bump actions/download-artifact from 3 to 4

  • #665: moving towards functional programming in sisl

  • #666: Support for conditional expressions on workflows.

  • #667: ensure that workflows have (and transmit) the right state

  • #668: WIP: Added a matrix plot

  • #670: Missing fdf flags error

  • #672: first try at implementing bond-order calculations

  • #673: removed selector from code base

  • #679: Bump codecov/codecov-action from 3 to 4

  • #681: Fix multisize 3D balls in plots

  • #682: Added Jmol colors as defaults for atoms.

  • #683: Added pre-commit config

  • #684: Some tweaks to atom colors

  • #686: 579 dftb hamiltonian

  • #692: Lazy loading of the viz module

  • #693: Fix wheels workflow

  • #695: added typing in lots of io places, added SileSlicer

  • #696: Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.12

  • #697: Optimize nsc after reading Hamiltonian from wann90 output

  • #702: fixed #700 by reverting 7cf88f1a5

  • #704: Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14

  • #706: cleaned finder and removed pbc (getting it from Lattice)

  • #710: removed txtSileOrca.no/info.no since it was never present

  • #711: added warning for complex grids and isosurface

  • #714: 675 documentation

  • #715: Bump pypa/cibuildwheel from 2.16 to 2.17

  • #717: Fix for reading spinful CHG/CHGCAR

  • #722: Add read_gtensor and read_hyperfine_coupling to txtSileORCA

  • #723: add test for reading Hamiltonian from wannier90 output

  • #725: Additional energy units

  • #726: units as parameter in read_*

  • #727: Resolve Issue #716

  • #729: Minor ORCA/VASP documentation improvements

  • #734: Remove deprecated bc argument to Grid

  • #736: Some polishing of sisl.nodes

  • #737: added math notation convention

  • #739: Ensure __module__ is fine on node class creation

  • #742: Draft: add vectorsSileSIESTA for parsing vibra output

  • #743: Added specific functions to create animations and subplots

  • #746: 745 rtd files

  • #749: Ensure c-order for Geometry coordinates

  • #750: norm2 as atom-resolved quantity

  • #751: made State.inner a very flexible matrix product

  • #752: added hexagonal and goldene

  • #753: removed sisl.plot from the code base

  • #754: Reading spin densities from CHGCAR

  • #755: Bump JamesIves/github-pages-deploy-action from 4.5.0 to 4.6.0

  • #757: Plot update on getting attributes

  • #758: Added declaration of some attributes in Figure

  • #759: Removed nodes from sisl

  • #761: removed 3.8 support, bumped min to 3.9

  • #762: CI also run on minimal installation

  • #763: changed phonon displacement shape

  • #765: Modifying the returns of the neighbor finder

  • #767: fixed pbc usage across sisl, fixes #764

  • #769: Bump pypa/cibuildwheel from 2.17 to 2.18

  • #771: Removed leftover print

  • #772: Removed deprecated argument diag->projection

  • #773: Dihedral angles

  • #774: Bump JamesIves/github-pages-deploy-action from 4.6.0 to 4.6.1

  • #776: Add support for sisl in nodify’s GUI

  • #779: fixed reading geometries from fdf + XV + STRUCT

  • #780: Allow dash to be set in bands plots.

  • #781: Allow tuning matplotlib subplots.

  • #784: Legend grouping in bands plots

  • #786: Allow custom color scales across sisl.viz

  • #787: Clarify viz dependencies error

  • #788: Bump pypa/cibuildwheel from 2.18 to 2.19

  • #789: Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0

  • #790: fixed lots of parallel calculations

  • #792: trying to remove numpy 2 (as a temporary work-around)

  • #793: adding test for parallel calculation

  • #796: Clarify out of memory error on density

  • #797: 766 shc

  • #803: Bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3

  • #804: ensured building against numpy>=2

  • #805: Fix bug with numpy v2.0

  • #807: Fix fatbands with negative size

  • #809: enabled vacuum for all geometries with non-pbc directions

  • #812: completed tests rearrangement

  • #818: fixing many simple PEP-585 deprecations

[0.15.0] - 2024-08-13

Added

  • conversion of list-like elements to Lattice

  • vacuum argument for all sisl.geom methods that can use it

  • Geometry.find_nsc, alternate method for calculating nsc with more options

  • sisl._debug_info for more complete debug information

  • axes argument added to derivative to only calculate on a subset of directions (can greatly improve performance for some systems)

  • operator argument added to derivative to apply an operator to dHk and dSk matrices. of directions (can greatly improve performance for some systems)

  • added apply_kwargs to methods which uses a BrillouinZone object. This enables one to leverage parallel processing for calculations.

  • SISL_PAR_CHUNKSIZE=25, new default parameter for parallel processing. Can greatly improve parallel processing of BZ integrations

  • added vectorsSileSiesta to read vibra eigenmode output

  • added dihedral to Geometry, #773

  • ability to retain sub-classes through <class>.new calls

  • added Listify to ensure arguments behaves as iterables

  • setter for Lattice.pbc to specify it through an array

  • Lattice.volumef to calculate a subset volume based on axes

  • added write_grid to Siesta binary grid files

  • added the goldene 2D lattice, a hexagonal Gold 2D structure

  • added the hexagonal 2D lattice, close-packed FCC(111) surface

  • improved atom projections of states, #750

  • improved typing system

  • units to read_* for some Sile`s, :pull:`#726

  • enabled reading the Hamiltonian from the Wannier90 _tb.dat file, #727

  • “Hz”, “MHz”, “GHz”, “THz”, and “invcm” as valid energy units, #725

  • added read_gtensor and read_hyperfine_coupling to txtSileORCA, #722

  • enabled AtomsArgument and OrbitalsArgument to accept bool for all or none

  • enabled winSileWannier90.read_hamiltonian to read the _tb.dat files

  • atoms argument to DensityMatrix.spin_align to align a subset of atoms (only diagonal elements between the atoms orbitals)

  • added an efficient neighbor finder, #393

  • enabled reading DFTB+ output Hamiltonian and overlap matrices, #579

  • bond_order for DensityMatrix objects, #507

  • better error messages when users request quantities not calculated by Siesta/TBtrans

  • functional programming of the basic sisl classes Now many of the Geometry|Lattice|Grid.* manipulation routines which returns new objects, are subjected to dispatch methods. E.g.

    sisl.tile(geometry, 2, axis=1) geometry.tile(2, axis=1)

    will call the same method. The first uses a dispatch method, and a SislError will be raised if the dispatch argument is not implemented.

  • SparseCSR.toarray to comply with array handling (equivalent to todense)

  • enabled Grid.to|new with the most basic stuff str|Path|Grid|pyamg

  • Shape.translate, to easily translate entire shape constructs, #655

  • Creation of chiral GNRs (kind=chiral in sisl.geom.nanoribbon/sisl.geom.graphene_nanoribbon as well as sisl.geom.cgnr)

  • Creation of [n]-triangulenes (sisl.geom.triangulene)

  • added offset argument in Geometry.add_vacuum to enable shifting atomic coordinates

  • A new AtomicMatrixPlot to plot sparse matrices, #668

Fixed

  • PEP-585 compliant

  • buildable for numpy>2, #791

  • BrillouinZone.tocartesian() now defaults to k=self.k

  • reading XV/STRUCT files from fdf siles could cause problems, #778

  • Geometry.[ao][us]c2[su]c methods now retains the input shapes (unless unique=True)

  • lots of Lattice methods did not consistently copy over BC

  • BrillouinZone.volume fixed to actually return BZ volume use Lattice.volume for getting the lattice volume.

  • xsf files now only respect lattice.pbc for determining PBC, #764

  • fixed CHGCAR spin-polarized density reads, #754

  • dispatch methods now searches the mro for best matches, #721

  • all eps arguments has changed to atol

  • methods with axis arguments now accepts the str equivalent 0==a

  • documentation links to external resources

  • fixed chgSileVASP.read_grid for spinful calculations

  • txtSileOrca.info.no used a wrong regex, added a test

  • raises error when requesting isosurface for complex valued grids, #709

  • some attributes associated with Sile.info.* will now warn instead of raising information

  • reading matrices from HSX files with weird labels, should now work (fingers-crossed)

  • Atom(Z=”1000”) will now correctly work, #708

  • AtomUnknown now also has a default mass of 1e40

  • changed read_force_constant to read_hessian, the old methods are retained with deprecation warnings.

  • pdosSileSiesta plotting produced wrong spin components for NC/SOC

  • tqdm changed API in 2019, eta=True in Notebooks should now work

  • SparseCSR ufunc handling, in some corner cases could the dtype casting do things wrongly.

  • fixed corner cases where the SparseCSR.diags(offsets=) would add elements in non-existing elements

  • some cases of writing orthogonal matrices to TSHS/nc file formats #661

  • BDOS from TBtrans calculations now returns the full DOS of all (Bloch-expanded) atoms

  • Lattice objects now issues a warning when created with 0-length vectors

  • HSX file reads should respect input geometry arguments

  • enabled slicing in matrix assignments, #650

  • changed Shape.volume() to Shape.volume

  • growth direction for zigzag heteroribbons

  • BandStructure points can now automatically add the nsc == 1 axis as would be done for assigning matrix elements (it fills with 0’s).

Removed

  • degenerate argument in velocity/derivative, they do not belong there

  • xvSileSiesta.read_geometry(species_as_Z), deprecated in favor of atoms=

  • structSileSiesta.read_geometry(species_as_Z), deprecated in favor of atoms=

  • Atom.radii is removed, Atom.radius is the correct invocation

  • sisl.plot is removed (sisl.viz is replacing it!)

  • cell argument for Geometry.translate/move (it never worked)

  • removed Selector and TimeSelector, they were never used internally

Changed

  • internal test structure, should improve future progress

  • Lattice.parameters now returns a 2-tuple of length, angles

  • units of conductivity has changed to S / Ang

  • conductivity is deprecated, use ahc and shc instead

  • berry_curvature has completely changed, checks it API

  • BZ apply methods are now by default parallel (if SISL_NUM_PROCS>1)

  • hsxSileSiesta.read_hamiltonian now implicitly shifts Fermi-level to 0 (for newer HSX versions)

  • deprecated periodic to axes argument in BrillouinZone.volume

  • changed Eigenmode.displacement shape, please read the documentation

  • bumped minimal Python version to 3.9, #640

  • documentation build system on RTD is updated, #745

  • gauge arguments now accept ‘cell’ and ‘orbital’ in replacements for ‘R’ and ‘r’, respectively

  • siesta.*.read_basis now defaults to read an Atoms object with all atoms

  • atoms.specie changed to atoms.species, generally species is the singular form

  • in_place arguments changed to inplace

  • renamed stdoutSileVASP to outcarSileVASP, #719

  • deprecated scale_atoms in favor of scale_basis in Geometry.scale

  • changed default number of eigenvalues calculated in sparse eigsh, from 10 to 1

  • stdoutSileSiesta.read_* now defaults to read the next entry, and not the last

  • stdoutSileSiesta.read_* changed MD output functionality, see #586 for details

  • AtomNeighbours changed name to AtomNeighbor to follow #393

  • changed method name spin_squared to spin_contamination

  • removed Lattice.translate|move, they did not make sense, and so their usage should be deferred to Lattice.add instead.

  • vacuum is now an optional parameter for all ribbon structures

  • enabled array_fill_repeat with custom axis, to tile along specific dimensions

  • Importing sisl.viz explicitly is no longer needed, as it will be lazily loaded whenever it is required.