******
0.12.0
******

Released 28 of January 2022.


Contributors
============

A total of 4 people contributed to this release.  People with a "+" by their
names contributed a patch for the first time.

* A.H. Kole +
* Nick Papior
* Pol Febrer
* Thomas Frederiksen

Pull requests merged
====================

A total of 14 pull requests were merged for this release.

* #307: Reading net charges from outSileSiesta
* #313: doc: added description of dictionary keys and fixed a typo
* #365: mnt: changed all origo references to origin
* #367: Parallel calculation of PDOS and (fat)bands
* #368: Allow per-category atom styles in GeometryPlot
* #371: bug: fixed some errors in tutorial notebooks
* #374: bug: geometry plot tests were failing
* #376: tests: removed plotly requirement to test sisl.viz
* #378: mnt: fixed matplotlib tests in <=3.4
* #382: bug: 2D geometry plots didn't take perspective into account.
* #395: Quick bug fix. Plot was not callable.
* #397: tests: avoid too many matplotlib figures
* #402: Use PeriodicTable to convert atomic labels to atomic numbers...
* #403: Fixed construction of non-orthogonal (2-atom) hcp cell

Added
^^^^^^
* Geometry.sub_orbital is added
* BrillouinZone.volume enables easy calculation of volumes for BZ integrals
* State.sub|remove are now allowed to be done inplace
* State.derivative can now correctly calculate 1st and 2nd order derivatives #406
* Enabled discontinuity jumps in band-structures (pass points as None)
* COOP and COHP calculations for eigenstates
* inverse participation ration calculations (with arbitrary q)
* origin point for mirror functionality (Geometry)
* degenerate_dir for `velocity` directions
* `State.remove` complementary to `State.sub`
* copying Dispatchers for subclasses.
* dispatchers to `Shape`
* `Spin.spinor` to get number of spinor components
* `sc` argument to `xyzSile.read_geometry` for user defined cells
* tiling a State object, #354 and #355
* replacing atoms in SparseOrbital geometries #139
* direction now accepts `abc` and `xyz` keywords to retrieve vectors depending on direction input.
* replacing atoms in SparseOrbital geometries #139
* reading from STRUCT_* files (Siesta input/output) #308
* reading the SuperCell block from fdf
* reading PAO.Basis blocks from both out and fdf files, almost complete functionality #90
* generic `transform` method for matrix transformations
* doing ufunc.reduce on SparseCSR matrices; *wrong* values for e.g. np.prod, generally be **CAUTIOUS** with reduction operations
* transposing a SparseCSR matrix
* added pymatgen conversion (Geometry.to/new.pymatgen)
* atom indexing by shapes #337

Fixed
^^^^^^
* `sub_orbital` allows lists of orbitals
* `berry_phase` now works for non-orthogonal basis sets (uses Lowdin transformation)
  This may require sufficiently small dk for accurateness.
* `degenerate` argument for `conductivity` to enable decoupling of states
* BandStructure.lineark now always starts from 0
* reading coordinates from siesta.out when bands are calculated #362
* complex warning for spin_moment #360 and #363
* partially fixed #102 (`wavefunction` for `fxyz` outside box, related to #365 and how origin is interpreted in the code
* non-collinear PDOS plotting
* improvement for BandStructure setup, arguments more stringent
* several fixes for `sisl.viz`; #368, #376 and #382
* empty array handlings in `_sanitize_*` #370
* ensured AtomicOrbital can be instantiated without specifying m (default to 0)
* fixed bug when copying orbitals
* fixed reading atomic labels in xsf files #402
* fixed hpc parameters #403

Changed
^^^^^^^^
* order of arguments for `nanoribbon` it was not consistent with the others
* removed cell argument in `Geometry.sub`
* removed `Sile.exist`, refer to `Sile.file` which always will be a `pathlib.Path` instance
* `berry_phase` now uses the gauge=R convention, the code became much simpler
* `BrillouinZone.parametrize` function changed interface to allow more dimensions
* `EigenStateElectron.inner` does not use the overlap matrix by default, norm2 is for
  exactly this behaviour
* changed license to MPLv2 makes toolboxes easier to contribute under different license
* renamed origo to origin, see #365
* default parallel calculations are disabled
* changed `State.align_*` routines to align `self` rather than `other`
* doc fixes for recommending `python -m pip`

Removed
^^^^^^^^
* removed keywords align for State.inner|outer, manually use `align` if required
* removed method `State.expectation`

toolbox.btd
^^^^^^^^^^^^
# Added
^^^^^^^^
* calculation of scattering states and eigenchannels
* multiple variants of scattering state methods
