Fuzzy manifolds

FuzzyManifolds is a module to support calculations on other geometry regularised by lowest Landau level besides sphere. The supported geometries include torus T2T^2. Other geometries (e.g., disk) can be added upon request. To use the module, include also at the start of your Julia script

using FuzzifiED.FuzzyManifolds

Torus

FuzzifiED.FuzzyManifolds.GetTorusLz2QNDiagMethod
GetTorusLz2QNDiag(nm :: Int64, nf :: Int64) :: QNDiag

Return the QNDiag of twice the angular momentum 2Lzmod  2Nm2L_z\mod 2N_m, with an offset such that one fully filled LLL has angular momentum 0, implemented as

QNDiag("Lz", [2 * m - 1 + mod(nm, 2) for m = 1 : nm for f = 1 : nf], 2 * nm)
source
FuzzifiED.FuzzyManifolds.GetTorusTranslQNOffdMethod
GetTorusTranslQNOffd(nm :: Int64, nf :: Int64, Δ :: Int64 = 1) :: QNOffd

Return the QNOffd of translation

cmcm+Δmod  Nm c_m↦c_{m+Δ\mod N_m}

on the torus, implemented as

    QNOffd([((m - 1 + Δ) % nm) * nf + f for m = 1 : nm for f = 1 : nf], nm)
source
FuzzifiED.FuzzyManifolds.GetTorusIntMatrixMethod
GetTorusIntMatrix(nm :: Int64, lx :: Number, ps_pot :: Vector{<:Number}) :: Array{ComplexF64, 3}
GetTorusIntMatrix(nm :: Int64, ps_pot :: Vector{<:Number} ; aspect_ratio :: Number = 1.0) :: Array{ComplexF64, 3}

Gives the interaction matrix Um1m2m3m4U_{m_1m_2m_3m_4} from the pseudopotentials.

Um1m2m3m4=δm1+m2,m3+m41Nml,𝐪δm1m4,tUlLl(q2)eq2/2e2πis(m1m3)/Nm U_{m_1m_2m_3m_4}=δ'_{m_1+m_2,m_3+m_4}\frac{1}{N_m}∑_{l,𝐪}δ'_{m_1-m_4,t}U_lL_l(q^2)e^{-q^2/2}e^{2πis(m_1-m_3)/N_m}

where 𝐪=(2πs/Lx,2πt/Ly),s,tZ𝐪=(2πs/L_x,2πt/L_y), s,t∈ℤ, LxLy=2πNmL_xL_y=2πN_m and the Kronecker δδ is defined in a sense of mod NmN_m

Argument

  • nm :: Int64 is the number of orbitals.
  • lx :: Number is the length along xx-direction. Facultative.
  • ps_pot :: Vector{<:Number} is the vector of non-zero pseudopotentials.
  • aspect_ratio :: Number is the ratio Ly/LxL_y/L_x. Facultative, at most one of lx and aspect_ratio is given. If both are omitted, Lx=LyL_x=L_y is taken.

Output

  • A nm×nm×nm array giving the interaction matrix Um1m2m3m4U_{m_1m_2m_3m_4} where m4=m1+m2m3mod  Nmm_4=m_1+m_2-m_3\mod N_m.
source
FuzzifiED.FuzzyManifolds.GetTorusDenIntTermsFunction
GetTorusDenIntTerms(nm :: Int64, nf :: Int64, lx :: Number, ps_pot :: Vector{<:Number}[, mat_a :: Matrix{<:Number}[, mat_b :: Matrix{<:Number}]]) :: Terms
GetTorusDenIntTerms(nm :: Int64, nf :: Int64, ps_pot :: Vector{<:Number}[, mat_a :: Matrix{<:Number}[, mat_b :: Matrix{<:Number}]] ; aspect_ratio :: Number = 1.0) :: Terms

Return the normal-ordered density-density term in the Hamiltonian

{mi,fi}Um1m2m3m4Mf1f4AMf2f3Bcm1f1cm2f2cm3f3cm4f4.∑_{\{m_i,f_i\}}U_{m_1m_2m_3m_4}M^A_{f_1f_4}M^B_{f_2f_3}c^{†}_{m_1f_1}c^{†}_{m_2f_2}c_{m_3f_3}c_{m_4f_4}.

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
  • lx :: Number is the length along xx-direction. Facultative.
  • ps_pot :: Vector{<:Number} is a list of numbers specifying the pseudopotentials for the interacting matrix Um1m2m3m4U_{m_1m_2m_3m_4}.
  • mat_a :: Matrix{<:Number} is a nf×nf matrix specifying MffAM^A_{ff'}. Facultative, INfI_{N_f} by default.
  • mat_b :: Matrix{<:Number} is a nf×nf matrix specifying MffBM^B_{ff'}. Facultative, the Hermitian conjugate of mat_a by default.
  • aspect_ratio :: Number is the ratio Ly/LxL_y/L_x. Facultative, at most one of lx and aspect_ratio is given. If both are omitted, Lx=LyL_x=L_y is taken.
source
FuzzifiED.FuzzyManifolds.GetTorusPairIntTermsFunction
GetTorusPairIntTerms(nm :: Int64, nf :: Int64, lx :: Number, ps_pot :: Vector{<:Number}, mat_a :: Matrix{<:Number}[, mat_b :: Matrix{<:Number}]) :: Terms
GetTorusPairIntTerms(nm :: Int64, nf :: Int64, ps_pot :: Vector{<:Number}, mat_a :: Matrix{<:Number}[, mat_b :: Matrix{<:Number}] ; aspect_ratio :: Number = 1.0) :: Terms

Return the normal-ordered pair-pair interaction term in the Hamiltonian

{mi,fi}Um1m2m3m4Mf1f2AMf3f4Bcm1f1cm2f2cm3f3cm4f4.∑_{\{m_i,f_i\}}U_{m_1m_2m_3m_4}M^A_{f_1f_2}M^B_{f_3f_4}c^{†}_{m_1f_1}c^{†}_{m_2f_2}c_{m_3f_3}c_{m_4f_4}.

Arguments

  • nm :: Int64 is the number of orbitals.
  • nf :: Int64 is the number of flavours.
  • lx :: Number is the length along xx-direction. Facultative.
  • ps_pot :: Vector{<:Number} is a list of numbers specifying the pseudopotentials for the interacting matrix Um1m2m3m4U_{m_1m_2m_3m_4}.
  • mat_a :: Matrix{<:Number} is a nf×nf matrix specifying MffAM^A_{ff'}. Facultative, INfI_{N_f} by default.
  • mat_b :: Matrix{<:Number} is a nf×nf matrix specifying MffBM^B_{ff'}. Facultative, the Hermitian conjugate of mat_a by default.
  • m_kept :: Vector{Int64} is a list of orbitals that range from 1 to nm. Facultative, if specified, only terms for which all mim_i are in the list are kept.
  • aspect_ratio :: Number is the ratio Ly/LxL_y/L_x. Facultative, at most one of lx and aspect_ratio is given. If both are omitted, Lx=LyL_x=L_y is taken.
source
  • circle_ising.jl calculates the spectrum of 2d Ising CFT on a fuzzy thin torus. This example reproduces Figure 4 and Tables I–III in Han 2025