Skip to content

Releases: USTC-TNS/TNSP

v0.3.17

06 Sep 07:34
v0.3.17
c5e5bb1
Compare
Choose a tag to compare

Added

  • tetragono: Add neural network state based on sampling methods.
  • tetraku: Add quantum chemistry model which reads Hamiltonian in openfermion format.
  • tetragono: Add support for tracing repeated points when setting hamiltonian term. To use this feature, call
    state.hamiltonians.trace_repeated after all the hamiltonian term has been set. For those term which will not be
    traced, user could exchange the edge indices and points at the same time. For example a tensor with edges name as
    [O0, I0, O1, I1] on points (0,0,0) and (0,0,1), we can rename the tensor edge to [O1, I1, O0, I0] (it is
    rename, not transpose!), and apply it to points (0,0,1) and (0,0,0), and the system does not change. But for terms
    which may be traced, we cannot exchange them. The order of edge indices hint the rule how to trace if points
    duplicated.
  • tetragono: Add support to combine hamiltonian terms on the same group of points with different orders by
    sort_points, which make the program faster for simple update and exact update.
  • tetragono: Add support to check whether the hamiltonians is hermitian by check_hermite(threshold), which requires
    sort_points invoked first.

Removed

  • tetragono: Remove SIGINT handle in gradient descent.

Fixed

  • tetragono: Fix the import issue in tetragono.
  • tetragono: Fix missing signal SIGUSR1 in windows platform.

v0.3.16

20 Mar 08:23
v0.3.16
f1c5b4f
Compare
Choose a tag to compare

Fixed

  • tetragono: Fix the missing conjugate for the energy during calculation of natural gradient.
  • tetragono: Fix the compatibility for old version python. Some previous codes uses syntax introduced in python 3.11.

v0.3.15

28 Feb 05:17
v0.3.15
88dd92f
Compare
Choose a tag to compare

Added

  • TAT.py: Add const_blocks for tensor to get the const block which will not check the ownership.
  • tetragono: Add __contains__ and __len__ for hamiltonians handle of abstract state.
  • bridge: Add support for bridging from TNSP new format.
  • tetragono: Stop saving configuration for ergodic sampling method during gradient descent.
  • tetragono: Add function to convert sampling lattice back to simple update lattice.
  • tetragono: Add support for simple update for long range two body interaction.

Changed

  • TAT.hpp: Rename the aliases of the symmetry types, the details are shown in the next item.

  • TAT.py: Rename the names of the symmetry types, since the previous naming is not consistent:

    old name new name
    No No
    Z2 BoseZ2
    U1 BoseU1
    Fermi FermiU1
    FemriZ2 FermiU1BoseZ2
    FermiU1 FermiU1BoseU1
    Parity FermiZ2
    FermiFermi FermiU1FermiU1
  • TAT.py: Use scikit-build-core as build backend. MAKEFLAGS and CMAKEFLAGS are droped. Use scikit-build-core
    environment variable SKBUILD_CMAKE_ARGS to pass arguments to cmake command line when building PyTAT wheel.

  • tetragono: Use Lanczos algorithm instead of previous power iteration to optimize exact state. update function for
    exact state does not have the second parameter approximate_energy any more, and ex_update in tetragono shell does
    not have the second parameter either.

  • TAT.hpp: Change the default exponential iteration step to 8 from 2, since in practice, it is difficult for
    step=2 to convege to a usable result.

Removed

  • tetragono: Remove merging Hamiltonians before simple update automatically.

Fixed

  • TAT.py: Fix a bug in loading Symmetry or Edge.
  • bridge: Fix several bugs in tnsp bridge, because of the TAT interface changes a lot since the first release of tnsp
    bridge.
  • TAT.py Fix wrong arguments number for function __deepcopy__ of tensor.
  • TAT.hpp: Fix a bug when reading tensors from text data with ANSI control char mixed.

v0.3.12

28 Nov 18:41
v0.3.12
f1369a1
Compare
Choose a tag to compare

Added

  • TAT.py: edges[int] and edge_by_name(str) are the new interface for indexing edges in tensor, the previous
    interface has been deprecated.
  • TAT.py: Add copy constructor for Symmetry, Edge and Tensor.

Changed

  • TAT.hpp: The names of all inplace functions are renamed with a suffix _.
  • TAT.py: The names of all inplace functions are renamed with a suffix _.

Deprecated

  • TAT.py: edges(str) and edges(int) is deprecated for tensor.

Removed

  • tetraux: Package tetraux is removed, because it is useless since ansatz product state removed.
  • tetragono: gm_bin_run and gm_alpha are removed. gm_bin_run is removed since it only works for sweep sampling,
    but there is a better way to do so: sampling multiple Markov Chain in the same process. gm_alpha is removed since
    user should set attribute of the state manually instead.

Fixed

  • TAT.hpp: Fix type mutability information in declaration of LAPACK function ?gesvd.

v0.3.11

22 Nov 06:27
v0.3.11
1c62985
Compare
Choose a tag to compare

Added

  • tetragono: Add gm_conf_eq to equilibrium the configuration of the sampling lattice.
  • TAT.py: Add TAT.parity, TAT.arrow to convert +1 to False and -1 to True.

Changed

  • tetragono: The physics edge index should be non-negative now.
  • tetragono: Use MPI IO to speed up the performance of configurations. Previously, every process will read all
    configuration and choose a single configuration when reading, and allgather all configuration and write to file when
    writing. Now, the program uses MPI IO to write file parallelly, and read the corresponding configuration directly
    without read all configurations.
  • tetragono: Yield measurement result before save state and configuration in gradient descent of sampling lattice.
    Since user may want to update attributes out of yield.
  • tetragono: Allow user to set hamiltonian term on the same positions multiple times, which allows user to use
    state.hamiltonians[positions]+=tensor. Previously, the program will throw error saying hamiltonian term has already
    been set, but recently, some models need adding term on the same positions.

Removed

  • tetragono: Remove ansatz product state support, which may be added again in the future, but it require many updates.

Fixed

  • tetragono: Fix bug when total sampling number less than process number in sampling gradient.

v0.3.10

07 Sep 18:35
v0.3.10
1156ad0
Compare
Choose a tag to compare
TAT 0.3.10

v0.3.9

07 Sep 09:35
v0.3.9
6e63b69
Compare
Choose a tag to compare

Changed

  • tetragono: The interface of save_result allow only (state, result, whole_result) now.
  • TAT.hpp: Change the view of sign problem in conjugate, there is only one conjugate, but the trivial metric may not
    be positive definite, so in gradient descent, this negative metric term need to be considered, the optional paramter
    trivial_metric is used to apply the trivial metric when conjugating.
  • TAT.py: Update the new interface of conjugate.
  • TAT.py: Use customized string stream in TAT.py to avoid a duplicated copy of string.
  • TAT.hpp: Check the larger tensor to try to fit the common edges in contract, if not proper, check the other one. The
    previous behavior always check tensor 1 firstly and check tensor 2 secondly.
  • scalapack.py: Change the loader API. The previous way is from PyScalapack import Scalapack and using
    Scalapack("libscalapack.so") to get the scalapack object, Now user should use import PyScalapack and
    PyScalapack("libscalapack.so") directly.

Removed

  • TAT.hpp: Remove deprecated tensor member function get_rank, find_rank_from_name and get_rank_from_name.

Fixed

  • TAT.hpp: Fix a bug about parity sign when merge_map is empty.
  • TAT.hpp: Fix invalid access to a empty vector when splitting the first edge into zero edges.
  • TAT.hpp: Fix out of range pointer error when try to split a trivial edge {{Symmetry(), 1}} to no edge, or merge no
    edge into a trivial edge.
  • TAT.hpp: Fix an out of range bug in identity.hpp. It created a pod vector with memory reserved and use the item
    directly previously, without resize, which would not cause critical issue in fact. Emplace the item when using now.

v0.3.7

15 Aug 10:53
v0.3.7
3913729
Compare
Choose a tag to compare

Added

  • tetragono: Add support to calculate deviation of the observer set as a whole, which is useful since many observables
    are the summation of several local observables.
  • tetragono: Add arguments support for gm_conf_create and ap_conf_create in tetragono shell.
  • tetragono: Add a member dict called attribute to AbstractState, which may contain customed data used by user.

Changed

  • tetragono: save_result accept another parameter, which is the total result of the whole observers set. Its
    signature is state, result, whole_result and step now.
  • tetraku: Change the defnition of x/y/z link in kitaev model. The bond inside one tensor is z link now.
  • tetragono: gm_run(_g) will now return/yield all the measurement result instead of energy only.

Deprecated

  • tetragono: The previous signature of save_result: state, result and step is deprecated.

Removed

  • tetragono: Remove the deprecated function natural_gradient and the deprecated paramter metric_inverse_epsilon
    for gm_run.

v0.3.6

26 May 17:01
v0.3.6
ffb7ea5
Compare
Choose a tag to compare

Added

  • TAT.hpp: Add clear_fermi_symmetry for tensor with fermionic symmetry, which convert the tensor to the simplest
    fermionic tensor, tensor with parity symmetry.
  • TAT.py: Add python binding for clear_fermi_symmetry.
  • tetragono: Check whether the state is None when dump the state to file to avoid overwriting file by mistake.
  • tetragono: Add gm_clear_symmetry for sampling lattice.
  • tetragono: Add gm_run_g and ap_run_g for middle level API. These are generators, which yield the energy of the
    state before gradient descent after every gradient step.
  • TAT.hpp: Cut is used directly for the dimension cut in svd. Cut will detect the type of the input to determine
    whether it is relative cut or remain cut, if nothing provided, the behavior of previous NoCut will be used. And user
    could also set remain cut and relative cut together.

Changed

  • tetragono: new_dimension in simple update will be intepreted as the threshold of singular value when it is float.
  • TAT.hpp, TAT.py: clear_symmetry will return NoSymmetry tensor or ParityTensor based on whether the original tensor
    is fermionic. The previous behavior would give NoSymmetry tensor only, which is dangerous for fermionic tensor, is
    renamed to clear_bose_symmetry.

Deprecated

  • TAT.hpp: NoCut, RemainCut, RelativeCut is deprecated, please use Cut directly.

Fixed

  • tetragono: Fix a bug in merging physical edges during simple update. When the hamiltonian on single site with a
    large dimension is operated, the dead loop would occur previously.

v0.3.5

01 Apr 12:34
v0.3.5
943952b
Compare
Choose a tag to compare

Added

  • tetragono: Add common used tensors for parity symmetry and some related tensor in Hubbard model with parity
    symmetry.
  • scalapack.py: Add documents for scalapack.py.
  • tetraku: Add tV model.
  • tetragono Add numpy_hamiltonian in tetragono shell to export the Hamiltonian of a model to a file in numpy array
    format.

Changed

  • tetraku: Density matrix of Heisenberg/tJ/Hubbard model are renamed to gibbs_* from density_matrix_*.
  • tetragono: Simple update will check to avoid merge physical edges into a single edge with very large dimension. It
    will only merge edges if the result edge has the dimension less equal to the threshold, which is 6 by default.
  • tetragono: Use better method to estimate the variance of measurement results observed by the sampling method.
  • tetragono: Tetragono shell will not refresh the corresponding configuration when creating or loading ap or gm state.
    Since sometimes user may want to share the configuration between states.
  • tetragono: Use pseudo inverse directly in conjugate gradient method.
  • TAT.py: Use mt19937(64 bit) as the random generator instead of c++ default random generator which may be different
    on different platforms.

Removed

  • tetragono: The mirror direct sampling is removed, since it is useless according to the test result.

Fixed

  • tetragono: Fix bug in min-SR method when the model is complex, A conjugate operator was missing.
  • tetragono: Avoid nan in pseudo inverse of min-SR by checking whether the eigenvalue is zero first.
  • tetragono: Fix the missing imaginary part of energy when calculating gradient.
  • tetraku: Fix the wrong Hamiltonian for Gibbs state of Fermionic system.
  • tetraku: Fix the wrong sign of chemical potential for density matrix of tJ model.
  • TAT.py: Fix typo in the class name of parity symmetry.