SU(N), Spin S antiferromagnet
This Hamiltonian has been implemented for Schwab et al. (2023). It defines an SU() antiferromagnetic spin- Heisenberg model, for representations given by a Young tableau with rows and columns (c.f. Figure 1. Specifically, the model is:
where the sum extends over the pair of nearest-neighbor sites , and runs over generators of the said representation of the algebra of SU().
Figure 1:Young tableau corresponding to the irreducible representation of considered here; is even and is semi-integer.
The terms with the parameters and are projecting unto the desired Hilbert space to achieve Eq. (1).
The following square lattice geometries are implemented:
periodic boundary conditions (
Lattice_type = Square)open boundary conditions in one dimension and periodic boundary conditions in the other (
Lattice_type = N_leg_ladder)open boundary conditions (
Lattice_type = Open_square)
Extending to other lattices should be relatively easy. If the lattices are bipartite, the simulations will be sign-problem free.
The following model-specific parameters are available:
Character (len=64) :: Lattice_type = 'Square' ! Implemented: Square, N_leg_ladder and Open_square
Integer :: L1 = 4 ! Size of lattice in first dimension
Integer :: L2 = 4 ! Size of lattice in second dimension
!Integer :: N_SUN = 2 ! SU(N) symmtry
Integer :: N_Spin = 1 ! 2*S
!logical :: Projector = .false. ! Use projetive finite temperature method
!logical :: Symm = .false. ! Use symmetric Trotter decomposition
real(dp) :: ham_J = 1.d0 ! Antiferromagnetic interaction strength
real(dp) :: ham_U = 1.d0 ! On-site Hubbard term for freezing out charge fluctuations
real(dp) :: ham_J2 = -1.d0 ! Projection parameter for going to fully symmetric representation
real(dp) :: dtau = 0.1d0 ! Imaginary time step
real(dp) :: beta = 5.d0 ! Reciprcal temperature
real(dp) :: theta = 0.d0 ! Zero-temperature projection parameter
real(dp) :: pinning_factor = 1.d0 ! Factor by which a single J-value will be multiplied to achieve phase pinning.
integer :: pinning_x = 0 ! x coordinate of pinned bond
integer :: pinning_y = 0 ! y coordinate of pinned bondUsage example¶
A brief usage example using pyALF.
Use provided script to download ALF and link the Hamiltonian to it¶
!./clone_alf.shCloning into 'ALF'...
remote: Enumerating objects: 29841, done.
remote: Counting objects: 100% (296/296), done.
remote: Compressing objects: 100% (292/292), done.
remote: Total 29841 (delta 185), reused 0 (delta 0), pack-reused 29545 (from 1)
Receiving objects: 100% (29841/29841), 243.82 MiB | 92.40 MiB/s, done.
Resolving deltas: 100% (21204/21204), done.
Import necessary pyALF classes.¶
from py_alf import ALF_source, SimulationCreate ALF source object and inspect available parameters¶
alf_src = ALF_source(alf_dir='./ALF')alf_src.get_ham_names()['Kondo',
'Hubbard',
'Hubbard_Plain_Vanilla',
'tV',
'LRC',
'Z2_Matter',
'Spin_Peierls',
'AFM_N_S']alf_src.get_default_params('AFM_N_S', include_generic=False)OrderedDict([('VAR_AFM_N_S',
{'Lattice_type': {'comment': 'Implemented: Square, N_leg_ladder and Open_square',
'defined_in_base': False,
'value': 'Square'},
'L1': {'comment': 'Size of lattice in first dimension',
'defined_in_base': False,
'value': 4},
'L2': {'comment': 'Size of lattice in second dimension',
'defined_in_base': False,
'value': 4},
'N_SUN': {'comment': 'SU(N) symmtry',
'defined_in_base': True,
'value': 2},
'N_Spin': {'comment': '2*S',
'defined_in_base': False,
'value': 1},
'Projector': {'comment': 'Use projetive finite temperature method',
'defined_in_base': True,
'value': False},
'Symm': {'comment': 'Use symmetric Trotter decomposition',
'defined_in_base': True,
'value': False},
'ham_J': {'comment': 'Antiferromagnetic interaction strength',
'defined_in_base': False,
'value': 1.0},
'ham_U': {'comment': 'On-site Hubbard term for freezing out charge fluctuations',
'defined_in_base': False,
'value': 1.0},
'ham_J2': {'comment': 'Projection parameter for going to fully symmetric representation',
'defined_in_base': False,
'value': -1.0},
'dtau': {'comment': 'Imaginary time step',
'defined_in_base': False,
'value': 0.1},
'beta': {'comment': 'Reciprcal temperature',
'defined_in_base': False,
'value': 5.0},
'theta': {'comment': 'Zero-temperature projection parameter',
'defined_in_base': False,
'value': 0.0},
'pinning_factor': {'comment': 'Factor by which a single J-value will be multiplied to achieve phase pinning.',
'defined_in_base': False,
'value': 1.0},
'pinning_x': {'comment': 'x coordinate of pinned bond',
'defined_in_base': False,
'value': 0},
'pinning_y': {'comment': 'y coordinate of pinned bond',
'defined_in_base': False,
'value': 0}})])Create and run Simulation¶
sim = Simulation(
alf_src, "AFM_N_S",
{
'L1': 4,
'L2': 4,
'Projector': True,
'Symm': True,
'N_Spin': 2,
'theta': 2.,
'beta': 0.5,
},
machine='GNU',
mpi=True,
)# On first compile, an ALF-local version of HDF5 will be compiled,
# which takes several minutes and echos many warnings.
sim.compile()Compiling ALF...
Cleaning up Prog/
Cleaning up Libraries/
Cleaning up Analysis/
Compiling Libraries
ar: creating modules_90.a
ar: creating libqrref.a
Compiling Analysis
Compiling Program
Parsing Hamiltonian parameters
filenames: Hamiltonians/Hamiltonian_Kondo_smod.F90 Hamiltonians/Hamiltonian_Kondo_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_Hubbard_smod.F90 Hamiltonians/Hamiltonian_Hubbard_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_Hubbard_Plain_Vanilla_smod.F90 Hamiltonians/Hamiltonian_Hubbard_Plain_Vanilla_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_tV_smod.F90 Hamiltonians/Hamiltonian_tV_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_LRC_smod.F90 Hamiltonians/Hamiltonian_LRC_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_Z2_Matter_smod.F90 Hamiltonians/Hamiltonian_Z2_Matter_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_Spin_Peierls_smod.F90 Hamiltonians/Hamiltonian_Spin_Peierls_read_write_parameters.F90
filenames: Hamiltonians/Hamiltonian_AFM_N_S_smod.F90 Hamiltonians/Hamiltonian_AFM_N_S_read_write_parameters.F90
Compiling program modules
Link program
Done.
sim.run()Prepare directory "/home/jonas/Programs/hamiltonians/Hamiltonians/AFM_N_S/ALF_data/AFM_N_S_L1=4_L2=4_Projector=True_Symm=True_N_Spin=2_theta=2.0_beta=0.5" for Monte Carlo run.
Create new directory.
Run /home/jonas/Programs/hamiltonians/Hamiltonians/AFM_N_S/ALF/Prog/ALF.out
ALF Copyright (C) 2016 - 2022 The ALF project contributors
This Program comes with ABSOLUTELY NO WARRANTY; for details see license.GPL
This is free software, and you are welcome to redistribute it under certain conditions.
gap: 4.9347005129783043E-004 4.9347005129783043E-004
No initial configuration
- Schwab, J., Parisen Toldin, F., & Assaad, F. F. (2023). Phase diagram of the SU(𝑁) antiferromagnet of spin 𝑆 on a square lattice. Phys. Rev. B, 108(11), 115151. 10.1103/PhysRevB.108.115151