diff --git a/doc/source/pre/whatsnew/1.4.rst b/doc/source/pre/whatsnew/1.4.rst index 22edb45620d000f1475f5499ba0a90cc7280e7bc..adae7184be6ab58e71935f175d7dae21de8a454f 100644 --- a/doc/source/pre/whatsnew/1.4.rst +++ b/doc/source/pre/whatsnew/1.4.rst @@ -7,7 +7,52 @@ release of the 1.4 series <https://gitlab.kwant-project.org/kwant/kwant/compare/v1.4.0...latest-1.4>`_. -Integration with Qsymm package +Installation on Microsoft Windows is available via Conda +-------------------------------------------------------- +Kwant is now packaged for the Conda package manager on Windows, and using +Conda is the preferred method for installing Kwant on that platform. +Please refer to the +`installation section <https://kwant-project.org/install#microsoft-windows>`_ +of the Kwant website for details. +Currently the MUMPS solver is not available for the Windows version of the +Conda package; we hope to include MUMPS support in a later patch release. + +Minimum required versions for some dependencies have increased +-------------------------------------------------------------- +Kwant now requires at least the following versions: + ++ Python 3.5 ++ numpy 0.11.0 ++ scipy 0.17.0 ++ matplotlib 1.5.1 + +These versions (or newer) are available in the latest stable releases +of Ubuntu and Debian GNU/Linux. + +Conductivity calculations using `kwant.kpm.conductivity` +-------------------------------------------------------- +Kwant now has the ability to calculate conductivities using a combination of +the Kernel Polynomial Method and the Kubo-Bastin relation. +The following example calculates :math:`σ_{xy}` for various chemical +potentials at finite temperature:: + + syst = make_system().finalized() + sigma_xy = kwant.kpm.conductivity(syst, alpha='x', beta='y') + conductivities = [sigma_xy(mu=mu, temp=0.1) for mu in np.linspace(0, 4)] + +`kwant.physics.Bands` can optionally return eigenvectors and velocities +----------------------------------------------------------------------- +`kwant.physics.Bands` now takes extra parameters that allow it to +return the mode eigenvectors, and also the derivatives of the dispersion +relation (up to second order) using the Hellman-Feynman relation:: + + syst = make_system().finalized() + + bands = kwant.physics.Bands(syst) + (energies, velocities, vectors) = bands(k=0, derivative_order=1, + return_eigenvectors=True) + +Integration with Qsymm library ------------------------------ Kwant now contains an integration with the Qsymm library for analysing model symmetries. This functionality is available under ``kwant.qsymm``. @@ -75,6 +120,39 @@ which calculates the Peierls phases for you:: Note that the API for this functionality is provisional, and may be revised in a future version of Kwant. +System parameter substitution +----------------------------- +After the introduction of ``Builder.fill`` it has become possible to construct +Kwant systems by first creating a "model" system with high symmetry and then +filling a lower symmetry system with this model. Often, however, one wants +to use different parameter values in different parts of a system. In +previous versions of Kwant this was difficult to achieve. + +Builders now have a method ``substituted`` that makes it easy to substitute +different names for parameters. For example if a builder ``model`` +has a parameter ``V``, and one wishes to have different values for ``V`` in +the scattering region and leads, one could do the following:: + + syst = kwant.Builder() + syst.fill(model.substituted(V='V_dot', ...)) + + lead = kwant.Builder() + lead.fill(model.substituted(V='V_lead'), ...) + + syst.attach_lead(lead) + fsyst = syst.finalized() + + kwant.smatrix(syst, params=dict(V_dot=0, V_lead=1)) + +Interpolated density plots +-------------------------- +A new function, `~kwant.plotter.density`, has been added that can be used to +visualize a density defined over the sites of a Kwant system. This convolves +the "discrete" density (defined over the system sites) with a "bump" function +in realspace. The output of `~kwant.plotter.density` can be more informative +that `~kwant.plotter.map` when plotting systems with many sites, where it is +not important to see the individual contribution from each site. + Value functions may no longer have default values for parameters ---------------------------------------------------------------- Using value functions with default values for parameters can be @@ -114,30 +192,6 @@ To deal with many parameters, the following idiom may be useful:: Note that it allows to override defaults as well as to add additional parameters. -System parameter substitution ------------------------------ -After the introduction of ``Builder.fill`` it has become possible to construct -Kwant systems by first creating a "model" system with high symmetry and then -filling a lower symmetry system with this model. Often, however, one wants -to use different parameter values in different parts of a system. In -previous versions of Kwant this was difficult to achieve. - -Builders now have a method ``substituted`` that makes it easy to substitute -different names for parameters. For example if a builder ``model`` -has a parameter ``V``, and one wishes to have different values for ``V`` in -the scattering region and leads, one could do the following:: - - syst = kwant.Builder() - syst.fill(model.substituted(V='V_dot', ...)) - - lead = kwant.Builder() - lead.fill(model.substituted(V='V_lead'), ...) - - syst.attach_lead(lead) - fsyst = syst.finalized() - - kwant.smatrix(syst, params=dict(V_dot=0, V_lead=1)) - System parameters can now be inspected -------------------------------------- In modern Kwant the preferred way to pass arguments to your models @@ -191,38 +245,6 @@ a dictionary using ``params``:: The ability to provide ``args`` will be removed in a future Kwant version. -Conductivity calculations using KPM ------------------------------------ -Kwant now has the ability to calculate conductivities using a combination of -the Kernel Polynomial Method and the Kubo-Bastin relation in the `kwant.kpm` -module. The following example calculates :math:`σ_{xy}` for various chemical -potentials at finite temperature:: - - syst = make_system().finalized() - sigma_xy = kwant.kpm.conductivity(syst, alpha='x', beta='y') - conductivities = [sigma_xy(mu=mu, temp=0.1) for mu in np.linspace(0, 4)] - -`kwant.physics.Bands` can optionally return eigenvectors and velocities ------------------------------------------------------------------------ -`kwant.physics.Bands` now takes extra parameters that allow it to -return the mode eigenvectors, and also the derivatives of the dispersion -relation (up to second order) using the Hellman-Feynman relation:: - - syst = make_system().finalized() - - bands = kwant.physics.Bands(syst) - (energies, velocities, vectors) = bands(k=0, derivative_order=1, return_eigenvectors=True) - -Installation on Microsoft Windows is available via Conda --------------------------------------------------------- -Kwant is now packaged for the Conda package manager on Windows, and using -Conda is the preferred method for installing Kwant on that platform. -Please refer to the -`installation section <https://kwant-project.org/install#microsoft-windows>`_ -of the Kwant website for details. -Currently the MUMPS solver is not available for the Windows version of the -Conda package; we hope to include MUMPS support in a later patch release. - Finalized Builders keep track of which sites were added when attaching leads ---------------------------------------------------------------------------- When attaching leads to an irregularly shaped scattering region, Kwant adds @@ -231,15 +253,6 @@ the information of which sites were added was not inspectable after finalization Now the sites that were added from each lead are available in the ``lead_paddings`` attribute. See the documentation for `~kwant.builder.FiniteSystem` for details. -Interpolated density plots --------------------------- -A new function `~kwant.plotter.density` has been added that can be used to -visualize a density defined over the sites of a Kwant system. This convolves -the "discrete" density (defined over the system sites) with a "bump" function -in realspace. The output of `~kwant.plotter.density` can be more informative -that `~kwant.plotter.map` when plotting systems with many sites, where it is -not important to see the individual contribution from each site. - Configurable maximum velocity in stream plots --------------------------------------------- The function `~kwant.plotter.streamplot` has got a new option ``vmax``. Note @@ -247,18 +260,6 @@ that this option is not available in `~kwant.plotter.current`. In order to use it, one has to call ``streamplot`` directly as shown in the docstring of ``current``. -The minimum required versions for some dependencies have increased ------------------------------------------------------------------- -Kwant now requires at least the following versions: - -+ Python 3.5 -+ numpy 0.11.0 -+ scipy 0.17.0 -+ matplotlib 1.5.1 - -These versions (or newer) are available in the latest stable releases -of Ubuntu and Debian GNU/Linux. - kwant.continuum.discretize can be used with rectangular lattices ---------------------------------------------------------------- Previously the discretizer could only be used with lattices with the same