Electronic structure Python package for post analysis and large scale tight-binding DFT/NEGF calculations
Released 7 of November 2023.
A total of 2 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 11 pull requests were merged for this release.
sisl.geom.honeycomb_flake
,
sisl.geom.graphene_flake
). #636Geometry.as_supercell
to create the supercell structure,
thanks to @pfebrer for the suggestionLattice.to
and Lattice.new
to function the same
as Geometry
, added Lattice.to["Cuboid"]Atom.to
, currently only to.Sphere()
Geometry.to|new.Sile(...)
toSphere|toEllipsoid|...
as deprecatedSile.info.<attr>
by exposing
attributes through an object on each class.
The info_attributes contains a list of attributes that can be
discovered while reading ascii files see #509Geometry.close
would not catch all neighbours, #633Lattice
now holds the boundary conditions (not Grid
), see #626sile.info.<attr>
instead to reduce
the number of methods exposed on each sile.Released 4 of October 2023.
A total of 2 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 5 pull requests were merged for this release.
sisl.viz
Released 28 of September 2023.
A total of 4 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 30 pull requests were merged for this release.
translate2uc
for sparse matrices with associated geometries.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=
"hello.xyz{startswith=<name>
"hello.xyz{endswith=<name>
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 mixerStepMixer
allows switching between different mixers, for instance this
enabled restart capabilities among other things.BrillouinZone.merge
allows simple merging of several objects, #537
stdoutSileVASP
will not accept all=
argumentsstdoutSileVASP.read_energy
returns as default the next item (no longer the last)txtSileOrca
will not accept all=
arguments, see #584stdoutSileOrca
will not accept all=
arguments, see #584xyzSile
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 changeGeometry.translate2uc
, now only periodic axes are
default to be movedR
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 #574RecursiveSI
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)Grid
on before-handGeometry.rotate(only=)
to (what=)
, this is to unify the interfaces across, #541
Also changed the default value to be "xyz" if atoms is Not nonetbtncSileTBtrans(only=)
arguments are changed to (what=) #541SelfEnergy.scattering_matrix
is changed to SelfEnergy.broadening_matrix
ince the scattering matrix is an S-matrix usage.
Also changed se2scat
to se2broadening
#529BrillouinZone
initialization with scalar weights for all k-points #537Geometry.swapaxes
and SuperCell.swapaxes
, these are now more versatile by
allowing multiple swaps in a single run, #539set_sc
scikit-build-core
, the distutils
will be
deprecated in Python>=3.12 so it was a needed change.
This resulted in a directory restructuring.ret_isc=True
of close
, #604 and #605MonkhorstPack.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 #568RealSpaceSE
and RealSpaceSI
, fixes #567SparseGeometry
where axis
arguments reduces
dimensionalityfdfSileSiesta.includes
would fail when empty lines were present, #555
fixed and added testGeometry.swapaxes
would not swap latticevector cartesian coordinates, #539Released 18 of January 2023.
A total of 5 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 18 pull requests were merged for this release.
step_to()
vacuum=None
as a possibility...Geometry.apply
apply functions to slices of data depending on the geometrykwargs
passed to eigenstate functions in berry_phase
and conductivity
transform
will copy over overlap matrix
in case the matrix is only touching the non-overlap elementsAtoms
initialization
in place of atoms
argument. Both in the list-like entry, or
as the only argument.within_inf
with periodic arguments, #511PDOS
, spin_moment
, #486cell_length
changed to cell2length
with new axes argumenthoneycomb
(graphene
derivatives)
lattice vectors, to ensure the vectors are following right-hand-rule, #488*_transmission
refers to energy resolved transmissions
and *_current
reflects bias-window integrated quantities.
The defaults and argument order has changed drastically, so
users should adapt their scripts depending on sisl
version.
A check can be made, if sisl.__version_tuple__[:3] >= (0, 13, 0):
*_ACO[OH]P
routines have changed
elec
and E
argument order. This makes them compatible with
orbital_transmission
etc.A total of 3 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 4 pull requests were merged for this release.
batched_indices
for memory-reduced location of array valuessisl.physics.yield_manifolds
berry_phase
rocksalt
@tfrederiksenfcc_slab
, bcc_slab
and rocksalt_slab
@tfrederiksenGeometry.translate2uc
to shift everything into the unit-cell @tfrederiksenGeometry.unrepeat
to reverse repeat
calls (and to sgeom
)SparseGeometry.unrepeat
to reverse repeat
callsatoms
argument in Geometry.center
callssisl.geom
geometries are now calling optimize_nsc
if neededSparseGeometry.cut
-> SparseGeometry.untile
cut
is now deprecated (removed in 0.13)sgeom
to --untile
, deprecated flagA total of 2 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 0 pull requests were merged for this release.
sdata
handling of siesta.PDOS* files, much more versatily nowA total of 4 people contributed to this release. People with a "+" by their names contributed a patch for the first time.
A total of 14 pull requests were merged for this release.
velocity
directionsState.remove
complementary to State.sub
Shape
Spin.spinor
to get number of spinor componentssc
argument to xyzSile.read_geometry
for user defined cellsabc
and xyz
keywords to retrieve vectors depending on direction input.transform
method for matrix transformationssub_orbital
allows lists of orbitalsberry_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 stateswavefunction
for fxyz
outside box, related to #365 and how origin is interpreted in the codesisl.viz
; #368, #376 and #382_sanitize_*
#370nanoribbon
it was not consistent with the othersGeometry.sub
Sile.exist
, refer to Sile.file
which always will be a pathlib.Path
instanceberry_phase
now uses the gauge=R convention, the code became much simplerBrillouinZone.parametrize
function changed interface to allow more dimensionsEigenStateElectron.inner
does not use the overlap matrix by default, norm2 is for
exactly this behaviourState.align_*
routines to align self
rather than other
python -m pip
align
if requiredState.expectation
Major addition: plotly backend for plotting and interaction with output. This is still a work in progress made by Pol Febrer. Many thanks to @pfebrer!
Added unzip argument to BZ.apply methods to unzip multiple return values, also added documentation to reflect this
Fixed reading data-arrays from Siesta-PDOS files
Enabled minimization method for basis information and pseudo generation
Enabled plotting grids using the command-line
Bug in how non-colinear matrices are dealt with, now fixed Thanks to Xe Hu for discovering this.
Allowed reading the geometry for supercell HSX files Atomic coordinates and nsc are determined from xij arrays
Basic implementation of Hermitian construct. It now ensures a correct Hermitian matrix for simple cases
Added more return from close/within, supercell offsets may be queried (ret_isc)
Added more transposing functionality for spin matrices
Fixed wfsxSileSiesta
returning proper k-points if a geometry
is passed (i.e. reduced k-points). Otherwise warns users
Huge performance increase for finalizing very large structures
Fixed writing %block
in fdf files
Enabled reading Fermi level from VASP DOSCAR files
Cleaned siesta and VASP reading of completed jobs, #287
added Geometry.new allowing easy type-lookups to convert to Geometry e.g. Geometry.new("RUN.fdf") and Geometry.new(ase_atoms) automatically figures out which method to call and how to interpret the objects. added Geometry.to allowing easy type-lookups to convert to other objects #282
enabled calculating supercell matrices with phases, format=sc:
removed support for int and long as matrix types, only float/complex
Enabled sgrid
to write tables of data
Merged spin_orbital_moment(deleted) and spin_moment with optional argument project
Enabled orbital resolved velocities
Added outSileSiesta.read_energy
to read final energies in a property-dict
(works both as a property (energy.fermi
) and a dictionary (energy["fermi"]
)
Ensured ghost atoms in Siesta are handled with separate
class, AtomGhost
, #249
Using si.RealspaceSI
with unfold=(1,1,1)
no longer results in nsc
on
the given surface hamiltonian being set to (1,1,1)
.
Added calculation of isosurfaces, #246
Added sisl.WideBandSE
for self-energies with constant diagonals
Enabled more user control over categories, #242
Improved interpolation function for Grid's, and also added filters
Bugfix for periodic directions for ASE conversion, #231
Fixed tuples for _sanitize_atoms
, #233
Fixed reading correct unit from deltanc files, #234
Enabled berry-phase calculations for NC+SOC, #235
Added tiling to Grid
, #238
Added Atoms.group_data
which nicely splits an array holding
orbital information into atomic contributions (a list since
each sub-list may be unequal in length)
Many small bug-fixes and performance improvements
A total of 5 people contributed to this release.
A total of 12 pull requests were merged for this release.
#231 <https://github.com/zerothi/sisl/pull/231>
__: Transmitting pbc to ASE#246 <https://github.com/zerothi/sisl/pull/246>
__: Method to calculate grid isosurfaces#253 <https://github.com/zerothi/sisl/pull/253>
__: Geometry._sanitize_atoms did not accept generic categories#254 <https://github.com/zerothi/sisl/pull/254>
__: f-string was not printing variable value due to missing f#255 <https://github.com/zerothi/sisl/pull/255>
__: Make parent categories callable and avoid their instantiation#258 <https://github.com/zerothi/sisl/pull/258>
__: Making coordinate categories more accessible#263 <https://github.com/zerothi/sisl/pull/263>
__: Supporting the creation of Binder docker images#267 <https://github.com/zerothi/sisl/pull/267>
__: bug: skewed isosurfaces were not properly calculated#270 <https://github.com/zerothi/sisl/pull/270>
__: Fixed reading geometries in .AXSF-files#277 <https://github.com/zerothi/sisl/pull/277>
__: maint: remove ending blank line when writing xyz-files#298 <https://github.com/zerothi/sisl/pull/298>
__: All plotly tests passing now#300 <https://github.com/zerothi/sisl/pull/300>
__: Make plotly docs workExposing sisl_toolbox
as a module for external contributions
Now stuff contributed from 3rd parties can easily be included
in a toolbox which is a separate module.
Changed asarray
(as*
) methods for SparseGeometry
Now we have a dispatch class which enables one
to store the behaviour as variables and then post-process
Using *.geom
or geometry.atom
is now deprecated, use
*.geometry
and geometry.atoms
instead (respectively)
Added spin-rotation for density matrices, this will enable sisl to manipulate DM and write them for Siesta calculations
Enabled all numpy.ufuncs
(np.exp(H)
)
Added nanoribbons construction (Thomas)
Internal change to pathlib for files and paths
Added velocity calculations for NC+SOC Hamiltonians
Sparse pattern transposes of non-full matrices, fixed bug
Changed Geometry.sort
to be more diverse (this may break old code)
This new way of sorting is way more flexible and allows very fine
control, fixes #191, #197
Added a bilayer geometry which can create twisted bilayers #181, #186
Enabled VASP *CAR files to write/read dynamic specifications #185
Enabled xarray.DataArray
returning from BrillouinZone objects #182
Several improvements to outSileSiesta.read_scf
#174, #180
A huge performance increase for data extraction in tbtncSileTbtrans (thanks to Gaetano Calogero for finding the bottleneck)
Added preliminary usage of Mixers, primarily intented for extending sisl operations where SCF are used (may heavily change).
Lots of small bug-fixes
Now sisl is Python >=3.6 only, #162
This release was helped by the following committers (THANKS):
THIS WILL BE THE LAST Python2 release. All subsequent releases will be Python 3.6 and later (only!).
fixed #160 by removing all(?) TRS k-points in a Monkhorst Pack grid
fixed repeat for SparseGeometryOrbital #161
changed lots of places for einsum in electron.py for increased performance
added AHC conductivity calculations conductivity
(not tested)
added Berry curvature calculations berry_flux
(not tested)
added Overlap class to directly use overlap matrices (without having a second matrix).
fixed geometry align issue when reading geometries from Siesta output #153
fixed pickling a sparse matrix #150
Fixed TSV.nc write-out for grid files (see poisson_explicit.py)
Fixed fermi level calculation for non-polarized calculations
Reverted Fermi calculation routine for more stable implementation
fixed DynamiclMatrix reading for number of atoms not divisable by 4 #145
A huge thanks to Jonas L. B. for fixes, suggestions etc.