IrrepsAndLayout#
- class cuequivariance.IrrepsAndLayout(
- irreps: Irreps | str,
- layout: IrrepsLayout | None = None,
一个群表示 (
Rep
),由Irreps
和IrrepsLayout
组合成一个单一对象。此类继承自
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
- 参数:
layout (可选, IrrepsLayout) – 数据布局 (
mul_ir
或ir_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