Skip to content

Commit 3241475

Browse files
committed
deltap: Stage 4.3 relax 端到端 PASS + 无 target 隐式 Γ→0 语义缺口根因修复
- Γ-path relax(t_Γ*=自然 Γ 冻结,h2o1):4 离子步收敛,与纯 DFT 基线 逐点一致(能量差 ≤1.4e-4 eV、力差 ≤1.2e-3 eV/Å),λ 全程 1e-5–1e-4 Ry - 判据裁定:严格逐步单调在纯 DFT 即不成立(BFGS 过冲)→ 4.1 'F_H1z 限制'归因修正(非 HK 力项) - 根因修复 esolver_ks_lcao.cpp:无 target 时 p.target 全零非空 → 隐式 Γ→0 约束污染 relax 力;现真正清空(PW 路径保持文档化 γ→0 语义) - 验证:无 target relax 与纯 DFT 一致到 1e-13 eV/1e-6 eV/Å;center 用例与锚点 #3 逐位一致;deltap 单测 5/5
1 parent 3685324 commit 3241475

7 files changed

Lines changed: 174 additions & 12 deletions

docs/superpowers/specs/2026-08-04-deltap-execution-todo.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ T3 结论——现在有结论了),T4 通过后统一提交 Stage 1+2 再进
277277
|---|------|------|
278278
| 4.1 | operator 模式锚点重建(第三次,预期内) |**已完成(2026-08-17)**:12 用例串行全部 rc=0(9 标签 + bn_test + test_stru_target + relax),Γ 列入 `deltap_bn_sampling/results.csv`;bn_center 重跑与 P3 行逐位一致(确定性验证);PW Γ 锚点生产档 `tests/deltap_pw_h2o_anchor/`(λ=0:Γ/atom=(5.236100,1.348236,1.348093);λ=−0.01:escon=+0.079529=λΣΓ 恒等 ✓);L9 smoothness 单测 8/8 PASS(正交 D_I 合成数据 + T5 合法逐带规范 + T8 结构性扰动);详见 `2026-08-17-deltap-anchor3-rebuild.md` |
279279
| 4.2 | Tier-1 三体系驻点 FD 全矩阵(hf/co/h2o_asym) |**PASS(2026-08-17)**:三体系 21/21 腿全部 < 判据 0.0128555 eV/Å(最大残差 0.00658,1.95× 裕度);⟨η⟩ 关联检查阴性(co 1.67% 无残差偏大,残差主导为 O(λ) 响应族);|Γ−t_Γ*|∞≈1.7–2.7e-3(内循环 nmax 平台,诚实标注);详见 `2026-08-17-deltap-stage42-stationary-fd.md` |
280-
| 4.3 | D-D 正式验收 + deltap_relax 端到端(≥3 离子步能量下降、力平滑) | 通过判据 |
280+
| 4.3 | D-D 正式验收 + deltap_relax 端到端(≥3 离子步能量下降、力平滑) | **PASS(2026-08-17)**:D-D 驻点验收由 4.2 交付;Γ-path relax(t_Γ*=自然 Γ 冻结)4 离子步收敛,与纯 DFT 基线逐点一致(能量差 ≤1.4e-4 eV、力差 ≤1.2e-3 eV/Å),λ 全程 1e-5–1e-4 Ry 合法区;严格逐步单调在纯 DFT 基线即不成立(BFGS 过冲,判据按生产语义裁定);顺手修复无 target 隐式 Γ→0 语义缺口(LCAO 自由跑,PW 路径保持文档化 γ→0 语义);详见 `2026-08-17-deltap-stage43-relax-e2e.md` |
281281
| 4.4 | V1(efield 对照钉 E_eff 符号/因子)、V3(BN 新记账刚度复核) | 见推导文档 §10 |
282282

283283
## Stage 5:文档与清理(~0.5 天)

docs/superpowers/specs/2026-08-13-deltap-capability-boundaries.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
**DeltaP 当前是"小窗口精密约束 + 场模式能量/响应"工具:**
1414
约束模式在自然极化附近的小窗口内(S C F 单点与 Γ-路径力)已验证可用;
1515
场模式(均匀 λ 近似长程电场)的能量与极化响应已验证可用;
16-
**任何 relax/MD、大极化改变靶点、LCAO 多 rank 力路径,当前均不可用**
16+
**大极化改变靶点、任意靶点 relax/MD(γ-hold 路径)、场模式力,当前均不可用;Γ-path relax 在自然靶点附近可用(4.3 已验)**
1717

1818
---
1919

@@ -29,7 +29,7 @@
2929
| 约束模式力(Γ-路径,小 λ) | ✅ 可用 | T3 判决:残差 0.0138 eV/Å(判据 0.0129 的 1.07×);**Stage 4.2(2026-08-17):hf/co/h2o_asym 三体系驻点 FD 全矩阵 21/21 腿 PASS,最大残差 0.00658 eV/Å(判据 1.95× 裕度),⟨η⟩ 关联阴性**;工作窗见 §2 |
3030
| 约束模式力(γ-hold 路径) | ❌ 不可用 | T3' 实测 0.502 eV/Å(λ² 泄漏);任何"严格钉 γ 的 relax"都走这条路径 |
3131
| 内循环 λ 优化 | ⚠️ 受限 | 冻密度响应符号反转(−1.28 vs 自洽 +0.03 rad/Ry),冻密度 BFGS 对 γ 结构性失效;同步/SCF 级驱动可用 |
32-
| relax/MD(任何靶点| ❌ 不可用 | 见 §4-F1:力路径窗口比收敛路径窄得多 |
32+
| relax/MD | ⚠️ 受限可用(Γ-path,自然靶点附近| **Stage 4.3(2026-08-17):Γ-path relax(t_Γ\*=自然 Γ 冻结)端到端 PASS**——h2o1 4 离子步收敛、轨迹与纯 DFT 逐点一致(能量差 ≤1.4e-4 eV、力差 ≤1.2e-3 eV/Å)、λ 全程 1e-5–1e-4 Ry;任意大靶点/γ-hold 仍不可用(弱耦合 λ 预算,T3' 0.502);见 §4-F1 |
3333

3434
### 1.2 场模式(均匀 λ ≈ 长程电场)
3535

@@ -108,7 +108,7 @@
108108

109109
| 症状 | 原因 | 对策 |
110110
|------|------|------|
111-
| F1: relax 轨迹能量不降/力异常大 | 力路径超出窗口(γ-hold 或大 λ) | 约束模式 relax 当前不支持;只用单点 |
111+
| F1: relax 轨迹能量不降/力异常大 | 力路径超出窗口(γ-hold 或大 λ);或 2026-08-17 前"无 target"跑被隐式 Γ→0 约束污染(已修复) | 用 Γ-path(deltap_proxy_target_file=自然 Γ + secant off);无 target 现为真正自由跑;单步能量非单调若纯 DFT 同样出现 = 优化器过冲,非力场错误 |
112112
| F2: 多 rank 报 "nrow != ncol" WARNING_QUIT | ~~方阵网格守卫(L2)~~ L2 已解除(656a2a59d),不应再出现 | 若复现 = 回归,报 bug |
113113
| F3: "KPAR>1" WARNING_QUIT | L1 | kpar=1 |
114114
| F4: γ 收敛到靶点但 λ=0 | target-aware 假收敛(L10) | 检查连续性锚是否激活(branch.dat 参考) |
@@ -128,7 +128,7 @@
128128

129129
**不适合**
130130
- 大极化改变(铁电翻转全程、强场响应)——物理刚度 + 传递效率双重封顶;
131-
- 约束 relax/MD(力路径未通);
131+
- 任意靶点约束 relax/MD(力路径未通;Γ-path 自然靶点附近例外,4.3 已验);
132132
- 金属/近简并体系(分支理论未覆盖)。
133133

134134
**生态位备注**:分子/slab 的均匀场需求可先用 ABACUS 锯齿场(efield)满足;

docs/superpowers/specs/2026-08-17-deltap-anchor3-rebuild.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,12 @@
5454
τ=0 ⇒ Γ_B 结构性 ≈0.01,即使 t_Γ=4.0。约束作用在 Γ(非 γ),故
5555
|γ−t|≈4 rad 是预期;λ_B≈−4.0e-3、λ_N≈−2.26e-3 收敛。锚点 #2 是 gamma
5656
模式,不可比——**这不是回归**
57-
- relax 步1→2 能量非单调(−481.697→−481.639)= 已知 relax 限制(F_H1z
58-
0.4132/−1.0900/+0.0211);escon=−0.126101,λ 有向积累,机制正常。
57+
- relax 步1→2 能量非单调(−481.697→−481.639)= **归因修正
58+
(2026-08-17, Stage 4.3)**:该行为在纯 DFT relax 中原样出现(本征
59+
BFGS 过冲 + 人工短键几何),与 HK 力项无关;本跑额外污染来自无 target
60+
的隐式 t_Γ=0(Γ→0 约束,λ 有向积累 1.7e-2 Ry 的真实成因)——
61+
`esolver_ks_lcao.cpp` 已修复(无 target = 真正自由跑),详见
62+
`2026-08-17-deltap-stage43-relax-e2e.md`
5963

6064
### 3.2 PW Γ 锚点(生产档,单任务串行)
6165

docs/superpowers/specs/2026-08-17-deltap-progress-summary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ BN 体系的极化约束刚度实测为零——约束不耗力,揭示了该
8787
|| 内容 | 状态 |
8888
|----|------|------|
8989
| **应力(F-8)** | 约束/场模式下的应力张量(变胞、压电计算的入口) | ✅ 已交付(2026-08-17):H_HK 应力串行实现,V-H7 内部 FD + 内部 Maxwell 闭合(残差 6.8–7.0% = C 响应);压电 efield 必测项完成——应力侧杠杆 1.78× vs 力侧 52.5× ⇒ 17.7× 类失配是力路径特有;hk+MPI/ow 应力守卫拒绝 |
90-
| **正式验收(Stage 4)** | 三体系(HF 链/CO/H2O 非对称)驻点力全矩阵有限差分验收 + relax 端到端 | 4.1 锚点重建 #3 已完成(2026-08-17):LCAO 12 用例 + PW Γ 锚点生产档 + L9 smoothness 8/8;4.2 三体系驻点 FD 全矩阵 21/21 腿 PASS(2026-08-17,最大残差 0.00658 eV/Å < 判据 0.0129,⟨η⟩ 关联阴性);4.3 待跑 |
90+
| **正式验收(Stage 4)** | 三体系(HF 链/CO/H2O 非对称)驻点力全矩阵有限差分验收 + relax 端到端 | 4.1 锚点重建 #3 已完成(2026-08-17):LCAO 12 用例 + PW Γ 锚点生产档 + L9 smoothness 8/8;4.2 三体系驻点 FD 全矩阵 21/21 腿 PASS(2026-08-17,最大残差 0.00658 eV/Å < 判据 0.0129,⟨η⟩ 关联阴性);4.3 Γ-path relax 端到端 PASS(2026-08-17):4 离子步收敛、与纯 DFT 轨迹逐点一致、λ 全程 1e-5–1e-4 Ry;4.4 待跑 |
9191
| **诊断输出** | SMO 基组完备性 ⟨η⟩、string 局域度 spread_I | 已交付,SCF 收敛时自动打印 |
9292
| **场模式的力** | 挂起中。实测发现:约束算符的能量含与极化无关的几何形变通道,导致"力 vs 极化响应"的 Maxwell 一致性失配约 17 倍。这不是实现错误(实现的力确是所实现能量的精确梯度),而是当前算符形式作为"纯电场"的物理近似不足。**唯一第一性原理解法(EFC 全阶算符)已定位、未立项**;半经验有效电荷补丁可选(须标注非从头算) | 等立项 |
9393

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# DeltaP Stage 4.3:D-D 验收收尾 + deltap_relax 端到端(h2o1,生产档)
2+
3+
- 日期:2026-08-17
4+
- 前置:Stage 4.2 三体系驻点 FD 全矩阵 21/21 PASS(`3685324c5`)——D-D
5+
生产设置(ecutwfc=100/ecutrho=400/scf_thr=1e-8、判据 0.0128555 eV/Å)
6+
下的驻点力正式验收已由 4.2 交付。
7+
- 范围:① deltap_relax 端到端(Γ-path:t_Γ*=自然 Γ 冻结,λ 每 SCF 重收敛;
8+
纯 DFT 基线对照;收敛与力平滑评估);② 顺手根因修复:无 target 模式的
9+
隐式 Γ→0 目标语义缺口(4.1 "已知 relax 限制" 的真实根因)。
10+
11+
## 1. 测试计划
12+
13+
1. **纯 DFT 基线 relax**(deltap_switch=0,h2o1,relax_nmax=5):参考轨迹
14+
(能量/力/收敛步数)——"力平滑"与"能量下降"的对照基准。
15+
2. **Γ-path relax**(deltap_corr=1 + `deltap_proxy_target_file`=自然 Γ +
16+
`deltap_secant off` + inner_nmax=0 同步 λ 更新):生产用法——冻结
17+
t_Γ*=自然 Γ,几何弛豫期间 λ 每 SCF 重收敛(4.2 已验证的驻点力路径)。
18+
验收:与纯 DFT 轨迹一致(无 deltap 特有退化)、≥3 离子步、收敛、
19+
力平滑、λ 处于合法小 λ 工作区。
20+
3. **无 target 语义缺口验证**:4.1 无 target relax 曾出现 λ 积累
21+
(1.7e-2 Ry)与步 2 力放大(2.18 eV/Å),当时归因 F_H1z。本轮验证
22+
该行为是否源于"无 target = 隐式 t_Γ=0(Γ→0 约束)"的实现缺口,并评估
23+
修复与回归。
24+
4. 回归:deltap 单测 5/5 + 目标驱动用例(center)与锚点 #3 逐位一致。
25+
26+
## 2. 测试设置
27+
28+
- 系统:同仓库单机;OMP_NUM_THREADS=1;串行 `build/abacus_basic_para`
29+
(含本轮 esolver_ks_lcao.cpp 修复的增量构建);一次一个任务。
30+
- 体系:`tests/deltap_relax` 的 h2o1(15.873 Å 盒,O–H 0.586 Å 人工
31+
短键几何);KPT 1×1×2;relax_nmax=5;scf_thr=1e-8;ecutwfc=100/
32+
ecutrho=400;smearing gauss 0.002;broyden 0.4;genelpa;symmetry=0。
33+
- Γ-path:`t_gamma_star.dat` = (6.698, 1.977, 1.977)(λ=0 自然 Γ,
34+
P3 精度 3 位小数,与 4.2 同口径);`deltap_secant off` 冻结跨离子步;
35+
lambda_step=0.01/mixing=0.1/inner_thr=1e-3。
36+
- 工作区:`/tmp/deltap_43/{base,relax_df,relax_gamma,relax_free,regr_center}`
37+
38+
## 3. 结果
39+
40+
### 3.1 自然 Γ 基准(λ=0)
41+
42+
- E_nat = −481.6977698749262 eV;Γ_nat = (6.698, 1.977, 1.977);
43+
γ = (−7.958, −2.380, −2.380);escon = 0。
44+
45+
### 3.2 纯 DFT 基线 relax(4 离子步收敛)
46+
47+
| 离子步 | E' (eV) | O1z 力 (eV/Å) | H1z 力 | H2z 力 | 最大力 |
48+
|---|---|---|---|---|---|
49+
| 1 | −481.6977699 | −0.7472649 | +0.3736325 | +0.3736324 | 0.747 |
50+
| 2 | −481.6432896 | +2.0607702 | −1.0303269 | −1.0304432 | 2.061 |
51+
| 3 | −481.7036998 | −0.0407136 | +0.0203747 | +0.0203390 | 0.074 |
52+
| 4 | −481.7040672 | −0.0094964 | +0.0046812 | +0.0048151 | 0.0253 |
53+
54+
- 收敛:第 4 步最大力 0.0253 < 阈值 0.02571 eV/Å(converged);终值
55+
E −481.70407 < 初值 −481.69777(Δ = −6.3 meV)。
56+
- **步 1→2 能量非单调(+54 meV)与步 2 力反号放大(0.75→2.06)是本征
57+
BFGS 过冲**:初始 O–H 0.586 Å 偏离平衡(平衡 0.602 Å),步 1 力把 O
58+
推过谷底(z 7.9365→7.8991),步 2 力反推。**纯 DFT 同样出现** → 不是
59+
deltap 效应。
60+
61+
### 3.3 Γ-path relax(t_Γ*=自然 Γ 冻结,4 离子步收敛)
62+
63+
| 离子步 | E' (eV) | O1z 力 (eV/Å) | H1z 力 | H2z 力 | 末 λ (Ry) | \|Γ−t_Γ*\| |
64+
|---|---|---|---|---|---|---|
65+
| 1 | −481.6977699 | −0.7472703 | +0.3736351 | +0.3736351 | (6e-8, 4e-7, 4e-7) | 4e-4 |
66+
| 2 | −481.6434319 | +2.0596409 | −1.0297623 | −1.0298786 | (2.0e-5, 5.7e-5, 5.7e-5) | 5.6e-2 |
67+
| 3 | −481.7037415 | −0.0402118 | +0.0201238 | +0.0200880 | (2.6e-5, 7.0e-5, 7.0e-5) | 1.3e-2 |
68+
| 4 | −481.7041132 | −0.0095024 | +0.0046842 | +0.0048182 | (2.9e-5, 8.4e-5, 8.4e-5) | 1.3e-2 |
69+
70+
- **与纯 DFT 轨迹逐点一致**:每步能量差 ≤ 1.4e-4 eV,每步力差 ≤ 1.2e-3
71+
eV/Å(步 2 最大),收敛步数与几何轨迹相同(O z:7.9365→7.8991→
72+
7.9279→7.9257)。非单调性 100% 继承自纯 DFT(步 2 差 54.2 meV vs
73+
纯 DFT 54.5 meV),无 deltap 特有退化。
74+
- **λ 处于合法小 λ 工作区**:全程 1e-5–1e-4 Ry(对照:T3'/弱耦合区 λ 需
75+
~1e-2 即开始泄漏);escon ≤ −5.3e-4 Ry(−7.2e-3 eV)——Γ-hold 约束
76+
在自然靶点附近由几乎零 λ 维持,正是 Route A+ 合法工作区。
77+
- 收敛判据:4 离子步(≥3 ✓)、最大力 < 阈值 ✓、终值能量下降 ✓。
78+
79+
### 3.4 无 target 语义缺口:根因与修复
80+
81+
- **根因**`esolver_ks_lcao.cpp` 中无 target 文件时
82+
`p.target = ucell.get_dp_target()` 返回全零向量 {0,0,0}(STRU 未写
83+
dp_target 的默认值),**非空**。λ 更新残差门 `!tgt.empty()` 放行,
84+
t_Γ(κ=1)=t_γ={0,0,0} → 隐式"约束 Γ→0":λ 积累、力被污染——4.1 无
85+
target relax 的 λ→1.7e-2 Ry、步 2 力 2.18 eV/Å 的真实成因。代码注释
86+
声明的意图是"无 target = 自由跑(λ 保持初值)",实现未达成。
87+
- **修复**`esolver_ks_lcao.cpp`,13+/4−):无任何 target(文件缺省且
88+
STRU dp_target 全零)时 `p.target.clear()`——实现与注释意图对齐。
89+
**PW 路径不改**`deltap_pw.cpp:444-447` 是显式文档化的历史语义
90+
"无 target = 约束 γ→0",两条路径语义不同,各自保持)。
91+
- **验证(修复后)**:无 target relax(relax_free)λ≡(0,0,0)、
92+
|γ−t|=0、escon=0;能量/力与纯 DFT 基线一致到 1e-13 eV / 1e-6 eV/Å;
93+
4 离子步收敛,轨迹完全相同。目标驱动路径零回归:center 用例 λ、
94+
Γ、E' 与锚点 #3 逐位一致(−4.000592e-3/−2.262259e-3,
95+
E'=−338.7136166249902 eV)。deltap 单测 5/5 PASS。
96+
- 影响面审计:仅 `tests/deltap_relax`(无 target)受影响;bn_sampling
97+
全部 9 标签用 target 文件、test_stru_target 用 STRU dp_target、
98+
其余 λ 冻结——均不受修复影响。
99+
100+
## 4. 分析
101+
102+
- **4.1 "已知 relax 限制(F_H1z ...)"归因修正**:4.1 文档将步 2 力
103+
反号放大与非单调能量归因于 HK 力项(F_H1z),本轮证明是双重误读:
104+
① 该行为在纯 DFT relax 中原样出现(本征 BFGS 过冲 + 人工短键几何),
105+
与 HK 力无关;② 4.1 无 target 跑的额外污染来自隐式 t_Γ=0(Γ→0
106+
约束),已修复。4.1 文档对应行已加更正注记。
107+
- **4.3 判据裁定**:"≥3 离子步能量下降、力平滑"按严格逐步单调读法在
108+
纯 DFT 基线即不成立(BFGS 过冲是优化器行为,非力场错误)。按生产
109+
语义读法 PASS:≥3 离子步 ✓、收敛(力 < 阈值)✓、终值能量下降 ✓、
110+
力轨迹与纯 DFT 一致(无 deltap 特有退化)✓。判据表述建议今后写为
111+
"与纯 DFT 基线轨迹一致 + 收敛",而非绝对单调。
112+
- **Γ-path relax 是合法的生产用法**:冻结 t_Γ*=自然 Γ 时 λ 自动落在
113+
1e-5–1e-4 Ry 合法区,力 = 4.2 已验证的驻点力,端到端行为与纯 DFT
114+
无差。任意大靶点(弱耦合 λ 预算)仍受 Route A+ 工作区限制(已在
115+
LIMITATION)。
116+
117+
## 5. 下一步
118+
119+
- TODO 4.3 ✅;progress-summary/capability 同步;提交(源码修复 +
120+
文档)。
121+
- **4.4**:V1(efield 对照钉 E_eff 符号/因子)、V3(BN 新记账刚度复核)。
122+
- 建议评审确认:无 target 语义修复(LCAO 自由 / PW 约束 γ→0 的路径
123+
分叉)是否符合预期;relax 判据表述修订。

docs/superpowers/specs/deltap-development-log.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2879,3 +2879,29 @@ F-7/F-7b/锚点套件/FD 协议纪律)、当前状态与 F-8→Stage 4→Stage
28792879
inner_nmax=20 触顶平台,λ 连续三轮不变);残差仍以 1.95× 裕度通过。
28802880
- 文件:`2026-08-17-deltap-stage42-stationary-fd.md`;TODO 4.2 ✅;
28812881
progress-summary Stage 4 行更新。提交含脚本(s4 产物不入库)。
2882+
2883+
## 2026-08-17 (9): Stage 4.3 deltap_relax 端到端 + 无 target 语义缺口根因修复
2884+
2885+
- **D-D 验收**:驻点力正式验收已由 4.2 交付(三体系 21/21 腿,判据
2886+
0.0128555 eV/Å);4.3 完成 relax 端到端。
2887+
- **Γ-path relax(t_Γ\*=自然 Γ 冻结,h2o1,relax_nmax=5)**:4 离子步
2888+
收敛(力 0.747→2.061→0.074→0.025 eV/Å < 阈值 0.0257),与纯 DFT
2889+
基线逐点一致——每步能量差 ≤1.4e-4 eV、力差 ≤1.2e-3 eV/Å;λ 全程
2890+
1e-5–1e-4 Ry(合法小 λ 工作区),escon ≤ −7.2e-3 eV。
2891+
- **判据裁定**:严格逐步能量单调在纯 DFT 基线即不成立(BFGS 过冲 +
2892+
人工短键 0.586 Å O–H 几何,步 1→2 +54 meV)——4.1 "F_H1z 限制"
2893+
归因修正:非 HK 力项,本征优化器行为;按生产语义(≥3 步、收敛、
2894+
终值下降、与 DFT 一致)PASS。
2895+
- **根因修复**`esolver_ks_lcao.cpp`,13+/4−):无 target 时
2896+
`p.target = get_dp_target()` 返回全零非空向量 → 隐式 t_Γ=0(Γ→0
2897+
约束)驱动 λ≠0,污染 relax 力(4.1 无 target 跑 λ→1.7e-2 的真实
2898+
成因)。修复:无任何 target 时 `p.target.clear()`(与代码注释意图
2899+
一致);PW 路径保持文档化的"无 target=约束 γ→0"语义(deltap_pw.cpp
2900+
显式注释,不改)。
2901+
- **验证/回归**:修复后无 target relax λ≡0、能量/力与纯 DFT 一致到
2902+
1e-13 eV/1e-6 eV/Å;center 目标驱动用例与锚点 #3 逐位一致
2903+
(λ=−4.000592e-3/−2.262259e-3、E'=−338.7136166249902);deltap
2904+
单测 5/5。影响面:仅 tests/deltap_relax(无 target)——bn_sampling
2905+
全用 target 文件/λ 冻结,不受影响。
2906+
- 文件:`2026-08-17-deltap-stage43-relax-e2e.md`;TODO 4.3 ✅;
2907+
4.1 文档归因更正;capability/progress-summary 同步。

source/source_esolver/esolver_ks_lcao.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,11 +1037,20 @@ void ESolver_KS_LCAO<TK, TR>::deltap_init(UnitCell& ucell)
10371037
// dangling-else bug; R4 cleanup.)
10381038
if (has_any_target && GlobalV::MY_RANK == 0)
10391039
std::cout << " [DeltaP] Loaded targets from STRU (dp_target/dp_constrain)" << std::endl;
1040+
// No target anywhere (no file, STRU dp_target all unset/zero):
1041+
// leave p.target EMPTY so the run is genuinely free. Without this,
1042+
// get_dp_target() returns an all-zero {0,0,0} vector, and the λ
1043+
// update residual gate (!tgt.empty()) treats it as a "constrain
1044+
// Γ → 0" target — the free run silently drives λ ≠ 0 and
1045+
// contaminates the relax forces (root cause of the old "F_H1z
1046+
// 限制" misattribution in 4.1; fixed 2026-08-17, Stage 4.3).
1047+
if (!has_any_target)
1048+
p.target.clear();
10401049
}
1041-
// When no target is specified, leave p.target empty. This allows
1042-
// ground-state γ determination without target-aware branch selection,
1043-
// while the constraint (deltap_corr=1) still applies the Hamiltonian
1044-
// correction with the current (possibly zero) λ.
1050+
// When no target is specified, p.target is now truly empty (see above).
1051+
// This allows ground-state γ determination without target-aware branch
1052+
// selection, while the constraint (deltap_corr=1) still applies the
1053+
// Hamiltonian correction with the current (possibly zero) λ.
10451054

10461055
deltap_scf_solver_->init(p, deltap_make_backend(ucell));
10471056

0 commit comments

Comments
 (0)