atomscf.grid.radial_grid_exp_transformed

atomscf.grid.radial_grid_exp_transformed(n, rmin, rmax, total_span=6.0)[源代码]

生成用于变量变换方法的指数网格。

网格公式参考文献 [1]_

\[r(j) = R_p(\exp(j\delta) - 1) + r_{\min}, \quad j=0,1,\ldots,j_{\max}\]

其中 \(R_p\) 由边界条件 \(r(j_{\max}) = r_{\max}\) 确定, \(\delta\)\(j_{\max} \cdot \delta = \text{total\_span}\) 确定(默认6.0)。

该网格配合变量变换 \(v(j) = u(j) / \exp(j\delta/2)\) 使用, 可以消除坐标变换引入的一阶导数项。

参数:
  • n (int) -- 网格点数 \(j_{\max} + 1\),要求 \(n \ge 2\)

  • rmin (float) -- 径向下限 :math:`r_{min} ge 0`(可以为0,物理上核在原点)。

  • rmax (float) -- 径向上限 \(r_{\max}\),应满足 \(r_{\max} > r_{\min}\)

  • total_span (float, optional) -- 控制参数 \(j_{\max} \cdot \delta\),默认6.0。

返回类型:

tuple[ndarray, ndarray, float, float]

返回:

  • r (numpy.ndarray) -- 径向网格坐标,满足 r[0] = rmin, r[-1] = rmax。

  • w (numpy.ndarray) -- 对应的梯形积分权重。

  • delta (float) -- 网格参数 \(\delta\)

  • Rp (float) -- 网格参数 \(R_p\)

备注

  • 该网格确保 r[0] = rmin(可以为0,物理上正确)

  • 需配合 operator.py 中的 solve_bound_states_transformed 使用

  • 变量变换后的方程没有一阶导数项,数值稳定性好

引用

[ExpGridTransform]

指数网格变量变换方法 来源:Computational Physics Fall 2024, Assignment 7, Problem 2 https://github.com/bud-primordium/Computational-Physics-Fall-2024/tree/main/Assignment_7/Problem_2 problem_2.tex 第32-46行