Skip to content

v0.15.0

Compare
Choose a tag to compare
@zerothi zerothi released this 13 Aug 08:51
· 98 commits to main since this release

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 7cf88f1
  • #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

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 Siles, #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.