Z-mirror and parity operators
Former-commit-id: 08df6f997b2c0925adb9956e8d36ef904c2243a7
This commit is contained in:
parent
6b2ce9d6eb
commit
1ceaad21bb
|
@ -815,9 +815,13 @@ def WignerD_yy_fromvector(lmax, vect):
|
|||
"""
|
||||
return WignerD_yy(lmax, quaternion.from_rotation_vector(vect))
|
||||
|
||||
|
||||
|
||||
def xflip_yy(lmax):
|
||||
"""
|
||||
TODO doc
|
||||
xflip = δ(m + m') δ(l - l')
|
||||
(i.e. ones on the (m' m) antidiagonal
|
||||
"""
|
||||
my, ny = get_mn_y(lmax)
|
||||
elems = np.zeros((len(my),len(my)),dtype=int)
|
||||
|
@ -832,12 +836,37 @@ def xflip_yy(lmax):
|
|||
def yflip_yy(lmax):
|
||||
"""
|
||||
TODO doc
|
||||
yflip = rot(z,pi/2) * xflip * rot(z,-pi/2)
|
||||
= δ(m + m') δ(l - l') * (-1)**m
|
||||
"""
|
||||
my, ny = get_mn_y(lmax)
|
||||
elems = xflip_yy(lmax)
|
||||
elems[(my % 2)==1] = elems[(my % 2)==1] * -1 # Obvious sign of tiredness (this is correct but ugly; FIXME)
|
||||
return elems
|
||||
|
||||
def zflip_yy(lmax):
|
||||
"""
|
||||
TODO doc
|
||||
zflip = (-1)^(l+m)
|
||||
"""
|
||||
my, ny = get_mn_y(lmax)
|
||||
elems = np.zeros((len(my), len(my)), dtype=int)
|
||||
b_in = 0
|
||||
e_in = None
|
||||
for l in range(1,lmax+1):
|
||||
e_in = b_in + 2*l+1
|
||||
elems[b_in:e_in,b_in:e_in] = np.diag([(-1)**i for i in range(e_in-b_in)])
|
||||
b_in = e_in
|
||||
return elems
|
||||
|
||||
def parity_yy(lmax):
|
||||
"""
|
||||
Parity operator (flip in x,y,z)
|
||||
parity = (-1)**l
|
||||
"""
|
||||
my, ny = get_mn_y(lmax)
|
||||
return np.diag((-1)**ny)
|
||||
|
||||
# BTW parity (xyz-flip) is simply (-1)**ny
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue