Skip to content

Add quantum Ashkin-Teller model#67

Open
BramVancraeynest wants to merge 2 commits intoQuantumKitHub:mainfrom
BramVancraeynest:main
Open

Add quantum Ashkin-Teller model#67
BramVancraeynest wants to merge 2 commits intoQuantumKitHub:mainfrom
BramVancraeynest:main

Conversation

@BramVancraeynest
Copy link

Add quantum Ashkin-Teller model to MPSKitModels.jl.
Currently only implemented with Z2Irrep ⊠ Z2Irrep symmetry. I've added one test that checks for a number of parameters for which the model is dual to the spin 1/2 XXZ chain, and thus integrable, the ground state energy density.

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this! Out of curiosity, would it help you/make this kind of model easier to implement for arbitrary symmetries if we include a function for blocking sites?
I don't know that much about this model, but it looks to me like it could be realized with the deligneproduct from TensorKit, which works on tensors as well (somewhat not well-known feature)

@codecov
Copy link

codecov bot commented Mar 9, 2026

Codecov Report

❌ Patch coverage is 0% with 32 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/models/hamiltonians.jl 0.00% 31 Missing ⚠️
src/utility.jl 0.00% 1 Missing ⚠️
Files with missing lines Coverage Δ
src/MPSKitModels.jl 100.00% <ø> (ø)
src/utility.jl 55.55% <0.00%> (-3.27%) ⬇️
src/models/hamiltonians.jl 30.81% <0.00%> (-7.47%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@BramVancraeynest
Copy link
Author

BramVancraeynest commented Mar 10, 2026

Thanks for this! Out of curiosity, would it help you/make this kind of model easier to implement for arbitrary symmetries if we include a function for blocking sites? I don't know that much about this model, but it looks to me like it could be realized with the deligneproduct from TensorKit, which works on tensors as well (somewhat not well-known feature)

Yes, initially I was indeed trying to construct the local Hamiltonian terms with the deligneproduct implementation for TensorMaps before resorting to the current implementation. I agree that such an implementation would probably be preferable.
As far as I can tell, after invoking the deligneproduct for the on-site (nearest-neighbour) terms, this requires to fuse the (co)domain so as to obtain a rank 2 (rank 4) tensor? For the on-site operators something like:

using TensorKit

T = ComplexF64
S = Z2Irrep  Z2Irrep
V = Vect[S](c => 1 for c in values(S))

X = σˣ(T, Z2Irrep)
Id = one(X)

f = isometry(T, V, codomain(Id  Id))

@tensor XI[-1; -2] := f[-1; 1 2] * (X  Id)[1 2; 3 4] * conj(f[-2; 3 4])
@tensor IX[-1; -2] := f[-1; 1 2] * (Id  X)[1 2; 3 4] * conj(f[-2; 3 4])
@tensor XX[-1; -2] := f[-1; 1 2] * (X  X)[1 2; 3 4] * conj(f[-2; 3 4])

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants