diff --git a/src/sitetypes/qubit.jl b/src/sitetypes/qubit.jl index 4b7a174..b0e50af 100644 --- a/src/sitetypes/qubit.jl +++ b/src/sitetypes/qubit.jl @@ -7,35 +7,11 @@ # defaults for QN names """ - space(::SiteType"Qubit"; - conserve_qns = false, - conserve_parity = conserve_qns, - conserve_number = false, - qnname_parity = "Parity", - qnname_number = "Number") + space(::SiteType"Qubit") Create the Hilbert space for a site of type "Qubit". - -Optionally specify the conserved symmetries and their quantum number labels. """ -function space( - ::SiteType"Qubit"; - conserve_qns=false, - conserve_parity=conserve_qns, - conserve_number=false, - qnname_parity="Parity", - qnname_number="Number", -) - if conserve_number && conserve_parity - return [ - QN((qnname_number, 0), (qnname_parity, 0, 2)) => 1, - QN((qnname_number, 1), (qnname_parity, 1, 2)) => 1, - ] - elseif conserve_number - return [QN(qnname_number, 0) => 1, QN(qnname_number, 1) => 1] - elseif conserve_parity - return [QN(qnname_parity, 0, 2) => 1, QN(qnname_parity, 1, 2) => 1] - end +function space(::SiteType"Qubit") return 2 end diff --git a/src/sitetypes/qudit.jl b/src/sitetypes/qudit.jl index 93b3330..2ae2489 100644 --- a/src/sitetypes/qudit.jl +++ b/src/sitetypes/qudit.jl @@ -1,26 +1,13 @@ using ChainRulesCore: @non_differentiable """ - space(::SiteType"Qudit"; - dim = 2, - conserve_qns = false, - conserve_number = false, - qnname_number = "Number") + space(::SiteType"Qudit") Create the Hilbert space for a site of type "Qudit". Optionally specify the conserved symmetries and their quantum number labels. """ -function space( - ::SiteType"Qudit"; - dim=2, - conserve_qns=false, - conserve_number=conserve_qns, - qnname_number="Number", -) - if conserve_number - return [QN(qnname_number, n - 1) => 1 for n in 1:dim] - end +function space(::SiteType"Qudit"; dim=2) return dim end @@ -28,12 +15,12 @@ function val(::ValName{N}, ::SiteType"Qudit") where {N} return parse(Int, String(N)) + 1 end -## function state(::StateName{N}, ::SiteType"Qudit", s::Index) where {N} -## n = parse(Int, String(N)) -## st = zeros(dim(s)) -## st[n + 1] = 1.0 -## return itensor(st, s) -## end +function state(::StateName{N}, ::SiteType"Qudit") where {N} + n = parse(Int, String(N)) + st = zeros(dim(s)) + st[n + 1] = 1.0 + return st +end # one-body operators function op(::OpName"Id", ::SiteType"Qudit", ds::Int...)