mindscience.e3nn.o3.Irrep

class mindscience.e3nn.o3.Irrep(l, p=None)[源代码]

O(3) 的不可约表示。这个类不包含任何数据,它是描述表示的结构。 通常用作库中其他类的参数,以定义函数的输入和输出表示。 不可约表示由非负整数 l (阶数)和奇偶性 p (偶为 1,奇为 -1)标注。常用别名:e 表示偶性、o 表示奇性、y 表示按 ((-1)^l) 的奇偶。

参数:
  • l (Union[int, str]) - 非负整数,表示的阶数,\(l = 0, 1, \dots\)。或者用字符串同时编码阶数与奇偶性(例如 "1o""2e",其中 e/o/y 各表示上述别名)。

  • p (int, 可选) - 表示的奇偶性,\(p \in \{1, -1\}\)。当 l 为字符串时忽略此参数。默认值: None

异常:
  • NotImplementedError - 如果方法未实现。

  • ValueError - 如果 l 为负数或 p 不在 {1, -1} 中。

  • ValueError - 如果 l 不能转换为 Irrep

  • TypeError - 如果 l 不是 int 或 str。

样例:

>>> from mindscience.e3nn.o3 import Irrep
>>> Irrep(0, 1)
0e
>>> Irrep("1y")
1o
>>> Irrep("2o").dim
5
>>> Irrep("2e") in Irrep("1o") * Irrep("1o")
True
>>> Irrep("1o") + Irrep("2o")
1x1o+1x2o
is_scalar()[源代码]

检查该不可约表示是否为简单(标量)表示。

返回:

bool。如果 l = 0 并且奇偶性为 p = 1 则为 True ,否则为 False

wigD_from_angles(alpha, beta, gamma, k=None)

根据三个描述旋转顺序的欧拉角 \((\alpha, \beta, \gamma)\) 计算 O(3) 的 Wigner-D 矩阵表示:

  1. 绕原始 Y 轴旋转 \(\gamma\)

  2. 绕新的 X 轴旋转 \(\beta\)

  3. 绕最新的 Y 轴旋转 \(\alpha\)

参数:
  • alpha (Union[Tensor[float32], list[float], tuple[float], ndarray[np.float32], float]) - 围绕Y轴旋转 \(\alpha\),第三个作用。

  • beta (Union[Tensor[float32], list[float], tuple[float], ndarray[np.float32], float]) - 围绕X轴旋转 \(\beta\),第二个作用。

  • gamma (Union[Tensor[float32], list[float], tuple[float], ndarray[np.float32], float]) - 围绕Y轴旋转 \(\gamma\),第一个作用。

  • k (Union[None, Tensor[float32], list[float], tuple[float], ndarray[np.float32], float], 可选) - 应用奇偶校验的次数。默认值: None

返回:

Tensor,O(3) 的 Wigner D 矩阵表示。张量形状为 \((..., 2l+1, 2l+1)\)

样例:

>>> m = Irrep(1, -1).wigD_from_angles(0, 0 ,0, 1)
>>> print(m)
[[-1,  0,  0],
[ 0, -1,  0],
[ 0,  0, -1]]
wigD_from_matrix(R)

从旋转矩阵中得到 O(3) 的 Wigner D 矩阵表示。

参数:
  • R (Tensor) - 旋转矩阵。形状为 \((..., 3, 3)\) 的张量。

返回:

Tensor,O(3) 的 Wigner D 矩阵表示。张量形状为 \((..., 2l+1, 2l+1)\)

异常:
  • TypeError - 如果 R 不是张量。

样例:

>>> from mindspore import ops
>>> m = Irrep(1, -1).wigD_from_matrix(-ops.eye(3))
>>> print(m)
[[-1,  0,  0],
[ 0, -1,  0],
[ 0,  0, -1]]