v0.8.2
You are encouraged to update to this release which introduces many performance improvements and bug-fixes.
-
Fixed reading _hr.dat from Wannier90, now the band-structure of
SrTiO3 (Junquera's test example) is correct. -
Speeded up tbtrans.py analyzing methods enourmously by introducing
faster sparse iterators. Now one can easily perform data-analysis on
systems in excess of 10.000 atoms very fast. -
Added the TBT.AV.nc file which is meant to be created by
sisl
from
the TBT.nc files (i.e. create the k-averaged output).
This enables users to run tbtrans, create the k-averaged output, and
then delete the old file to heavily reduce disk-usage.An example:
tbtrans RUN.fdf > TBT.out sdata siesta.TBT.nc --tbt-av rm siesta.TBT.nc
after this
siesta.TBT.AV.nc
exists will all k-averaged quantites.
If one is not interested in k-resolved quantities this may be very interesting. -
Updated the TBT.nc sile for improved readability.
-
Easier script data-extraction from TBT.nc files due to easier conversion
between atomic indices and pivoting orbitals.For this:
-
a2p
returns the pivoting indices for the given atoms (complete set) -
o2p
returns the pivoting indices for the given orbitals -
Added
atom
keyword for retrieving DOS for a given set of atoms -
sdata
andTBT.nc
files now enable the creation of the TBT.AV.nc file
which is the k-averaged file of TBT.nc
-
-
Faster bond-current algorithms (faster iterator)
-
Initial template for TBT.Proj files for sdata processing
-
Geometry:
-
Enabled multiplying geometries with integers to emulate
repeat
or
tile
functions:>>> geometry * 2 == geometry.tile(2, 0).tile(2, 1).tile(2, 2) >>> geometry * [2, 1, 2] == geometry.tile(2, 0).tile(2, 2) >>> geometry * [2, 2] == geometry.tile(2, 2) >>> geometry * ([2, 1, 2], 'repeat') == geometry.repeat(2, 0).repeat(2, 2) >>> geometry * ([2, 1, 2], 'r') == geometry.repeat(2, 0).repeat(2, 2) >>> geometry * ([2, 0], 'r') == geometry.repeat(2, 0) >>> geometry * ([2, 2], 'r') == geometry.repeat(2, 2)
This may be considered an advanced feature but useful nonetheless.
-
Enabled "adding" geometries in a similar way as multiplication
I.e. the following applies:>>> A + B == A.add(B) >>> A + (B, 1) == A.append(B, 1) >>> A + (B, 2) == A.append(B, 2) >>> (A, 1) + B == A.prepend(B, 1)
-
Added
origo
andatom
argument to rotation functions. Previously this could be
accomblished by:rotated = geometry.move(-origo).rotate(...).move(origo)
while now it is:
rotated = geometry.rotate(..., origo=origo)
The origo argument may also be a single integer in which case the rotation
is around atomorigo
.Lastly the
atom
argument enables only rotating a sub-set of atoms. -
Geometry[..] is now calling axyz if
..
is pure indices, if it is
aslice
it does not work with super-cell indices -
Added
rij
functions to the Geometry for retrieving distances
between two atoms (orij
for orbitals) -
Renamed iter_linear to iter
-
Added argument to iter_species for only looping certain atomic indices
-
Added iter_orbitals which returns an iterator with atomic and associated
orbitals.
The orbitals are with respect to the local orbital indices on the given atom>>> for ia, io in Geometry.iter_orbitals(): >>> Geometry.atom[ia].R[io]
works, while
>>> for ia, io in Geometry.iter_orbitals(local=False): >>> Geometry.atom[ia].R[io]
does not work because
io
is globally defined. -
Changed argument name for
coords
,atom
instead of the
oldidx
. -
Renamed function
axyzsc
toaxyz
-
-
SparseCSR:
-
Added
iter_nnz(i=None)
which loops on sparse elements connecting to
rowi
(or default to loop on all rows and columns). -
ispmatrix
to iterate through ascipy.sparse.*_matrix
(and theSparseCSR
matrix).
-
-
Hamiltonian:
-
Added
iter_nnz
which is theHamiltonian
equivalent ofSparseCSR.iter_nnz
.
It enables explicit looping on atomic couplings, or orbital couplings.
I.e. one may specify a subset of atoms or orbitals to loop over. -
Preliminary implementation of the non-collinear spin-case. Needs testing.
-