@@ -11,7 +11,9 @@ WP of `brᵦ`, displaced by a set of primitive lattice-vector representatives `R
1111
1212## Implementation
13131. Take a point `a` in the WP of `brₐ` and a point `b` in the WP of `brᵦ`.
14- Compute the displacement vector `δ = b + R - a`, where `R ∈ Rs`.
14+ Compute the displacement vector `δ = b + R - a`, where `R ∈ Rs`, giving the displacement
15+ vector from `a` (created site) to `b + R` (annihilated site): i.e., `δ` points opposite
16+ to the hopping direction.
15172. If `δ ∈ representatives`, add `δ => (a, b, R)` to the list of hoppings
1618 for that representative and continue. Otherwise, search all representatives for one
1719 whose list of hoppings contains `δ => (a, b, R)`. If none is found, add `δ` as a new
@@ -218,14 +220,14 @@ function add_reversed_orbits!(h_orbits::Vector{HoppingOrbit{D}}) where {D}
218220 deleteat! (h_orbits, n′)
219221 continue
220222 end
221- # we now know that at least some δ doesn't have a -δ counterpart; we assume that
222- # this implies that none of the δs have a -δ counterpart, so we need to add them all
223+ # we now know that at least some δ doesn't have a -δ counterpart; we assume that
224+ # this implies that none of the δs have a -δ counterpart, so we need to add them all
223225 @assert all (δ -> ! isapproxin (- δ, δs, nothing , false ; atol = VEC_CMP_ATOL), δs)
224226
225227 # first append the new δs into the orbit
226228 append! (δs, - δs)
227229
228- # add the "reversed" hopping terms: i.e., for every a → b + R, add b + R → a
230+ # add the "reversed" hopping terms: i.e., for every a → b + R, add b + R → a
229231 # => -δ = a - (b + R) = a - b - R = b - 2b - R -a + 2a = b + (2a - 2b - R) - a = b + R' - a
230232 hoppings = h_orbit. hoppings
231233 hoppings′ = map (hoppings) do hops
@@ -238,35 +240,6 @@ function add_reversed_orbits!(h_orbits::Vector{HoppingOrbit{D}}) where {D}
238240end
239241
240242# ---------------------------------------------------------------------------- #
241- # EBRs: (q|A), (w|B)
242- # Wyckoff positions: q, w
243- # q: q1, ..., qN
244- # w: w1, ..., wM
245- # Site symmetry irreps: A, B
246- # A: A1, ..., AJ
247- # B: B1, ..., BK
248- # δs = [δ1, δ2, ..., δn]
249- # δ1: qi₁¹ -> wj₁¹, qi₁² -> wj₁², ...
250- # δ2: qi₂¹ -> wj₂¹, qi₂² -> wj₂², ...
251- # v = [exp(-ik⋅δ1), exp(-ik⋅δ2), ..., exp(-ik⋅δn)]
252- # t = [[t(δ1) ...], [t(δ2) ...], ..., [t(δn) ...]]
253- # t(δ1): [t(qi₁ᵅ -> wj₁ᵅ, A_f -> B_g) ...]
254-
255- # Current example: (1a|E), (2c|A)
256- # ___w2__
257- # | x |
258- # |q1 x x w1
259- # |_______|
260- # δs = [1/2x, -1/2x, 1/2y, -1/2y]
261- # δ1: q1 -> w1 + G1
262- # δ2: q1 -> w1 + G2
263- # δ3: q1 -> w2 + G3
264- # δ4: q1 -> w2 + G4
265- # t = [t(δ1)..., t(δ2)..., t(δ3)..., t(δ4)...]
266- # t(δ1): [t(q1 -> w1, G1, E1 -> A1), t(q1 -> w1, G1, E2 -> A1)]
267- # t(δ2): [t(q1 -> w1, G2, E1 -> A1), t(q1 -> w1, G2, E2 -> A1)]
268- # t(δ3): [t(q1 -> w2, G3, E1 -> A1), t(q1 -> w2, G3, E2 -> A1)]
269- # t(δ4): [t(q1 -> w2, G4, E1 -> A1), t(q1 -> w2, G4, E2 -> A1)]
270243
271244# NB: The ordering of `t` is a bit subtle: `t` is a kind of vector-flattened
272245# tensor `T`, with the following "indexing convention" for `T`:
@@ -420,8 +393,6 @@ function construct_M_matrix(
420393 return Mm
421394end
422395
423- # H_{s,t} = v_i M_{i,j,s,t} t_j
424-
425396"""
426397 representation_constraints_matrices(
427398 Mm::AbstractArray{Int,4},
@@ -749,7 +720,7 @@ Build the P matrix for a particular symmetry operation acting on k-space, which
749720rows of the M matrix.
750721
751722To obtain the P matrix, we exploit that the action is on exponentials of the type
752- ``exp(- 2πi𝐤⋅δ)``, and instead act on δ ∈ `h_orbit.orbit` rather than on k. Because of this,
723+ ``exp(2πi𝐤⋅δ)``, and instead act on δ ∈ `h_orbit.orbit` rather than on k. Because of this,
753724we need to use the inverse of the rotation part of the symmetry operation.
754725
755726!!! details "Sketch of proof"
0 commit comments