ttnopt.src package

Submodules

ttnopt.src.DataEngine module

class ttnopt.src.DataEngine.DataEngine(psi: TreeTensorNetwork, max_bond_dim: int)[source]

Bases: TwoSiteUpdater

environment(target, tensor_ids)[source]
get_fidelity(target)[source]
update_tensor(target, central_tensor_ids)[source]

ttnopt.src.GroundStateSearch module

class ttnopt.src.GroundStateSearch.GroundStateSearch(psi: TreeTensorNetwork, hamiltonian: Hamiltonian, init_bond_dim: int = 4, max_bond_dim: int = 16, energy_degeneracy_threshold: float = 1e-13, entanglement_degeneracy_threshold: float = 0.1)[source]

Bases: PhysicsEngine

A class for ground state search algorithm based on DMRG. :param psi: The quantum state. :type psi: TreeTensorNetwork :param hamiltonians: Hamiltonian which is list of Observable. :type hamiltonians: Hamiltonian :param init_bond_dim: Initial bond dimension. Defaults to 4. :type init_bond_dim: int, optional :param max_bond_dim: Maximum bond dimension. Defaults to 16. :type max_bond_dim: int, optional

run(opt_structure: int = 0, energy_convergence_threshold: float = 1e-08, entanglement_convergence_threshold: float = 1e-08, max_num_sweep: int = 10, converged_count: int = 2, eval_onesite_expval: bool = False, eval_twosite_expval: bool = False, temperature: float = 0.0, tau: int = 0)[source]

Run DMRG algorithm.

Parameters:
  • opt_structure (bool, optional) – If optimize the tree structure or not. Defaults to False.

  • energy_convergence_threshold (float, optional) – Energy threshold for convergence. Defaults to 1e-8.

  • entanglement_convergence_threshold (float, optional) – Entanglement entropy threshold for automatic optimization. Defaults to 1e-8.

  • converged_count (int, optional) – Converged count. Defaults to 1.

  • eval_onesite_expval (bool) – If evaluate one-site expectation value or not.

  • eval_twosite_expval (bool) – If evaluate two-site expectation value or not.

ttnopt.src.GroundStateSearchSparse module

class ttnopt.src.GroundStateSearchSparse.GroundStateSearchSparse(psi: TreeTensorNetwork, hamiltonian: Hamiltonian, u1_num: int | str, init_bond_dim: int = 4, max_bond_dim: int = 16, energy_degeneracy_threshold: float = 1e-13, entanglement_degeneracy_threshold: float = 0.1)[source]

Bases: PhysicsEngineSparse

A class for ground state search algorithm based on DMRG using Sparse Tensor. :param psi: The quantum state. :type psi: TreeTensorNetwork :param hamiltonians: Hamiltonian which is list of Observable. :type hamiltonians: Hamiltonian :param u1_num: The number of preserving total spin in U(1) symmetry. :type u1_num: str :param init_bond_dim: Initial bond dimension. Defaults to 4. :type init_bond_dim: int, optional :param max_bond_dim: Maximum bond dimension. Defaults to 16. :type max_bond_dim: int, optional :param truncation_error: Maximum truncation error. Defaults to 1e-11. :type truncation_error: float, optional

run(opt_structure: int = 0, energy_convergence_threshold: float = 1e-10, entanglement_convergence_threshold: float = 1e-10, max_num_sweep: int = 10, converged_count: int = 2, eval_onesite_expval: bool = False, eval_twosite_expval: bool = False, sz_sign: int = 0, temperature: float = 0.0, tau: int = 1)[source]

Run Ground State Search algorithm using Sparse Tensor with total spin.

Parameters:
  • opt_structure (bool, optional) – If optimize the tree structure or not. Defaults to False.

  • energy_convergence_threshold (float, optional) – Energy threshold for convergence. Defaults to 1e-8.

  • entanglement_convergence_threshold (float, optional) – Entanglement entropy threshold for automatic optimization. Defaults to 1e-8.

  • converged_count (int, optional) – Converged count. Defaults to 1.

  • eval_onesite_expval (bool) – If evaluate one-site expectation value or not.

  • eval_twosite_expval (bool) – If evaluate two-site expectation value or not.

ttnopt.src.Hamiltonian module

class ttnopt.src.Hamiltonian.Hamiltonian(system_size: int, spin_size: List[str], model: str, interaction_indices: List[List[int]], interaction_coefs: List[List[float]], magnetic_field_X_indices: List[int] | None = None, magnetic_field_X: List[float] | None = None, magnetic_field_Y_indices: List[int] | None = None, magnetic_field_Y: List[float] | None = None, magnetic_field_Z_indices: List[int] | None = None, magnetic_field_Z: List[float] | None = None, ion_anisotropy_indices: List[int] | None = None, ion_anisotropy: List[float] | None = None, dzyaloshinskii_moriya_X_indices: List[List[int]] | None = None, dzyaloshinskii_moriya_X: List[float] | None = None, dzyaloshinskii_moriya_Y_indices: List[List[int]] | None = None, dzyaloshinskii_moriya_Y: List[float] | None = None, dzyaloshinskii_moriya_Z_indices: List[List[int]] | None = None, dzyaloshinskii_moriya_Z: List[float] | None = None, sod_X_indices: List[List[int]] | None = None, sod_X: List[float] | None = None, sod_Y_indices: List[List[int]] | None = None, sod_Y: List[float] | None = None, sod_Z_indices: List[List[int]] | None = None, sod_Z: List[float] | None = None)[source]

Bases: object

A class for Hamiltonian. This class is used to store Hamiltonian as a List of Observable.

ttnopt.src.Observable module

class ttnopt.src.Observable.Observable(indices: List[int], operators_list: List[List[str]], coef_list: List[float] | List[complex])[source]

Bases: object

A class for observables.

ttnopt.src.Observable.bare_spin_operator(spin, spin_num)[source]
ttnopt.src.Observable.spin_dof(spin_num)[source]
ttnopt.src.Observable.spin_ind(spin_num)[source]

ttnopt.src.PhysicsEngine module

class ttnopt.src.PhysicsEngine.PhysicsEngine(psi: TreeTensorNetwork, hamiltonian: Hamiltonian, init_bond_dim: int, max_bond_dim: int, energy_degeneracy_threshold: float = 1e-13, entanglement_degeneracy_threshold: float = 0.1)[source]

Bases: TwoSiteUpdater

expval_onesite(tensor_id, ground_state, tensor_ids)[source]

Calculate the expectation values of the one-site operators. :returns: The expectation values of the one-site operators of dict.

expval_twosite(tensor_id, ground_state, tensor_ids)[source]
expval_twosite_origin(keys, ground_state, tensor_ids)[source]
init_tensors_by_block_hamiltonian()[source]
lanczos(central_tensor_ids, lanczos_tol=1e-13, inverse_tol=1e-06, init_random=False)[source]
lanczos_exp_multiply(central_tensor_ids, dt, tol=1e-10)[source]

ttnopt.src.PhysicsEngineSparse module

class ttnopt.src.PhysicsEngineSparse.PhysicsEngineSparse(psi: TreeTensorNetwork, hamiltonian: Hamiltonian, u1_num: int | str, init_bond_dim: int, max_bond_dim: int, energy_degeneracy_threshold: float = 1e-13, entanglement_degeneracy_threshold: float = 0.1)[source]

Bases: TwoSiteUpdaterSparse

contract_central_tensors()[source]
expval_onesite(tensor_id, ground_state, tensor_ids)[source]

Calculate the expectation values of the one-site operators. :returns: The expectation values of the one-site operators of dict.

expval_twosite(tensor_id, ground_state, tensor_ids)[source]
expval_twosite_origin(keys, ground_state, tensor_ids)[source]
init_tensors_by_block_hamiltonian()[source]
lanczos(central_tensor_ids, lanczos_tol=1e-13, inverse_tol=1e-07)[source]

ttnopt.src.TTN module

class ttnopt.src.TTN.TreeTensorNetwork(edges: List[List[int]], tensors: List[ndarray] | None = None, top_edge_id: int | None = None, gauge_tensor: ndarray | None = None, norm: float | None = None)[source]

Bases: object

A class for Tree Tensor Network (TTN).

central_tensor_ids()[source]
classmethod init_random(edges: List[List[int]], top_edge_id: int | None = None, edge_dims: dict | None = None, init_bond_dimension: int = 4)[source]
classmethod mps(size: int, target: ndarray | None = None, max_bond_dimension: int | None = None)[source]

Initialize an State object with matrix product structure. :param size: The size of system.

classmethod tree(size: int)[source]

Initialize an object with binary tree structure.

Parameters:

size – The size of system.

visualize()[source]

Visualize the TreeTensorNetwork.

ttnopt.src.TimeEvolution module

class ttnopt.src.TimeEvolution.TimeEvolution(psi, physical_spin_nums, hamiltonians, max_bond_dim=100, max_truncation_err=1e-11)[source]

Bases: PhysicsEngine

run(dt, opt_structure=False)[source]

ttnopt.src.TwoSiteUpdater module

class ttnopt.src.TwoSiteUpdater.TwoSiteUpdater(psi)[source]

Bases: TwoSiteUpdaterMixin

decompose_two_tensors(psi, max_bond_dim, opt_structure=0, operate_degeneracy=False, epsilon=1e-08, delta=0.1, max_truncation_error=0.0, temperature=0.0, e=1e-13)[source]
entanglement_entropy_at_physical_bond(psi, psi_edges)[source]
set_ttn_properties_at_one_tensor(edge_id, selected_tensor_id)[source]
class ttnopt.src.TwoSiteUpdater.TwoSiteUpdaterMixin[source]

Bases: object

candidate_edge_ids()[source]
contract_central_tensors()[source]
entanglement_entropy(probability)[source]
initial_distance()[source]
initial_flag()[source]
local_two_tensor()[source]
set_flag(not_selected_tensor_id)[source]

ttnopt.src.TwoSiteUpdaterSparse module

class ttnopt.src.TwoSiteUpdaterSparse.TwoSiteUpdaterSparse(psi)[source]

Bases: TwoSiteUpdaterMixin

decompose_two_tensors(psi, max_bond_dim, opt_structure=0, epsilon=1e-08, delta=0.1, temperature=0.0)[source]
entanglement_entropy_at_physical_bond(psi, psi_edges)[source]
set_ttn_properties_at_one_tensor(edge_id, selected_tensor_id)[source]

ttnopt.src.functionTTN module

ttnopt.src.functionTTN.get_bare_edges(edge_id, edges, physical_edges)[source]
ttnopt.src.functionTTN.get_child_tensor_id(tensor_id, edges)[source]
ttnopt.src.functionTTN.get_renormalization_sequence(edges, top_edge_id)[source]
ttnopt.src.functionTTN.inner_product(u, v)[source]
ttnopt.src.functionTTN.inner_product_sparse(u, v)[source]

ttnopt.src.initialTTN module

ttnopt.src.initialTTN.get_upper_bond_dim(lower_bond_dims, max_bond_dim)[source]
ttnopt.src.initialTTN.init_tensors_mps(state, max_bond, truncate, min_bond=2)[source]

_summary_

Parameters:
  • tensor (state) – initial_state where the shape is (bond_dim[0], bond_dim[1], …, bond_dim[N])

  • size (_type_) – _description_

Returns:

List[tn.Node]: List of tensors

Return type:

tensors

Module contents