|
1 | 1 | Base.length(::SiteType"tJ") = 3 |
2 | 2 |
|
3 | | -# TODO: Define in terms of `"Electron"` with slicing. |
4 | | - |
5 | | -Base.AbstractArray(::StateName"Emp", ::SiteType"tJ") = [1.0, 0, 0] |
6 | | -Base.AbstractArray(::StateName"Up", ::SiteType"tJ") = [0.0, 1, 0] |
7 | | -Base.AbstractArray(::StateName"Dn", ::SiteType"tJ") = [0.0, 0, 1] |
8 | | -Base.AbstractArray(::StateName"0", st::SiteType"tJ") = AbstractArray(StateName("Emp"), st) |
9 | | -Base.AbstractArray(::StateName"↑", st::SiteType"tJ") = AbstractArray(StateName("Up"), st) |
10 | | -Base.AbstractArray(::StateName"↓", st::SiteType"tJ") = AbstractArray(StateName("Dn"), st) |
11 | | - |
12 | | -# TODO: Update these to the latest syntax. |
13 | | -## function op!(Op::ITensor, ::OpName"Nup", ::SiteType"tJ", s::Index) |
14 | | -## return Op[s' => 2, s => 2] = 1.0 |
15 | | -## end |
16 | | -## function op!(Op::ITensor, on::OpName"n↑", st::SiteType"tJ", s::Index) |
17 | | -## return op!(Op, alias(on), st, s) |
18 | | -## end |
19 | | -## |
20 | | -## function op!(Op::ITensor, ::OpName"Ndn", ::SiteType"tJ", s::Index) |
21 | | -## return Op[s' => 3, s => 3] = 1.0 |
22 | | -## end |
23 | | -## function op!(Op::ITensor, on::OpName"n↓", st::SiteType"tJ", s::Index) |
24 | | -## return op!(Op, alias(on), st, s) |
25 | | -## end |
26 | | -## |
27 | | -## function op!(Op::ITensor, ::OpName"Ntot", ::SiteType"tJ", s::Index) |
28 | | -## Op[s' => 2, s => 2] = 1.0 |
29 | | -## return Op[s' => 3, s => 3] = 1.0 |
30 | | -## end |
31 | | -## function op!(Op::ITensor, on::OpName"ntot", st::SiteType"tJ", s::Index) |
32 | | -## return op!(Op, alias(on), st, s) |
33 | | -## end |
34 | | -## |
35 | | -## function op!(Op::ITensor, ::OpName"Cup", ::SiteType"tJ", s::Index) |
36 | | -## return Op[s' => 1, s => 2] = 1.0 |
37 | | -## end |
38 | | -## function op!(Op::ITensor, on::OpName"c↑", st::SiteType"tJ", s::Index) |
39 | | -## return op!(Op, alias(on), st, s) |
40 | | -## end |
41 | | -## |
42 | | -## function op!(Op::ITensor, ::OpName"Cdagup", ::SiteType"tJ", s::Index) |
43 | | -## return Op[s' => 2, s => 1] = 1.0 |
44 | | -## end |
45 | | -## function op!(Op::ITensor, on::OpName"c†↑", st::SiteType"tJ", s::Index) |
46 | | -## return op!(Op, alias(on), st, s) |
47 | | -## end |
48 | | -## |
49 | | -## function op!(Op::ITensor, ::OpName"Cdn", ::SiteType"tJ", s::Index) |
50 | | -## return Op[s' => 1, s => 3] = 1.0 |
51 | | -## end |
52 | | -## function op!(Op::ITensor, on::OpName"c↓", st::SiteType"tJ", s::Index) |
53 | | -## return op!(Op, alias(on), st, s) |
54 | | -## end |
55 | | -## |
56 | | -## function op!(Op::ITensor, ::OpName"Cdagdn", ::SiteType"tJ", s::Index) |
57 | | -## return Op[s' => 3, s => 1] = 1.0 |
58 | | -## end |
59 | | -## function op!(Op::ITensor, on::OpName"c†↓", st::SiteType"tJ", s::Index) |
60 | | -## return op!(Op, alias(on), st, s) |
61 | | -## end |
62 | | -## |
63 | | -## function op!(Op::ITensor, ::OpName"Aup", ::SiteType"tJ", s::Index) |
64 | | -## return Op[s' => 1, s => 2] = 1.0 |
65 | | -## end |
66 | | -## function op!(Op::ITensor, on::OpName"a↑", st::SiteType"tJ", s::Index) |
67 | | -## return op!(Op, alias(on), st, s) |
68 | | -## end |
69 | | -## |
70 | | -## function op!(Op::ITensor, ::OpName"Adagup", ::SiteType"tJ", s::Index) |
71 | | -## return Op[s' => 2, s => 1] = 1.0 |
72 | | -## end |
73 | | -## function op!(Op::ITensor, on::OpName"a†↑", st::SiteType"tJ", s::Index) |
74 | | -## return op!(Op, alias(on), st, s) |
75 | | -## end |
76 | | -## |
77 | | -## function op!(Op::ITensor, ::OpName"Adn", ::SiteType"tJ", s::Index) |
78 | | -## return Op[s' => 1, s => 3] = 1.0 |
79 | | -## end |
80 | | -## function op!(Op::ITensor, on::OpName"a↓", st::SiteType"tJ", s::Index) |
81 | | -## return op!(Op, alias(on), st, s) |
82 | | -## end |
83 | | -## |
84 | | -## function op!(Op::ITensor, ::OpName"Adagdn", ::SiteType"tJ", s::Index) |
85 | | -## return Op[s' => 3, s => 1] = 1.0 |
86 | | -## end |
87 | | -## function op!(Op::ITensor, on::OpName"a†↓", st::SiteType"tJ", s::Index) |
88 | | -## return op!(Op, alias(on), st, s) |
89 | | -## end |
90 | | -## |
91 | | -## function op!(Op::ITensor, ::OpName"F", ::SiteType"tJ", s::Index) |
92 | | -## Op[s' => 1, s => 1] = +1.0 |
93 | | -## Op[s' => 2, s => 2] = -1.0 |
94 | | -## return Op[s' => 3, s => 3] = -1.0 |
95 | | -## end |
96 | | -## |
97 | | -## function op!(Op::ITensor, ::OpName"Fup", ::SiteType"tJ", s::Index) |
98 | | -## Op[s' => 1, s => 1] = +1.0 |
99 | | -## Op[s' => 2, s => 2] = -1.0 |
100 | | -## return Op[s' => 3, s => 3] = +1.0 |
101 | | -## end |
102 | | -## function op!(Op::ITensor, on::OpName"F↑", st::SiteType"tJ", s::Index) |
103 | | -## return op!(Op, alias(on), st, s) |
104 | | -## end |
105 | | -## |
106 | | -## function op!(Op::ITensor, ::OpName"Fdn", ::SiteType"tJ", s::Index) |
107 | | -## Op[s' => 1, s => 1] = +1.0 |
108 | | -## Op[s' => 2, s => 2] = +1.0 |
109 | | -## return Op[s' => 3, s => 3] = -1.0 |
110 | | -## end |
111 | | -## function op!(Op::ITensor, on::OpName"F↓", st::SiteType"tJ", s::Index) |
112 | | -## return op!(Op, alias(on), st, s) |
113 | | -## end |
114 | | -## |
115 | | -## function op!(Op::ITensor, ::OpName"Sz", ::SiteType"tJ", s::Index) |
116 | | -## Op[s' => 2, s => 2] = +0.5 |
117 | | -## return Op[s' => 3, s => 3] = -0.5 |
118 | | -## end |
119 | | -## |
120 | | -## function op!(Op::ITensor, ::OpName"Sᶻ", st::SiteType"tJ", s::Index) |
121 | | -## return op!(Op, OpName("Sz"), st, s) |
122 | | -## end |
123 | | -## |
124 | | -## function op!(Op::ITensor, ::OpName"Sx", ::SiteType"tJ", s::Index) |
125 | | -## Op[s' => 2, s => 3] = 0.5 |
126 | | -## return Op[s' => 3, s => 2] = 0.5 |
127 | | -## end |
128 | | -## |
129 | | -## function op!(Op::ITensor, ::OpName"Sˣ", st::SiteType"tJ", s::Index) |
130 | | -## return op!(Op, OpName("Sx"), st, s) |
131 | | -## end |
132 | | -## |
133 | | -## function op!(Op::ITensor, ::OpName"S+", ::SiteType"tJ", s::Index) |
134 | | -## return Op[s' => 2, s => 3] = 1.0 |
135 | | -## end |
136 | | -## |
137 | | -## function op!(Op::ITensor, ::OpName"S⁺", st::SiteType"tJ", s::Index) |
138 | | -## return op!(Op, OpName("S+"), st, s) |
139 | | -## end |
140 | | -## function op!(Op::ITensor, ::OpName"Sp", st::SiteType"tJ", s::Index) |
141 | | -## return op!(Op, OpName("S+"), st, s) |
142 | | -## end |
143 | | -## function op!(Op::ITensor, ::OpName"Splus", st::SiteType"tJ", s::Index) |
144 | | -## return op!(Op, OpName("S+"), st, s) |
145 | | -## end |
146 | | -## |
147 | | -## function op!(Op::ITensor, ::OpName"S-", ::SiteType"tJ", s::Index) |
148 | | -## return Op[s' => 3, s => 2] = 1.0 |
149 | | -## end |
150 | | -## |
151 | | -## function op!(Op::ITensor, ::OpName"S⁻", st::SiteType"tJ", s::Index) |
152 | | -## return op!(Op, OpName("S-"), st, s) |
153 | | -## end |
154 | | -## function op!(Op::ITensor, ::OpName"Sm", st::SiteType"tJ", s::Index) |
155 | | -## return op!(Op, OpName("S-"), st, s) |
156 | | -## end |
157 | | -## function op!(Op::ITensor, ::OpName"Sminus", st::SiteType"tJ", s::Index) |
158 | | -## return op!(Op, OpName("S-"), st, s) |
159 | | -## end |
160 | | - |
161 | | -has_fermion_string(::OpName"Cup", ::SiteType"tJ") = true |
162 | | -function has_fermion_string(on::OpName"c↑", st::SiteType"tJ") |
163 | | - return has_fermion_string(alias(on), st) |
164 | | -end |
165 | | -has_fermion_string(::OpName"Cdagup", ::SiteType"tJ") = true |
166 | | -function has_fermion_string(on::OpName"c†↑", st::SiteType"tJ") |
167 | | - return has_fermion_string(alias(on), st) |
| 3 | +function (n::StateName)(domain::SiteType"tJ") |
| 4 | + return n(SiteType"Electron"())[1:length(domain)] |
168 | 5 | end |
169 | | -has_fermion_string(::OpName"Cdn", ::SiteType"tJ") = true |
170 | | -function has_fermion_string(on::OpName"c↓", st::SiteType"tJ") |
171 | | - return has_fermion_string(alias(on), st) |
172 | | -end |
173 | | -has_fermion_string(::OpName"Cdagdn", ::SiteType"tJ") = true |
174 | | -function has_fermion_string(on::OpName"c†↓", st::SiteType"tJ") |
175 | | - return has_fermion_string(alias(on), st) |
| 6 | + |
| 7 | +function (n::OpName)(domain::SiteType"tJ") |
| 8 | + return n(SiteType"Electron"())[1:length(domain), 1:length(domain)] |
176 | 9 | end |
| 10 | + |
| 11 | +has_fermion_string(::OpName"c↑", ::SiteType"tJ") = true |
| 12 | +has_fermion_string(::OpName"c†↑", ::SiteType"tJ") = true |
| 13 | +has_fermion_string(::OpName"c↓", ::SiteType"tJ") = true |
| 14 | +has_fermion_string(::OpName"c†↓", ::SiteType"tJ") = true |
0 commit comments