Source code for ed_lgt.models.ising_model

import numpy as np
from ed_lgt.modeling import LocalTerm, TwoBodyTerm, QMB_hamiltonian
from ed_lgt.operators import get_Pauli_operators
from .quantum_model import QuantumModel

__all__ = ["IsingModel"]


[docs] class IsingModel(QuantumModel): def __init__(self, **kwargs): # Initialize base class with the common parameters super().__init__(**kwargs) # Initialize specific attributes for IsingModel self.loc_dims = np.array([2 for _ in range(self.n_sites)], dtype=np.uint8) # Acquire operators self.ops = get_Pauli_operators() # Acquire local dimension and lattice label self.get_local_site_dimensions()
[docs] def build_Hamiltonian(self, coeffs): # Hamiltonian Coefficients self.coeffs = coeffs # CONSTRUCT THE HAMILTONIAN self.H = QMB_hamiltonian(0, self.lvals, self.loc_dims) h_terms = {} # --------------------------------------------------------------------------- # NEAREST NEIGHBOR INTERACTION for d in self.directions: op_names_list = ["Sx", "Sx"] op_list = [self.ops[op] for op in op_names_list] # Define the Hamiltonian term h_terms[f"NN_{d}"] = TwoBodyTerm( axis=d, op_list=op_list, op_names_list=op_names_list, **self.def_params ) self.H.Ham += h_terms[f"NN_{d}"].get_Hamiltonian(strength=-self.coeffs["J"]) # EXTERNAL MAGNETIC FIELD op_name = "Sz" h_terms[op_name] = LocalTerm(self.ops[op_name], op_name, **self.def_params) self.H.Ham += h_terms[op_name].get_Hamiltonian(strength=-self.coeffs["h"])