使用示例
本节提供常见原子的计算示例和结果对比。
快速开始
氢原子最小 HF 计算
最简单的单电子 HF 计算:
from atomscf.grid import radial_grid_linear
from atomscf.scf_hf import run_hf_minimal
# 创建线性网格
r, w = radial_grid_linear(n=800, rmin=1e-6, rmax=50.0)
# 氢原子 HF (Z=1)
result = run_hf_minimal(Z=1, r=r, w=w)
print(f"总能量: {result.E_total:.6f} Ha")
print(f"1s 轨道能: {result.epsilon_1s:.6f} Ha")
预期输出:
总能量: -0.499995 Ha
1s 轨道能: -0.499995 Ha
氦原子 RHF 计算
闭壳层多电子体系:
from atomscf.grid import radial_grid_linear
from atomscf.scf_hf import run_hf_scf, HFSCFGeneralConfig
r, w = radial_grid_linear(n=800, rmin=1e-6, rmax=50.0)
cfg = HFSCFGeneralConfig(
Z=2, # 氦原子
r=r, w=w,
occ_by_l={0: [2.0]}, # 1s²
eigs_per_l={0: 1}, # 求解 1 个 s 轨道
spin_mode='RHF',
mix_alpha=0.5,
tol=1e-6,
maxiter=100
)
result = run_hf_scf(cfg)
print(f"总能量: {result.E_total:.6f} Ha")
print(f"ε_1s: {result.eigenvalues_by_l[0][0]:.6f} Ha")
锂原子 UHF 计算
开壳层自旋极化:
from atomscf.grid import radial_grid_linear
from atomscf.scf_hf import run_hf_scf, HFSCFGeneralConfig
r, w = radial_grid_linear(n=1000, rmin=1e-6, rmax=60.0)
cfg = HFSCFGeneralConfig(
Z=3, # 锂原子
r=r, w=w,
occ_by_l={0: [2.0, 1.0]}, # 1s² 2s¹
occ_by_l_spin={
0: {
'up': [1.0, 1.0], # 1s↑ 2s↑
'down': [1.0, 0.0], # 1s↓ (2s 无占据)
}
},
eigs_per_l={0: 2}, # 求解 2 个 s 轨道
spin_mode='UHF',
mix_alpha=0.3,
tol=1e-6,
maxiter=120
)
result = run_hf_scf(cfg)
print(f"总能量: {result.E_total:.6f} Ha")
print(f"ε_2s(↑): {result.eigenvalues_by_l_spin[(0, 'up')][1]:.6f} Ha")
碳原子 LSDA 计算
密度泛函方法:
from atomscf.grid import radial_grid_linear
from atomscf.scf import run_lsda_vwn, SCFConfig
r, w = radial_grid_linear(n=1200, rmin=1e-6, rmax=70.0)
cfg = SCFConfig(
Z=6, # 碳原子
r=r, w=w,
lmax=2, # 最大角动量(包含 p 轨道)
eigs_per_l=2, # 每个 l 求解 2 个轨道
eig_solver="fd5_aux",
xc="VWN",
mix_alpha=0.5,
tol=5e-5,
maxiter=140
)
result = run_lsda_vwn(cfg, verbose=True)
print(f"总能量: {result.energies['E_total']:.6f} Ha")
print(f"ε_2p(↑): {result.eps_by_l_sigma[(1, 'up')][0]:.6f} Ha")
更多示例
完整示例代码位于 examples/
目录:
run_h_1s_fd.py
: 氢原子(不同求解器对比)run_c_lsda_vwn.py
: 碳原子 LSDAtest_uhf.py
: UHF vs RHF 对比benchmark_*.py
: 批量原子计算