radial_schrodinger package
Submodules
radial_schrodinger.analysis module
径向薛定谔方程求解器的分析模块
包含波函数处理、能量分析和收敛性研究等功能。提供数值结果的验证、分析和后处理。
主要功能: - 波函数的归一化和导数计算 - 渐近行为分析和小r极限处理 - 能量本征值与理论值比较 - 数值方法的收敛性研究
- Classes:
WavefunctionProcessor: 波函数处理器,处理归一化和导数 EnergyAnalyzer: 能量分析器,比较计算值和理论值 ConvergenceAnalyzer: 收敛性分析器,研究网格依赖性
- class radial_schrodinger.analysis.ConvergenceAnalyzer(energy_analyzer: EnergyAnalyzer)[源代码]
基类:
object
收敛性分析类
Methods
analyze_grid_convergence
(solver, n_values)分析不同网格点数的收敛性
- class radial_schrodinger.analysis.EnergyAnalyzer(theoretical_values: Dict)[源代码]
基类:
object
能量分析类
Methods
compare_with_theory
(E, V_type, n, l)与理论值比较
- class radial_schrodinger.analysis.WavefunctionProcessor(非均匀网格版本)[源代码]
基类:
object
提供波函数的归一化、导数计算和渐近行为分析等功能。 特别处理了原点附近的奇异性问题。
- Attributes:
- rnp.ndarray
非均匀径向网格点
- lint
角量子数
- deltafloat
网格变换参数
- jnp.ndarray
均匀网格点索引
- r_pfloat
网格变换参数
- dr_djnp.ndarray
网格变换的导数
Methods
analyze_asymptotic
(u[, num_points])分析r→0时波函数的渐进行为
计算波函数在非均匀网格上的导数
获取r=0处的函数值和导数
通过拟合处理r→0处的行为
- analyze_asymptotic(u: ndarray, num_points: int = 10) Tuple[float, float] [源代码]
分析r→0时波函数的渐进行为
通过对数拟合确定渐进形式:u(r) ~ r^m * exp(-r/n)
- Parameters:
- unp.ndarray
波函数值
- num_pointsint
用于拟合的点数
- Returns:
- Tuple[float, float]
(幂次m, 指数参数n) m应接近l+1, n应接近主量子数
radial_schrodinger.main module
径向薛定谔方程求解主程序
整合各功能模块,提供完整的计算流程和用户接口。
功能特点: - 命令行参数配置和运行控制 - 多种原子、量子态和求解方法的示例 - 自动化的收敛性分析流程 - 结构化的结果输出和可视化
- Modules:
utils: 工具函数和配置类 solver: 数值求解方法 analysis: 结果分析和处理 visualization: 结果可视化
- class radial_schrodinger.main.RadialSchrodingerSolver(config: SolverConfig)[源代码]
基类:
object
径向薛定谔方程主求解器
整合配置、网格、求解器、分析器和可视化器, 提供完整的求解流程控制。
- Attributes:
- configSolverConfig
计算配置
- gridRadialGrid
计算网格
- Vcallable
势能函数
- wave_processorWavefunctionProcessor
波函数处理器
- energy_analyzerEnergyAnalyzer
能量分析器
- visualizerResultVisualizer
结果可视化器
- convergence_analyzerConvergenceAnalyzer
收敛性分析器
- solverUnion[ShootingSolver, FiniteDifferenceSolver]
具体求解器实例
Methods
convergence_study
([n_points_list])进行收敛性分析
solve
()求解指定的量子态
solve_with_points
(n_points)使用指定网格点数求解
- convergence_study(n_points_list=None) Dict [源代码]
进行收敛性分析
- Parameters:
- n_points_listlist, optional
要测试的网格点数列表
- Returns:
- dict
收敛性分析结果
radial_schrodinger.solver module
径向薛定谔方程求解器的核心求解模块
实现了两种求解方法: 1. 打靶法(shooting): 从外向内积分,寻找满足边界条件的能量本征值 2. 有限差分法(finite difference): 构建矩阵直接求解本征值问题
主要特点: - 采用变换坐标系统,处理波函数在原点附近的奇异性 - 使用改进的RK4方法进行数值积分 - 引入多重评价指标确保解的物理正确性 - 支持任意外部势能函数
- Classes:
ShootingSolver: 打靶法求解器 FiniteDifferenceSolver: 有限差分法求解器
- class radial_schrodinger.solver.FiniteDifferenceSolver(grid: RadialGrid, V: callable, l: int)[源代码]
基类:
object
有限差分法求解器
Methods
V_eff
(j)计算有效势
构建哈密顿量矩阵
fd_solve
(n_states)渐进式求解本征值问题
construct_B_matrix
- class radial_schrodinger.solver.ShootingSolver(grid: RadialGrid, V: callable, l: int)[源代码]
基类:
object
打靶法求解器
使用改进的RK4方法从外向内积分求解径向方程。通过多重评价指标 (节点数、渐进行为、连续性等)寻找正确的能量本征值。
- Attributes:
- gridRadialGrid
计算使用的径向网格
- Vcallable
势能函数
- lint
角量子数
- deltafloat
网格变换参数
- r_pfloat
网格变换标度参数
- jndarray
网格索引数组
Methods
V_eff
(j)计算有效势
从外向内积分
shooting_solve
(E_min, E_max[, target_nodes])打靶法求解本征值和本征函数
- shooting_solve(E_min: float, E_max: float, target_nodes: int = None) Tuple[float, ndarray] [源代码]
打靶法求解本征值和本征函数
使用优化算法最小化多重目标函数: 1. 波函数在原点附近的对数导数误差 2. 波函数节点数与目标值的偏差 3. 波函数在r_min处的幅值误差 4. 波函数导数的连续性误差
- Parameters:
- E_minfloat
能量搜索下限
- E_maxfloat
能量搜索上限
- target_nodesint, optional
目标节点数,默认为n-l-1
- Returns:
- float
能量本征值
- np.ndarray
归一化的波函数
- Raises:
- RuntimeError
当优化算法未能收敛时抛出
radial_schrodinger.utils module
径向薛定谔方程求解器的工具模块
包含网格生成、势能函数、波函数工具等基础设施。 提供配置类和理论值查询等功能支持。
默认单位: - 长度: a bohr半径 - 能量: hatree
- Classes:
SolverConfig: 求解器配置类 RadialGrid: 径向网格工具类 PotentialFunction: 势能函数类 WavefunctionTools: 波函数工具类
- Functions:
get_theoretical_values: 获取理论参考值 get_energy_bounds: 估计能量搜索范围
- class radial_schrodinger.utils.PotentialFunction[源代码]
基类:
object
势能函数类
提供不同原子的势能函数实现: 1. 氢原子: 库仑势 V(r) = -1/r 2. 锂原子: GTH赝势,包含局域和非局域部分
V(r) = V_loc(r) + V_nl(r)
注: 已考虑电子负电荷,势能直接给出
Methods
V_hydrogen
(r)氢原子势能: V(r) = -1/r
V_lithium
(r[, Z_ion, r_loc, C1, C2, C3, C4])锂原子赝势
get_potential
(V_type)获取势能函数
- static V_hydrogen(r: ndarray) ndarray [源代码]
氢原子势能: V(r) = -1/r
- Parameters:
- rnp.ndarray
径向距离数组
- Returns:
- np.ndarray
势能数组
- static V_lithium(r: ndarray, Z_ion: float = 3, r_loc: float = 0.4, C1: float = -14.0093922, C2: float = 9.5099073, C3: float = -1.7532723, C4: float = 0.0834586) ndarray [源代码]
锂原子赝势
- Parameters:
- rnp.ndarray
径向距离数组
- Z_ionfloat, optional
有效核电荷
- r_locfloat, optional
局域化参数
- C1-C4float, optional
势能参数
- Returns:
- np.ndarray
势能数组
- class radial_schrodinger.utils.RadialGrid(config: SolverConfig)[源代码]
基类:
object
径向网格工具类,处理非均匀网格的生成和变换
使用变换 r = r_p[exp(j*delta) - 1] + r_min 生成非均匀网格, 在原点附近较密,远处较疏,更适合原子波函数的数值计算。
- Attributes:
- configSolverConfig
网格配置对象
- jndarray
均匀网格点索引
- r_pfloat
网格变换标度参数
- rndarray
物理空间径向坐标
- drndarray
网格间距
Methods
返回网格信息
设置非均匀网格,使用变换 r = r_p[exp(j*delta) - 1] + r_min
- class radial_schrodinger.utils.SolverConfig(r_max: float = 30.0, r_min: float = 1e-05, j_max: int | None = None, delta: float | None = None, l: int = 0, n: int = 1, n_states: int = 3, V_type: str = 'hydrogen', method: str = 'shooting', tol: float = 1e-08)[源代码]
基类:
object
求解器配置类
- Attributes:
- r_maxfloat
最大径向距离 (Bohr)
- r_minfloat
最小径向距离 (Bohr)
- j_maxint
径向网格点数
- deltafloat
网格变换参数
- lint
角量子数
- nint
主量子数
- n_statesint
需要求解的本征态数量
- V_typestr
势能类型 (‘hydrogen’ 或 ‘lithium’)
- methodstr
求解方法 (‘shooting’ 或 ‘fd’)
- tolfloat
收敛精度
- V_type: str = 'hydrogen'
- property config_summary: str
返回配置摘要信息
- delta: float | None = None
- j_max: int | None = None
- l: int = 0
- method: str = 'shooting'
- n: int = 1
- n_states: int = 3
- r_max: float = 30.0
- r_min: float = 1e-05
- tol: float = 1e-08
- class radial_schrodinger.utils.WavefunctionTools[源代码]
基类:
object
波函数工具类
Methods
count_nodes
(u[, eps])计算波函数节点数
实现前几个低量子数态的径向波函数解析表达式: R(r) = N_nl * r^l * L_n^(2l+1)(2r/n) * exp(-r/n) 其中N_nl为归一化系数,L_n^k为拉盖尔多项式
radial_schrodinger.visualization module
径向薛定谔方程求解器的可视化模块
负责绘制波函数、概率密度、能量扫描结果等图像。 提供结果可视化和分析展示功能。
- Classes:
ResultVisualizer: 结果可视化类
- class radial_schrodinger.visualization.ResultVisualizer(r: ndarray)[源代码]
基类:
object
结果可视化类
提供原子波函数、能量和收敛性分析的可视化功能。 自动处理中文显示和样式优化。
- Attributes:
- rnp.ndarray
径向网格点
Methods
plot_convergence_study
(results[, V_type, n, ...])绘制收敛性分析结果
plot_energy_scan
(E_array, u0_array, n, l, V_type)绘制能量扫描结果
plot_wavefunction
(u, R, E, n, l, V_type[, ...])绘制波函数及其概率密度分布
- plot_convergence_study(results: Dict, V_type: str = '', n: int = 1, l: int = 0, method: str = 'shooting')[源代码]
绘制收敛性分析结果
使用双对数坐标展示网格间距与相对误差的关系。 同时绘制二阶和四阶收敛的参考线以供比较。
- Parameters:
- resultsDict
包含 ‘delta_h’(网格间距)和’errors’(相对误差)的字典
- V_typestr
势能类型
- nint
主量子数
- lint
角量子数
- methodstr
求解方法(‘shooting’或’fd’)
- plot_energy_scan(E_array: ndarray, u0_array: ndarray, n: int, l: int, V_type: str)[源代码]
绘制能量扫描结果
- Parameters:
- E_arraynp.ndarray
能量数组
- u0_arraynp.ndarray
对应的u(0)值
- nint
主量子数
- lint
角量子数
- V_typestr
势能类型
- plot_wavefunction(u: ndarray, R: ndarray, E: float, n: int, l: int, V_type: str, R_analytic: ndarray | None = None, method: str = 'shooting')[源代码]
绘制波函数及其概率密度分布
生成两个子图: 1. 波函数图:展示变换后的u(r)和物理波函数R(r) 2. 概率密度图:展示r²R²(r)分布
当提供解析解时,同时绘制对比曲线。
- Parameters:
- unp.ndarray
变换坐标下的径向波函数u(r)
- Rnp.ndarray
物理坐标下的径向波函数R(r)
- Efloat
能量本征值(Hartree)
- nint
主量子数
- lint
角量子数
- V_typestr
势能类型(‘hydrogen’或’lithium’)
- R_analyticnp.ndarray, optional
解析波函数(对氢原子部分态可用)
- methodstr
求解方法(‘shooting’或’fd’)
Module contents
- class radial_schrodinger.ConvergenceAnalyzer(energy_analyzer: EnergyAnalyzer)[源代码]
基类:
object
收敛性分析类
Methods
analyze_grid_convergence
(solver, n_values)分析不同网格点数的收敛性
- class radial_schrodinger.EnergyAnalyzer(theoretical_values: Dict)[源代码]
基类:
object
能量分析类
Methods
compare_with_theory
(E, V_type, n, l)与理论值比较
- class radial_schrodinger.FiniteDifferenceSolver(grid: RadialGrid, V: callable, l: int)[源代码]
基类:
object
有限差分法求解器
Methods
V_eff
(j)计算有效势
构建哈密顿量矩阵
fd_solve
(n_states)渐进式求解本征值问题
construct_B_matrix
- class radial_schrodinger.PotentialFunction[源代码]
基类:
object
势能函数类
提供不同原子的势能函数实现: 1. 氢原子: 库仑势 V(r) = -1/r 2. 锂原子: GTH赝势,包含局域和非局域部分
V(r) = V_loc(r) + V_nl(r)
注: 已考虑电子负电荷,势能直接给出
Methods
V_hydrogen
(r)氢原子势能: V(r) = -1/r
V_lithium
(r[, Z_ion, r_loc, C1, C2, C3, C4])锂原子赝势
get_potential
(V_type)获取势能函数
- static V_hydrogen(r: ndarray) ndarray [源代码]
氢原子势能: V(r) = -1/r
- Parameters:
- rnp.ndarray
径向距离数组
- Returns:
- np.ndarray
势能数组
- static V_lithium(r: ndarray, Z_ion: float = 3, r_loc: float = 0.4, C1: float = -14.0093922, C2: float = 9.5099073, C3: float = -1.7532723, C4: float = 0.0834586) ndarray [源代码]
锂原子赝势
- Parameters:
- rnp.ndarray
径向距离数组
- Z_ionfloat, optional
有效核电荷
- r_locfloat, optional
局域化参数
- C1-C4float, optional
势能参数
- Returns:
- np.ndarray
势能数组
- class radial_schrodinger.RadialGrid(config: SolverConfig)[源代码]
基类:
object
径向网格工具类,处理非均匀网格的生成和变换
使用变换 r = r_p[exp(j*delta) - 1] + r_min 生成非均匀网格, 在原点附近较密,远处较疏,更适合原子波函数的数值计算。
- Attributes:
- configSolverConfig
网格配置对象
- jndarray
均匀网格点索引
- r_pfloat
网格变换标度参数
- rndarray
物理空间径向坐标
- drndarray
网格间距
Methods
返回网格信息
设置非均匀网格,使用变换 r = r_p[exp(j*delta) - 1] + r_min
- class radial_schrodinger.RadialSchrodingerSolver(config: SolverConfig)[源代码]
基类:
object
径向薛定谔方程主求解器
整合配置、网格、求解器、分析器和可视化器, 提供完整的求解流程控制。
- Attributes:
- configSolverConfig
计算配置
- gridRadialGrid
计算网格
- Vcallable
势能函数
- wave_processorWavefunctionProcessor
波函数处理器
- energy_analyzerEnergyAnalyzer
能量分析器
- visualizerResultVisualizer
结果可视化器
- convergence_analyzerConvergenceAnalyzer
收敛性分析器
- solverUnion[ShootingSolver, FiniteDifferenceSolver]
具体求解器实例
Methods
convergence_study
([n_points_list])进行收敛性分析
solve
()求解指定的量子态
solve_with_points
(n_points)使用指定网格点数求解
- convergence_study(n_points_list=None) Dict [源代码]
进行收敛性分析
- Parameters:
- n_points_listlist, optional
要测试的网格点数列表
- Returns:
- dict
收敛性分析结果
- class radial_schrodinger.ResultVisualizer(r: ndarray)[源代码]
基类:
object
结果可视化类
提供原子波函数、能量和收敛性分析的可视化功能。 自动处理中文显示和样式优化。
- Attributes:
- rnp.ndarray
径向网格点
Methods
plot_convergence_study
(results[, V_type, n, ...])绘制收敛性分析结果
plot_energy_scan
(E_array, u0_array, n, l, V_type)绘制能量扫描结果
plot_wavefunction
(u, R, E, n, l, V_type[, ...])绘制波函数及其概率密度分布
- plot_convergence_study(results: Dict, V_type: str = '', n: int = 1, l: int = 0, method: str = 'shooting')[源代码]
绘制收敛性分析结果
使用双对数坐标展示网格间距与相对误差的关系。 同时绘制二阶和四阶收敛的参考线以供比较。
- Parameters:
- resultsDict
包含 ‘delta_h’(网格间距)和’errors’(相对误差)的字典
- V_typestr
势能类型
- nint
主量子数
- lint
角量子数
- methodstr
求解方法(‘shooting’或’fd’)
- plot_energy_scan(E_array: ndarray, u0_array: ndarray, n: int, l: int, V_type: str)[源代码]
绘制能量扫描结果
- Parameters:
- E_arraynp.ndarray
能量数组
- u0_arraynp.ndarray
对应的u(0)值
- nint
主量子数
- lint
角量子数
- V_typestr
势能类型
- plot_wavefunction(u: ndarray, R: ndarray, E: float, n: int, l: int, V_type: str, R_analytic: ndarray | None = None, method: str = 'shooting')[源代码]
绘制波函数及其概率密度分布
生成两个子图: 1. 波函数图:展示变换后的u(r)和物理波函数R(r) 2. 概率密度图:展示r²R²(r)分布
当提供解析解时,同时绘制对比曲线。
- Parameters:
- unp.ndarray
变换坐标下的径向波函数u(r)
- Rnp.ndarray
物理坐标下的径向波函数R(r)
- Efloat
能量本征值(Hartree)
- nint
主量子数
- lint
角量子数
- V_typestr
势能类型(‘hydrogen’或’lithium’)
- R_analyticnp.ndarray, optional
解析波函数(对氢原子部分态可用)
- methodstr
求解方法(‘shooting’或’fd’)
- class radial_schrodinger.ShootingSolver(grid: RadialGrid, V: callable, l: int)[源代码]
基类:
object
打靶法求解器
使用改进的RK4方法从外向内积分求解径向方程。通过多重评价指标 (节点数、渐进行为、连续性等)寻找正确的能量本征值。
- Attributes:
- gridRadialGrid
计算使用的径向网格
- Vcallable
势能函数
- lint
角量子数
- deltafloat
网格变换参数
- r_pfloat
网格变换标度参数
- jndarray
网格索引数组
Methods
V_eff
(j)计算有效势
从外向内积分
shooting_solve
(E_min, E_max[, target_nodes])打靶法求解本征值和本征函数
- shooting_solve(E_min: float, E_max: float, target_nodes: int = None) Tuple[float, ndarray] [源代码]
打靶法求解本征值和本征函数
使用优化算法最小化多重目标函数: 1. 波函数在原点附近的对数导数误差 2. 波函数节点数与目标值的偏差 3. 波函数在r_min处的幅值误差 4. 波函数导数的连续性误差
- Parameters:
- E_minfloat
能量搜索下限
- E_maxfloat
能量搜索上限
- target_nodesint, optional
目标节点数,默认为n-l-1
- Returns:
- float
能量本征值
- np.ndarray
归一化的波函数
- Raises:
- RuntimeError
当优化算法未能收敛时抛出
- class radial_schrodinger.SolverConfig(r_max: float = 30.0, r_min: float = 1e-05, j_max: int | None = None, delta: float | None = None, l: int = 0, n: int = 1, n_states: int = 3, V_type: str = 'hydrogen', method: str = 'shooting', tol: float = 1e-08)[源代码]
基类:
object
求解器配置类
- Attributes:
- r_maxfloat
最大径向距离 (Bohr)
- r_minfloat
最小径向距离 (Bohr)
- j_maxint
径向网格点数
- deltafloat
网格变换参数
- lint
角量子数
- nint
主量子数
- n_statesint
需要求解的本征态数量
- V_typestr
势能类型 (‘hydrogen’ 或 ‘lithium’)
- methodstr
求解方法 (‘shooting’ 或 ‘fd’)
- tolfloat
收敛精度
- V_type: str = 'hydrogen'
- property config_summary: str
返回配置摘要信息
- delta: float | None = None
- j_max: int | None = None
- l: int = 0
- method: str = 'shooting'
- n: int = 1
- n_states: int = 3
- r_max: float = 30.0
- r_min: float = 1e-05
- tol: float = 1e-08
- class radial_schrodinger.WavefunctionProcessor(非均匀网格版本)[源代码]
基类:
object
提供波函数的归一化、导数计算和渐近行为分析等功能。 特别处理了原点附近的奇异性问题。
- Attributes:
- rnp.ndarray
非均匀径向网格点
- lint
角量子数
- deltafloat
网格变换参数
- jnp.ndarray
均匀网格点索引
- r_pfloat
网格变换参数
- dr_djnp.ndarray
网格变换的导数
Methods
analyze_asymptotic
(u[, num_points])分析r→0时波函数的渐进行为
计算波函数在非均匀网格上的导数
获取r=0处的函数值和导数
通过拟合处理r→0处的行为
- analyze_asymptotic(u: ndarray, num_points: int = 10) Tuple[float, float] [源代码]
分析r→0时波函数的渐进行为
通过对数拟合确定渐进形式:u(r) ~ r^m * exp(-r/n)
- Parameters:
- unp.ndarray
波函数值
- num_pointsint
用于拟合的点数
- Returns:
- Tuple[float, float]
(幂次m, 指数参数n) m应接近l+1, n应接近主量子数
- class radial_schrodinger.WavefunctionTools[源代码]
基类:
object
波函数工具类
Methods
count_nodes
(u[, eps])计算波函数节点数
实现前几个低量子数态的径向波函数解析表达式: R(r) = N_nl * r^l * L_n^(2l+1)(2r/n) * exp(-r/n) 其中N_nl为归一化系数,L_n^k为拉盖尔多项式