Repository navigation
Conversation
AsTonyshment
approved these changes
Oct 10, 2026
AsTonyshment
left a comment
Collaborator
There was a problem hiding this comment.
Nice fix! LGTM. Please check the failing unit/integration tests and update all reference values affected by the intended numerical change.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reminder
AGENTS.mdanddocs/developers_guide/agent_governance.md.source/changes.Linked Issue
No separate issue: this PR contains the bug report, mathematical explanation and numerical evidence. The issue was found during the investigation associated with #8117, but this is an independent AO interpolation fix and does not include that PR's DeltaSpin force-factor change.
What's changed?
Numerical_Orbital_Lm::extra_uniformpreviously usedUni_RadialFfor orbital values and a different cubic spline for radial derivatives. The matching spline values were computed but discarded. Downstream value/derivative interpolation therefore described two different radial functions; tightening SCF convergence does not repair that inconsistency.Store both outputs from the existing spline evaluator. Preserve its boundary conditions, derivative table and zero value padding at/after the cutoff. No new interpolator, INPUT option, public interface or global dependency is introduced.
Following review, the standalone Fe2 integration fixture, manual diagnostic script and additional Fe orbital have been removed. No new LCAO case is introduced: the focused unit regression tests the shared mathematical contract, while the existing Gamma/multik CPU/GPU integration cases cover its consumers. Their existing pseudopotentials, orbitals, inputs, public collectors and tolerances are reused.
Unit Tests and/or Case Tests for my changes
The new source
test_orb_atomic_lm.cppis linked into the existingMODULE_AO_ORB_atomic_lm_testtarget. It checks all six angular-momentum boundary-condition branches and value padding outside the support. For a synthetic smooth radial function, a five-point energy-independent finite difference checks the interpolated value/derivative contract within one original spline interval.a3b253084bcd0def11898379379a592985fe34f5. The baseline differs only by compiling/linking the oldorb_atomic_lm.cppinto the same object list. All 2,870 tracked source/build-input hashes match the validation snapshot. The baseline AO SHA256 ise20e19ddf7bb3e9ffa2fc65f3bcb8266a2dce65b58b0d5b908fb297ae3c754de; the corrected file is302be9aaa3c0a867c1e52b2095aa50ca084ded19916ce6ec1df509b0127fa3cf.Reference audit and rerun results
The ASE check stopped at its first energy assertion in CI. I explicitly evaluated all 41 assertions in
test_calculator_resultswith both implementations before changing references, including eigenvalues, occupations, forces and stress. Only its energy reference fails with the corrected implementation:np.allclosetolerancesAll other ASE assertions pass unchanged. The corrected energy exactly reproduces CI's
-194.953050937, rather than borrowing a value from #8117.The same old-AO/corrected-AO comparison was run through the existing integration harness. The old AO implementation passes the old references. The corrected implementation reproduces the 20 scalar-case failures and 7 early-aborting file-comparison failures in the Gamma CPU CI job, and all 13 affected Gamma GPU cases. Running the collectors through every assertion also exposes later comparisons that CI could not reach after the first failure. Multik cases were checked too, including the two D4 cases.
Updates cover 99 existing scalar reference files and 29 existing matrix/cube/band/wavefunction reference files, plus the one ASE energy reference. Only failing scalar keys are replaced; passing scalar references and timing entries remain unchanged. File comparisons retain their original tolerances and their success assertions (
*_pass = 0). No threshold file, comparison routine, test input, orbital or pseudopotential is changed.These are expected consequences of changing the AO values: grid-integrated Hamiltonians and densities change, which changes SCF energies/eigenvalues, density-dependent force/stress terms, cube fields, and wavefunction fingerprints. The derivative table alone is unchanged; this does not imply that full self-consistent forces/stress must remain bitwise unchanged. Both binaries share every object except the AO translation unit, so the baseline passing and candidate failing the old references isolates the cause.
02_NAO_Gamma03_NAO_multik12_NAO_Gamma_GPU13_NAO_multik_GPUabacuslite/xtest.shtests/xtest.shThe integration count above is 120 actual case directories.
Autotest.shlabels its property-assertion totals as “test cases”; those larger printed totals are not used as case counts here.The additional changed scalar quantities include
esolelreffor Gammascf_solvation:-18.2295218889 → -18.2295196494, and 226 wavefunction fingerprint components across existingget_wf_spin2,get_wf, andget_wf0cases. For example,get_wf_spin2/wfi2s1k1_wfc_fp_cross_7_imchanges0.4064717095966 → 0.4064682788777; multikget_wf/wfi1s1k3_wfc_fp_power_6changes1.08585375065 → 1.085854273835, andget_wf0changes1.086016820504 → 1.086017343709. The old AO reproduces those old values; all changed components pass the unchanged1e-7gate after updating their references. Exact component-by-component old/new values are in the reference-file diff.Scalar reference changes: old → new (unchanged tolerances)
Energy is in eV. Force/stress columns are the existing collector’s sums of absolute components, in eV/Angstrom and kbar. A dash means that reference was left unchanged. Per-atom energy references change consistently with total energy. All listed baseline values passed the old reference before the AO substitution.
All 29 failed file comparisons: representative maximum changes
The old implementation passes every old file comparison. Below, each selected component is the maximum change among the compared numeric tokens, using the existing absolute-value mode for wavefunctions. Original matrix/cube/band tolerances and
_pass = 0assertions are preserved; the new files come from the corrected run.02/md_out_hk_spin2/hks1_nao.txt.ref02/md_out_hk_spin2/hks2_nao.txt.ref02/md_out_hk_syns/hk_nao.txt.ref02/relax_out_hk_spin2/hks1_nao.txt.ref02/relax_out_hk_spin2/hks2_nao.txt.ref02/scf_out_dh/dhk_ref/dhkz_iat2_nao.txt02/scf_out_dh/dhk_ref/dvhkz_iat2_nao.txt02/scf_out_dh/dhk_ref/dvlkz_iat2_nao.txt02/scf_out_dh/dhk_ref/dvxckz_iat2_nao.txt02/scf_out_hk_spin2/hrs1_nao.csr.ref02/scf_out_hk_spin2/hrs2_nao.csr.ref02/scf_out_hxc/Vxc_R_spin0.ref02/scf_out_wf/wf_nao.txt.ref03/md_out_wf/wfk1g3_nao_mod.txt.ref03/nscf_out_band_pband/band.txt.ref03/nscf_out_hsr_tr_rr/hrs1_nao.csr.ref03/scf_out_chg_pot1/chg.cube.ref03/scf_out_chg_tau/chg.cube.ref03/scf_out_chg_tau/tau.cube.ref03/scf_out_dh_t/dhk_ref/dhkx_iat1_ik0_nao.txt03/scf_out_dh_t/dhk_ref/dhkx_iat1_ik1_nao.txt03/scf_out_dh_t/dhk_ref/dhky_iat1_ik0_nao.txt03/scf_out_dh_t/dhk_ref/dhky_iat1_ik1_nao.txt03/scf_out_dh_t/dhk_ref/dhkz_iat1_ik0_nao.txt03/scf_out_dh_t/dhk_ref/dhkz_iat1_ik1_nao.txt03/scf_out_elf/elftot.cube.ref03/scf_out_hsr/hrs1_nao.csr.ref03/scf_out_hsr_spin4/hrs1_nao.csr.ref03/scf_out_wf/wfk2_nao_mod.txt.refDerivation: the inconsistent derivative term and why the common spline removes it
Numerical_Orbital_Lm::extra_uniformpreviously populatedpsi_uniformwith
Uni_RadialF, but populateddpsi_uniformwith the derivative of adifferent cubic spline. The spline routine already computed the matching
values, which were discarded in a temporary buffer. This fix stores those
values directly and retains zero value padding at and beyond the cutoff.
It preserves the existing spline boundary conditions and derivative table.
To derive the consistency condition, let the original radial knots be
$x_j,x_{j+1}$ , interval width $H=x_{j+1}-x_j$ , samples $f_j,f_{j+1}$ and$M_j,M_{j+1}$ . Define
$a=(x_{j+1}-r)/H$ and $b=(r-x_j)/H$ . The existing spline evaluator returns
spline second derivatives
$$
S(r)=a f_j+b f_{j+1}+\frac{H^2}{6}
\left[(a^3-a)M_j+(b^3-b)M_{j+1}\right].
$$
Since$a'=-1/H$ and $b'=1/H$ , differentiating term by term gives
$$
S'(r)=\frac{f_{j+1}-f_j}{H}
-\frac H6(3a^2-1)M_j+\frac H6(3b^2-1)M_{j+1},
$$
exactly the derivative returned by the same evaluator. Thus storing both
outputs establishes
psi_uniform[i] = S(r_i)anddpsi_uniform[i] = S'(r_i)inside the support.The orbital-value path in$h$ , with $t=(r-r_i)/h$ :
GintAtom::set_phiuses cubic Hermiteinterpolation on a fine interval of width
$$
\mathcal H(t)=h_{00}(t)y_i+h h_{10}(t)d_i
+h_{01}(t)y_{i+1}+h h_{11}(t)d_{i+1},
$$
$$
h_{00}=2t^3-3t^2+1,\quad h_{10}=t^3-2t^2+t,\quad
h_{01}=-2t^3+3t^2,\quad h_{11}=t^3-t^2.
$$
If this fine interval lies in one original spline interval, both$S$ and
$\mathcal H_{\mathrm{new}}$ are cubic polynomials with the same value and
$\mathcal H_{\mathrm{new}}=S$ and $\mathcal H'_{\mathrm{new}}=S'$ there.
first derivative at each endpoint. Their difference therefore has two
double roots. A polynomial of degree at most three cannot have those four
roots unless it is identically zero. Hence
For the old values$P(r_i)$ , put $\epsilon_i=P(r_i)-S(r_i)$ while retaining
$d_i=S'(r_i)$ . Linearity of Hermite interpolation gives
$$
\mathcal H_{\mathrm{old}}-S=h_{00}\epsilon_i+h_{01}\epsilon_{i+1}.
$$
Using$dt/dr=1/h$ , $h'{00}=-6t(1-t)$ and
$h'{01}=6t(1-t)$ then gives the extra derivative term
$$
\frac{d\mathcal H_{\mathrm{old}}}{dr}-S'
=\frac{6t(1-t)}h(\epsilon_{i+1}-\epsilon_i).
$$
Its maximum magnitude is$3|\epsilon_{i+1}-\epsilon_i|/(2h)$ , attained$t=1/2$ . This term vanishes for the corrected tables. There is no claim$h$ decreases: the endpoint error difference also$h$ .
at
that it diverges as
changes with
The GPU counterparts in
kernel/phi_operator_kernel.cuhuse the sameHermite value and four-point value/slope formulas.
The force path
$S$ and its quadratic derivative $S'$ exactly. The old pair of tables$\phi(\mathbf r-\mathbf R)=S(\rho)Y_{lm}(\hat\rho)$ ,
$\partial\phi/\partial\mathbf R=-\nabla\phi$ contains $S'$ .$e=wV\phi^2$ differentiates to
$\partial e/\partial R=2wV\phi,\partial\phi/\partial R$ ;
GintAtom::set_phi_dphiseparately uses four-point polynomialinterpolation of the values and slopes. When all four samples lie in one
original spline interval, cubic interpolation reproduces both the cubic
cannot generally satisfy that same value/derivative contract.
For an orbital
For example, a fixed-potential grid term
using the derivative of another radial representation violates this chain
rule. This example explains the mechanism, not a derivation of every DFT
force term. The unit regression checks the interpolation contract directly; existing SCF integration tests separately check its numerical consequences.
The proof is local to a single original spline interval, away from the
support boundary. It does not prove exact equality across spline knots,
zero numerical force error, cutoff convergence, or correctness of every
force/stress term. The existing derivative padding is unchanged; only
orbital values are explicitly zeroed outside the support.
Verification commands and environment
SRC,BUILDandRUNbelow denote the isolated source, build and external validation directories. ABACUS reportsv3.11.0-beta10; GCC 13.3, CUDA 12.9, OpenMPI 5.0.10, libxc 7.0.0, one V100 allocation per run,OMP_NUM_THREADS=1,OPENBLAS_NUM_THREADS=1. CPU cases use 4 MPI ranks (2 for the ASE case), GPU cases 2 MPI ranks. Baseline/candidate A/B ran consecutively on the same16v100n08allocation; the final reference rerun ran on16v100n13. These are correctness checks, not performance measurements.Environment repairs made before accepting results: the site's ELPA 2026.02 binary raises SIGILL inside
elpa_index.c:find_int_entryon Zen3, with either AO implementation. Both runs therefore use the existing ABI-compatiblelibelpa_openmp.so.19from the site's 2025.06 AVX2 installation and explicit generic kernels. The baseline passes the original references with that environment. Node-local temporary directories also disappeared during initial attempts; accepted runs use an isolated persistentTMPDIR. Those initial launches are not counted as numerical failures or passes.D4 was absent from the initial build. The repository's
toolchain/scripts/stage4/install_dftd4.shinstalled its pinned DFT-D4 4.3.0 archive (SHA256e94c5d021c0a4b4aa9b5587e36fda2f398271dc2dc1abfbe097fdb04022bef35) in an isolated prefix. Supplemental baseline/candidate binaries reuse the same object list, replacevdw.cppand addvdwd4.cppcompiled with the saved CMake flags plus__DFTD4, and link that library. Both supplemental binaries differ only in the AO object. The two old-AO D4 cases pass the old references; the corrected D4 cases pass their updated energy/stress references on rerun. Their force references remain within the original tolerance and are not changed.The initial full ASE script stopped at missing
seekpath; after installing isolatedseekpath 2.2.2andspglib 2.6.0dependencies, both complete scripts pass with ASE 3.28.0. No shared Python installation is modified.Checks not run locally: the full repository unit matrix and integration groups outside the four LCAO groups above (including RI/DeepKS/TDDFT) require their CI feature configurations. They are not claimed to pass by these results. No fresh finite-displacement force/stress or performance benchmark is claimed in this CI-reference follow-up. The local spline proof does not establish zero grid error, translational invariance, cutoff convergence, or exact force consistency across spline knots.
Governance Notes
docs/parameters.yamlordocs/advanced/input_files/input-main.md; the internal numerical correction, derivation and reference changes are documented here.module_aosupplies matching spline values/slopes to LCAO CPU/GPU consumers. Boundary conditions, derivative generation, ownership and interfaces remain unchanged. The focused regression is registered in the existing CMake target.Follow-up: newly enabled spin-2 H(R) case
The CPU run 38048620018 and CUDA run 38048620723 at
185a5401aboth failed in03_NAO_multik/scf_out_hsr_spin2. Upstream commit53a038661enabled this existing case in both case lists after the branch's earlier baseline (17a7140a). The previous 120-directory run did not include it. This follow-up updates its two H(R) references and two energy fields, adding no case, fixture or test script.A matched old-AO/fixed-AO run reproduced the exact CI mismatch (job
1727982, Sai16v100n08, 4 MPI ranks,OMP_NUM_THREADS=1). The old AO implementation passes both old H(R) references and the old overlap reference. The corrected implementation fails both old H(R) references and still passes the unchanged overlap reference. Thus the mismatch follows the AO correction rather than the new Fermi-energy header annotation.Each H(R) reference has 272 changed printed values; the maximum absolute change is
1.0e-7, above the unchanged1e-8matrix tolerance. The energy change is-1.47028433e-5 eV, above the unchanged1e-7 eVenergy tolerance. The initial fatal matrix comparison prevented CI from reporting these energy differences. Both channels and all scalar assertions have now been checked. This one-step matrix-output case does not test forces, stress or eigenvalues; no new coverage of those quantities is claimed.Fresh executions against the updated references passed the existing
Autotest.shflow:All three runs returned 0 (CPU job
1728013, GPU job1728014, Sai V100 /16v100n08,OMP_NUM_THREADS=1). These reuse the previously audited matched binaries; they are focused reference validation, not a local rebuild of GitHub's newer merge commit. The updated merge-head CI remains the gate for that combination. Matrix/energy tolerances, S(R), case inputs, public test helpers and the upstream case lists are unchanged.Complete AO-dependent feature-suite reference audit
The next CPU/CUDA jobs at
8faa5d22apassed the earlier LCAO groups, then stopped in05_rtTDDFT/15_rtTDDFT_GPU. The initial audit had omitted these feature suites and the RI/DeePKS suites, which also use the shared AO interpolation. This follow-up covers them together. No production code, test inputs, tolerances, pass/fail expectations, public test helpers or case lists are changed by this reference-only follow-up.The added changes comprise 207 scalar assertions in 62 existing
result.reffiles and 7 existing array/matrix reference files. Every updated scalar passed the old reference with the old-AO binary and failed it with the corrected-AO binary; all seven changed array comparisons also have that positive/negative control. All_passexpectations remain zero. Runtime fields and still-passing references are preserved.In particular, the first TDDFT wavefunction comparison used to abort collection before reporting the energy, force and stress differences in the same case. Diagnostic collection without early exit checked the later assertions too; the final acceptance runs use the unmodified public
Autotest.shflow. For02_NO_CH_OW_TDDFT, on both CPU and GPU:totalforcereftotalstressreftotalforcerefandtotalstressrefare the public helper's sums of absolute values of the final printed components, not the net-force vector. The force and stress gates stay at1e-4and1e-3for this case. Changes in self-consistent Hamiltonians/densities also affect DeePKS labels and RI excitation energies. Larger last-step energy changes inrelax_hse_gamma,md_hse_multikandrelax_cell_hse_multikinclude the change in trajectory caused by corrected forces; they are not interpreted as fixed-geometry energy shifts. Inputs, iteration counts and convergence settings remain unchanged.Matched controls and fresh verification
46557508420d0e5658dc8c2a1250e742181a4524(15feb6af+ PR8faa5d22a): GCC 13.3, OpenMPI 5.0.10, Libxc 7, LibRIb0eff7a, LibComm965bf90, cereal 1.3.2 and CPU LibTorch 2.0.0.ENABLE_LIBRI,ENABLE_MLALGOandENABLE_FLOAT_FFTWare enabled. The baseline shares all linked objects exceptorb_atomic_lm.cpp. On Sai16v100n35, job1728347, the baseline passed all 118 existing CPU cases: TDDFT 28, OFDFT 34, RI 24, DeePKS 28 and others 4. The corrected binary passed unchanged OFDFT references and exposed the intended reference differences in the other four groups.16v100n04(job1728225) for the GPU feature/control groups. All 26 GPU TDDFT baseline cases passed old references. The 24 CPU + 6 GPU SDFT cases passed for both binaries, with identical collected numerical properties after excluding wall time. An initial basic-build CPU run could not cover the two Torch KEDF cases and two single-precision FFT TDDFT cases; the fresh full-feature CPU build above covers all four and passes their old references with the baseline. No references were changed for these dependency limitations.1728630(16v100n06). The 24 RI + 28 DeePKS + 4 others fresh rerun also passed in job1728821(16v100n04), with each public test-group command returning zero. The CPU/GPU TDDFT checks include the entire eigenvalue/wavefunction reference files and all energy/force/stress assertions, including the assertions hidden by the earlier fatal comparison.Exact public test commands (each run from its existing test-group directory;
ABACUSdenotes the recorded binary):CPU matched-binary SHA256: old AO
dd10a8a512434c75f6afd0548834315d5c6b8771b13d14c8cfdd21a7a1e39448; corrected AOfcad69d2b8a50a44203cc3dee2d93366db1330613a29aaf87f9d6abefa4c266b.OMP_NUM_THREADS=1andOPENBLAS_NUM_THREADS=1throughout. No additional physical force finite-difference or performance claim is made by this CI reference audit.Array/matrix evidence
The following are maximum changed entries; every updated file passed with the baseline and failed with the candidate against its old reference. All other array checks retain their existing references.
05_rtTDDFT/02_NO_CH_OW_TDDFT/wfk1g3_nao_mod.txt.ref15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPU/wfk1g3_nao_mod.txt.ref08_RI/scf_out_xc_multik/vxc_out.ref09_DeePKS/21_NO_GO_deepks_vdelta_r_1/deepks_hrtot.csr.ref09_DeePKS/22_NO_GO_deepks_vdelta_r_2/deepks_hrtot.csr.ref09_DeePKS/23_NO_KP_deepks_vdelta_r_1/deepks_hrtot.csr.ref09_DeePKS/24_NO_KP_deepks_vdelta_r_2/deepks_hrtot.csr.refAll 207 updated scalar assertions: old → new
05_rtTDDFT/02_NO_CH_OW_TDDFTetotperatomrefetotreftotalforcereftotalstressref05_rtTDDFT/11_NO_O3_TDDFTetotperatomrefetotref05_rtTDDFT/13_NO_Taylor_TDDFTetotperatomrefetotref05_rtTDDFT/17_NO_vel_TDDFTetotperatomrefetotref05_rtTDDFT/18_NO_hyb_TDDFTetotperatomrefetotref05_rtTDDFT/19_NO_SUPERSINE_TDDFTetotperatomrefetotref05_rtTDDFT/20_NO_MIXED_EFIELD_TDDFTetotperatomrefetotref08_RI/lr_tddft_hf_ulr_gammaexcitationenergyref1excitationenergyref2excitationenergyref308_RI/md_hse_multiketotperatomrefetotref08_RI/nscf_hse_multiketotperatomrefetotref08_RI/relax_cell_hse_multiketotperatomrefetotref08_RI/relax_hse_gammaetotperatomrefetotref08_RI/rpa_scf_gammaEtot_without_rpaetotperatomrefetotref08_RI/rpa_scf_shrink_multiketotperatomrefetotref08_RI/rt_tddft_pbe0_gammaetotperatomrefetotref08_RI/scf_campbeh_gammaetotperatomrefetotref08_RI/scf_hf_multiketotperatomrefetotref08_RI/scf_hse_complex_multiketotperatomrefetotref08_RI/scf_hse_gammaetotperatomrefetotreftotalforceref08_RI/scf_hse_loop0_gammaetotperatomrefetotref08_RI/scf_hse_soc_symm_multiketotperatomrefetotreftotalstressref08_RI/scf_hse_spin2_gammaetotperatomrefetotreftotalforceref08_RI/scf_hse_spin4_multiketotperatomrefetotreftotalforceref08_RI/scf_hse_symm_multiktotalstressref08_RI/scf_out_xc_multiketotperatomrefetotref08_RI/scf_pbe0_multiketotperatomrefetotref09_DeePKS/01_NO_GO_deepks_scfdeepks_descdeepks_dm_eigetotperatomrefetotref09_DeePKS/02_NO_KP_deepks_scfetotperatomrefetotref09_DeePKS/03_NO_GO_deepks_mdetotperatomrefetotref09_DeePKS/04_NO_KP_deepks_mddeepks_dm_eigetotperatomrefetotref09_DeePKS/05_NO_GO_deepks_nscfdeepks_descdeepks_dm_eigetotperatomrefetotref09_DeePKS/06_NO_KP_deepks_nscfdeepks_descdeepks_dm_eigetotperatomrefetotref09_DeePKS/07_NO_GO_deepks_relaxetotperatomrefetotref09_DeePKS/08_NO_KP_deepks_relaxdeepks_dm_eigetotperatomrefetotref09_DeePKS/09_NO_GO_deepks_basicdeepks_e_labeldeepks_f_labeldeepks_fpredeepks_s_labeldeepks_spreetotperatomrefetotref09_DeePKS/10_NO_KP_deepks_basicdeepks_dm_eigdeepks_e_labeldeepks_f_labeldeepks_fpredeepks_s_labeldeepks_spreetotperatomrefetotreftotalforceref09_DeePKS/11_NO_GO_deepks_bandgapetotperatomrefetotref09_DeePKS/12_NO_GO_deepks_bandgap_2etotperatomrefetotref09_DeePKS/13_NO_GO_deepks_bandgap_3etotperatomrefetotref09_DeePKS/14_NO_KP_deepks_bandgapdeepks_e_labeletotperatomrefetotref09_DeePKS/15_NO_KP_deepks_bandgap_2deepks_e_labeletotperatomrefetotref09_DeePKS/16_NO_KP_deepks_bandgap_3deepks_o_labeletotperatomrefetotref09_DeePKS/17_NO_GO_deepks_vdelta_1deepks_e_labeldeepks_h_labeldeepks_vdpetotperatomrefetotref09_DeePKS/18_NO_GO_deepks_vdelta_2deepks_e_labeldeepks_h_labeletotperatomrefetotref09_DeePKS/19_NO_KP_deepks_vdelta_1deepks_e_labeldeepks_h_labeldeepks_vdpetotperatomrefetotref09_DeePKS/20_NO_KP_deepks_vdelta_2deepks_e_labeldeepks_h_labeletotperatomrefetotref09_DeePKS/21_NO_GO_deepks_vdelta_r_1deepks_e_labeldeepks_vdrpetotperatomrefetotref09_DeePKS/22_NO_GO_deepks_vdelta_r_2deepks_e_labeletotperatomrefetotref09_DeePKS/23_NO_KP_deepks_vdelta_r_1deepks_e_labeldeepks_vdrpetotperatomrefetotref09_DeePKS/24_NO_KP_deepks_vdelta_r_2deepks_e_labeletotperatomrefetotref09_DeePKS/25_NO_GO_deepks_out_freq_elecdeepks_e_labeldeepks_e_label_elecdeepks_f_labeldeepks_f_label_elecdeepks_fdelta_elecdeepks_fpredeepks_h_labeldeepks_h_label_elecdeepks_s_labeldeepks_s_label_elecdeepks_spredeepks_vdelta_elecdeepks_vdpdeepks_vdp_elecetotperatomrefetotref09_DeePKS/26_NO_KP_deepks_out_freq_elecdeepks_e_labeldeepks_e_label_elecdeepks_f_labeldeepks_f_label_elecdeepks_fdelta_elecdeepks_fpredeepks_h_labeldeepks_h_label_elecdeepks_s_labeldeepks_s_label_elecdeepks_spredeepks_vdelta_elecdeepks_vdpdeepks_vdp_elecetotperatomrefetotref09_DeePKS/27_NO_GO_deepks_out_2deepks_energydeepks_hamiltoniandeepks_stressetotperatomrefetotref09_DeePKS/28_NO_KP_deepks_out_2deepks_energydeepks_stressetotperatomrefetotref10_others/04_RDMFT_Si2E_TV_RDMFT_refEtotal_RDMFT_refetotperatomrefetotref10_others/05_Alllog_filenameetotperatomrefetotref15_rtTDDFT_GPU/02_NO_CH_OW_TDDFT_GPUetotperatomrefetotreftotalforcereftotalstressref15_rtTDDFT_GPU/11_NO_O3_TDDFT_GPUetotperatomrefetotref15_rtTDDFT_GPU/17_NO_vel_TDDFT_GPUetotperatomrefetotref15_rtTDDFT_GPU/18_NO_hyb_TDDFT_GPUetotperatomrefetotref15_rtTDDFT_GPU/19_NO_SUPERSINE_TDDFT_GPUetotperatomrefetotref15_rtTDDFT_GPU/20_NO_MIXED_EFIELD_TDDFT_GPUetotperatomrefetotrefChanged-reference whitespace checks (
git diff --check,git diff --cached --check) and the staged ABACUS governance checker passed. The updated GitHub CI run remains separate from these local/HPC results.