mindscience.e3nn.o3.spherical_harmonics

mindscience.e3nn.o3.spherical_harmonics(l, x, normalize=True, normalization='integral')[源代码]

计算球面谐波。

球面谐波是在三维空间上的多项式:

\[Y^l: \mathbb{R}^3 \longrightarrow \mathbb{R}^{2l+1}\]

通常限制在单位球面上(当 normalize=True):

\[Y^l: S^2 \longrightarrow \mathbb{R}^{2l+1}\]

满足以下性质:

  • 是笛卡尔坐标 x, y, z 的多项式;

  • 等变:\(Y^l(R x) = D^l(R) \, Y^l(x)\)

  • 正交:\(\int_{S^2} Y^l_m(x) \, Y^j_n(x) \, dx = \text{cste} \, \delta_{lj} \, \delta_{mn}\),常数取值依赖归一化选择。

并满足如下递推性质:

\[\begin{split}Y^{l+1}_i(x) = \text{cste}(l) \, C_{ijk} \, Y^l_j(x) \, x_k \\ \partial_k Y^{l+1}_i(x) = \text{cste}(l) \, (l+1) \, C_{ijk} \, Y^l_j(x)\end{split}\]

其中 \(C\)wigner_3j

参数:
  • l (Union[int, list[int]]) - 球面谐波的阶数。

  • x (Tensor) - 构造球面谐波的张量,形状为 (..., 3) 的张量。

  • normalize (bool, 可选) - 是否在投影到球面谐波之前将 x 归一化为位于球面上的单位向量。默认值:True

  • normalization (str, 可选) - {'integral', 'component', 'norm'},输出张量的归一化方法。默认值:'integral'

    • 'component':\(\|Y^l(x)\|^2 = 2l+1, \; x \in S^2\)

    • 'norm':\(\|Y^l(x)\| = 1, \; x \in S^2\),即 component / sqrt(2l+1)

    • 'integral':\(\int_{S^2} Y^l_m(x)^2 \; dx = 1\),即 component / sqrt(4pi)

返回:

Tensor,球面谐波 \(Y^l(x)\),张量形状为 (..., 2l+1)

异常:
  • ValueError - 如果 normalization 不在 {'integral', 'component', 'norm'} 中。

  • ValueError - 如果 SphericalHarmonics 的 irreps_in 既不是向量 (1x1o) 也不是伪向量 (1x1e)。

  • ValueError - 如果球谐函数的 irreps_outlpirreps_in 不一致,输出奇偶性应满足 p = input_p**l

  • ValueError - 如果张量 x 的形状不是 (..., 3)

  • NotImplementedError - 如果 l 大于 11。