Releases: USTC-TNS/TNSP
v0.3.17
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
v0.3.15
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
andCMAKEFLAGS
are droped. Usescikit-build-core
environment variableSKBUILD_CMAKE_ARGS
to pass arguments to cmake command line when buildingPyTAT
wheel. -
tetragono: Use Lanczos algorithm instead of previous power iteration to optimize exact state.
update
function for
exact state does not have the second parameterapproximate_energy
any more, andex_update
in tetragono shell does
not have the second parameter either. -
TAT.hpp: Change the default exponential iteration step to
8
from2
, 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
Added
- TAT.py:
edges[int]
andedge_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
andTensor
.
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)
andedges(int)
is deprecated for tensor.
Removed
- tetraux: Package tetraux is removed, because it is useless since ansatz product state removed.
- tetragono:
gm_bin_run
andgm_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
Added
- tetragono: Add
gm_conf_eq
to equilibrium the configuration of the sampling lattice. - TAT.py: Add
TAT.parity
,TAT.arrow
to convert+1
toFalse
and-1
toTrue
.
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
TAT 0.3.10
v0.3.9
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 useimport PyScalapack
and
PyScalapack("libscalapack.so")
directly.
Removed
- TAT.hpp: Remove deprecated tensor member function
get_rank
,find_rank_from_name
andget_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
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
andap_conf_create
in tetragono shell. - tetragono: Add a member dict called
attribute
toAbstractState
, 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 isstate
,result
,whole_result
andstep
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
andstep
is deprecated.
Removed
- tetragono: Remove the deprecated function
natural_gradient
and the deprecated paramtermetric_inverse_epsilon
forgm_run
.
v0.3.6
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
andap_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 previousNoCut
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 toclear_bose_symmetry
.
Deprecated
- TAT.hpp:
NoCut
,RemainCut
,RelativeCut
is deprecated, please useCut
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
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_*
fromdensity_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 thethreshold
, which is6
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.