sun_diffusion.canon module¶
Utilities for canonicalizing SU(N) eigenangles.
- sun_diffusion.canon.canonicalize_su2(thetas)¶
Canonicalizes a set of \({\rm SU}(2)\) eigenangles \((\theta_1, \theta_2)\) by:
Set \(\theta_1 = |{\rm wrap}(\theta)|\)
Set \(\theta_2 = -\theta_1\)
- Parameters:
thetas (Tensor) – Batch of \({\rm SU}(2)\) eigenangles
- Return type:
Tensor- Returns:
Canonicalized batch of eigenangles summing to zero
- sun_diffusion.canon.canonicalize_su3(thetas)¶
Canonicalizes a set of \({\rm SU}(3)\) eigenangles thetas.
Given eigenangles \((\theta_1, \theta_2, \theta_3)\), the algorithm for canonicalization is:
Project onto hyperplane defined by \(\sum_i \theta_i = 0\)
Map into coordinates \((a, b, c)\)
Wrap onto canonical hexagon centered at the identity
Impose hexagonal constraints by wrapping into [-0.5, 0.5]
Round and shift into the centered hexagon
- Parameters:
thetas (Tensor) – Batch of \({\rm SU}(3)\) eigenangles
- Return type:
Tensor- Returns:
Canonicalized batch of eigenangles summing to zero
- sun_diffusion.canon.canonicalize_sun(thetas)¶
Wrapper for SU(2) and SU(3) canonicalization.
- Return type:
Tensor