IrrepsAndLayout#

class cuequivariance.IrrepsAndLayout(
irreps: Irreps | str,
layout: IrrepsLayout | None = None,
)#

一个群表示 (Rep),由 IrrepsIrrepsLayout 组合成一个单一对象。

此类继承自 Rep

Rep                  <--- Base class for all representations
├── Irrep            <--- Base class for all irreducible representations
    ├── SU2
    ├── SO3
    ├── O3
├── IrrepsAndLayout  <--- This class

IrrepsLayout         <--- Enum class with two values: mul_ir and ir_mul

Irreps               <--- Collection of Irrep with multiplicities
参数:
  • irreps (Irrepsstr) – 不可约表示及其重数。

  • layout (可选, IrrepsLayout) – 数据布局 (mul_irir_mul)。

示例

让我们为 SO(3) 的 2x1 表示创建旋转矩阵,使用两种不同的布局

>>> angles = np.array([np.pi, 0, 0])

这里我们使用 ir_mul 布局

>>> with cue.assume("SO3", cue.ir_mul):
...     rep = cue.IrrepsAndLayout("2x1")
>>> R_ir_mul = rep.exp_map(angles, np.array([]))

这里我们使用 mul_ir 布局

>>> with cue.assume("SO3", cue.mul_ir):
...     rep = cue.IrrepsAndLayout("2x1")
>>> R_mul_ir = rep.exp_map(angles, np.array([]))

让我们看看两种布局之间的区别

>>> R_ir_mul.round(1) + 0.0
array([[ 1.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.,  0.],
       [ 0.,  0., -1.,  0.,  0.,  0.],
       [ 0.,  0.,  0., -1.,  0.,  0.],
       [ 0.,  0.,  0.,  0., -1.,  0.],
       [ 0.,  0.,  0.,  0.,  0., -1.]])
>>> R_mul_ir.round(1) + 0.0
array([[ 1.,  0.,  0.,  0.,  0.,  0.],
       [ 0., -1.,  0.,  0.,  0.,  0.],
       [ 0.,  0., -1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0., -1.,  0.],
       [ 0.,  0.,  0.,  0.,  0., -1.]])
algebra() ndarray#

李群的代数

李群的代数由以下方程定义

\[[X_i, X_j] = A_{ijk} X_k\]

其中 \(X_i\) 是连续生成元,\(A_{ijk}\) 是代数。

返回值:

形状为 (lie_dim, lie_dim, lie_dim) 的数组。

返回类型:

np.ndarray

continuous_generators() ndarray#

表示的生成元

表示的生成元由以下方程定义

\[\rho(\alpha) = \exp\left(\alpha_i X_i\right)\]

其中 \(\rho(\alpha)\) 是对应于参数 \(\alpha\) 的群元素的表示,\(X_i\) 是表示的(连续)生成元,每个的形状为 (dim, dim)

返回值:

形状为 (lie_dim, dim, dim) 的数组。

返回类型:

np.ndarray

discrete_generators() ndarray#

表示的离散生成元

\[\rho(n) = H^n\]
返回值:

形状为 (len(H), dim, dim) 的数组。

返回类型:

np.ndarray

trivial() Rep#

从与自身相同的群创建平凡表示

is_scalar() bool#

检查表示是否为标量(充当单位元)