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:

  1. Set \(\theta_1 = |{\rm wrap}(\theta)|\)

  2. 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:

  1. Project onto hyperplane defined by \(\sum_i \theta_i = 0\)

  2. Map into coordinates \((a, b, c)\)

  3. Wrap onto canonical hexagon centered at the identity

  4. Impose hexagonal constraints by wrapping into [-0.5, 0.5]

  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