Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
334 commits
Select commit Hold shift + click to select a range
075c9c3
test(cell): stage parallel k-list fixtures
AroundPeking Jul 24, 2026
f98bc6d
fix(sternheimer): validate reconstructed full k grid
AroundPeking Jul 25, 2026
d3e524b
perf(sternheimer): parallelize symmetric solid response
AroundPeking Jul 27, 2026
0a5fe72
feat(sternheimer): add primitive-supercell wavefunction gate
AroundPeking Jul 29, 2026
eb75ac0
feat(sternheimer): validate primitive-supercell response sectors
AroundPeking Jul 30, 2026
e461aac
feat(sternheimer): complete full supercell response
AroundPeking Aug 2, 2026
7d139b9
fix(sternheimer): skip full-k reconstruction without symmetry
AroundPeking Aug 5, 2026
0cb402c
fix(sternheimer): handle full spin-polarized gamma grid
AroundPeking Aug 10, 2026
e3718ce
feat(sternheimer): decompose delta Pulay grid error
AroundPeking Aug 11, 2026
24f43e6
docs(sternheimer): design collinear spin response
AroundPeking Jul 16, 2026
0949068
docs(sternheimer): plan collinear spin response
AroundPeking Jul 16, 2026
f646be4
test(sternheimer): define spin response metadata
AroundPeking Jul 16, 2026
cf25205
feat(sternheimer): merge spin transition windows
AroundPeking Jul 16, 2026
bf218bf
feat(sternheimer): sum collinear spin responses
AroundPeking Jul 16, 2026
2634ef3
docs(sternheimer): design channel OpenMP parallelism
AroundPeking Jul 16, 2026
7092258
feat(sternheimer): parallelize auxiliary channels
AroundPeking Jul 16, 2026
608de89
feat(sternheimer): bound channel response memory
AroundPeking Jul 18, 2026
2be141b
docs(sternheimer): design automatic channel workers
AroundPeking Jul 18, 2026
88fe6a0
docs(sternheimer): plan automatic channel workers
AroundPeking Jul 18, 2026
9135700
feat(sternheimer): plan channel workers from memory
AroundPeking Jul 18, 2026
f476723
feat(sternheimer): detect channel memory resources
AroundPeking Jul 18, 2026
f4c4557
test(sternheimer): link GreenX in solver tests
AroundPeking Jul 18, 2026
996a326
feat(sternheimer): select channel workers automatically
AroundPeking Jul 18, 2026
f71cb3b
fix(sternheimer): route standard LCAO runs to FD states
AroundPeking Jul 17, 2026
d6bbd1f
test(sternheimer): pin SIAB grid overlaps
AroundPeking Jul 18, 2026
3a6d45c
feat(sternheimer): expose SIAB primitive grid values
AroundPeking Jul 18, 2026
985aa71
feat(sternheimer): write versioned SIAB targets
AroundPeking Jul 18, 2026
683bf96
feat(sternheimer): export MPI-complete SIAB targets
AroundPeking Jul 18, 2026
7ec86ef
feat(siab): export explicit angular target channels
AroundPeking Jul 19, 2026
2af7ef6
feat(siab): export Coulomb-whitened response targets
AroundPeking Jul 22, 2026
1665850
fix(sternheimer): read explicit ABFS for SIAB output
AroundPeking Jul 22, 2026
057ea6c
perf(sternheimer): parallelize grid solver kernels
AroundPeking Jul 23, 2026
ab5198e
feat(sternheimer): use explicit KS virtual bands
AroundPeking Jul 23, 2026
53b724e
feat(rpa): expose Ewald Coulomb components
AroundPeking Jul 23, 2026
1cee98a
feat(rpa): distribute SIAB response channels over MPI
AroundPeking Jul 26, 2026
7688cd8
test(rpa): link SIAB MPI regression dependencies
AroundPeking Jul 26, 2026
b29bdc4
docs(sternheimer): design global equation MPI layout
AroundPeking Jul 27, 2026
7f35e8b
docs(sternheimer): plan global equation MPI implementation
AroundPeking Jul 27, 2026
54d51a5
feat(sternheimer): add MPI layout input
AroundPeking Jul 27, 2026
bea26c7
feat(sternheimer): map global response equations to MPI ranks
AroundPeking Jul 27, 2026
475c960
feat(sternheimer): distribute SIAB equations across all MPI ranks
AroundPeking Jul 27, 2026
3e96ded
test(sternheimer): validate global equation MPI output
AroundPeking Jul 27, 2026
d2081de
test(sternheimer): link GreenX in MPI regression
AroundPeking Jul 27, 2026
14273c4
docs(sternheimer): record global MPI validation
AroundPeking Jul 27, 2026
31819dc
docs(sternheimer): stage solver tolerance scan
AroundPeking Jul 27, 2026
1588af3
fix(sternheimer): serialize shared SIAB FFT projection
AroundPeking Jul 28, 2026
a98511c
perf(sternheimer): preserve nested grid OpenMP
AroundPeking Jul 28, 2026
c096d57
perf(sternheimer): retain dense channel teams
AroundPeking Jul 28, 2026
f3cf9eb
feat(sternheimer): enable global MPI LibRPA output
AroundPeking Jul 28, 2026
e2c3212
fix(sternheimer): handle empty MPI potential slabs
AroundPeking Jul 30, 2026
873d362
docs(sternheimer): design grid component diagnostics
AroundPeking Aug 8, 2026
cb84f04
docs(sternheimer): plan grid component diagnostics
AroundPeking Aug 8, 2026
b89485b
feat(sternheimer): add grid diagnostics input
AroundPeking Aug 8, 2026
9d9bfab
feat(sternheimer): expose delta grid operator components
AroundPeking Aug 8, 2026
320551a
feat(sternheimer): add grid diagnostic writers
AroundPeking Aug 8, 2026
f7f5bb3
feat(sternheimer): output response grid components
AroundPeking Aug 8, 2026
3923e1d
feat(sternheimer): build component hybrid matrices
AroundPeking Aug 8, 2026
8bfc316
feat(sternheimer): compare grid diagnostic components
AroundPeking Aug 8, 2026
b230ab1
fix(sternheimer): compare gauge-invariant grid profiles
AroundPeking Aug 8, 2026
8acb198
fix(sternheimer): remove occupied gauge from diagnostics
AroundPeking Aug 8, 2026
ab6a801
feat(sternheimer): add fourth-order grid Laplacian
AroundPeking Aug 8, 2026
421e452
feat(sternheimer): add sixth-order grid Laplacian
AroundPeking Aug 9, 2026
02d0489
docs(sternheimer): design efficient eighth-order diagnostic
AroundPeking Aug 10, 2026
6c6fe69
docs(sternheimer): plan efficient eighth-order diagnostic
AroundPeking Aug 10, 2026
5fbd175
feat(sternheimer): accept eighth-order grid Laplacian
AroundPeking Aug 10, 2026
040256f
test(sternheimer): cover eighth-order grid Laplacian
AroundPeking Aug 10, 2026
7036e42
feat(sternheimer): add efficient eighth-order grid kernel
AroundPeking Aug 10, 2026
1750453
fix(sternheimer): repair unified atom-solid merge compile errors
AroundPeking Aug 18, 2026
c72074e
fix(sternheimer): propagate FD order through periodic bindings
AroundPeking Aug 18, 2026
842750c
fix(sternheimer): combine periodic FD2 and atomic FD8 operators
AroundPeking Aug 18, 2026
47225ce
fix(sternheimer): integrate bounded fixed-subspace response
AroundPeking Aug 18, 2026
b918e2c
fix(sternheimer): use merged FD band count in solid response
AroundPeking Aug 18, 2026
83d9487
fix(sternheimer): restore unified response MPI loop
AroundPeking Aug 18, 2026
05fde26
fix(sternheimer): restore SIAB support dependencies
AroundPeking Aug 18, 2026
74fbead
fix(sternheimer): restore auxiliary basis source guard
AroundPeking Aug 18, 2026
5f16782
build(sternheimer): link SIAB support into RI
AroundPeking Aug 18, 2026
a05298a
fix(sternheimer): restore ABFS channel descriptor
AroundPeking Aug 18, 2026
a56d0de
fix(sternheimer): preserve response provenance metadata
AroundPeking Aug 18, 2026
26d493f
fix(sternheimer): preserve partial response provenance
AroundPeking Aug 18, 2026
e6bfe15
fix(rpa): keep periodic Coulomb blocks on atom-pair owners
AroundPeking Aug 20, 2026
c4783c7
feat(sternheimer): support periodic high-order FD kinetic
AroundPeking Aug 22, 2026
7dde743
fix(rpa): preserve Ewald image distribution
AroundPeking Aug 22, 2026
1dfdd50
fix(sternheimer): preserve occupied open-shell spin records
AroundPeking Aug 23, 2026
c820ea4
fix(rpa): converge high-l 2D Ewald Gaussian tails
AroundPeking Aug 25, 2026
102072f
fix(rpa): evaluate high-l 2D Ewald kernels analytically
AroundPeking Aug 25, 2026
01b705e
fix(rpa): use source support for Ewald tails
AroundPeking Aug 28, 2026
05a5a79
perf(sternheimer): plan workers from owned channels
AroundPeking Aug 29, 2026
52cbb35
perf(sternheimer): keep bandwidth-saturating channel teams
AroundPeking Aug 29, 2026
f94990f
perf(sternheimer): add spectral FD preconditioner
AroundPeking Aug 29, 2026
f6f2750
perf(sternheimer): cache Bloch phases in preconditioner
AroundPeking Aug 29, 2026
38b7112
docs(sternheimer): design operator acceleration
AroundPeking Aug 30, 2026
eadd9f5
docs(sternheimer): plan operator acceleration
AroundPeking Aug 30, 2026
d217ca1
perf(sternheimer): enable spectral preconditioner by default
AroundPeking Aug 30, 2026
8201f51
perf(sternheimer): cache finite-difference operator data
AroundPeking Aug 30, 2026
728e2da
perf(sternheimer): cache fixed-subspace norms
AroundPeking Aug 30, 2026
688b6c2
test(sternheimer): make identity baseline explicit
AroundPeking Aug 30, 2026
bf9908c
docs(sternheimer): strengthen solid precision gate
AroundPeking Aug 30, 2026
8114885
docs(sternheimer): record operator acceleration gates
AroundPeking Aug 30, 2026
35298bc
docs(sternheimer): record full material benchmark
AroundPeking Aug 30, 2026
356b7b4
docs(sternheimer): design multi-RHS acceleration
AroundPeking Aug 30, 2026
72091a2
perf(sternheimer): add independent multi-RHS primitives
AroundPeking Aug 30, 2026
cb38ed3
perf(sternheimer): batch Delta response channels
AroundPeking Aug 30, 2026
79ca690
perf(sternheimer): batch production response channels
AroundPeking Aug 30, 2026
5c08ec2
perf(sternheimer): batch periodic response channels
AroundPeking Aug 30, 2026
b147428
perf(sternheimer): keep batch workers on all cores
AroundPeking Aug 30, 2026
f840309
perf(sternheimer): default to two-channel batches
AroundPeking Aug 30, 2026
d4f26c6
docs(sternheimer): record multi-RHS production policy
AroundPeking Aug 30, 2026
a5aedc9
docs: design RPA Coulomb preorthogonalization
AroundPeking Aug 30, 2026
f7bcdf0
docs: plan RPA Coulomb preorthogonalization
AroundPeking Aug 30, 2026
e8d8b66
feat(rpa): add onsite Coulomb ABFS preorthogonalization
AroundPeking Aug 30, 2026
91324f1
perf(sternheimer): reduce periodic grid memory
AroundPeking Aug 30, 2026
ed2beeb
perf(sternheimer): avoid late grid copies and MPI setup
AroundPeking Aug 30, 2026
5ef79cf
perf(sternheimer): parallelize LCAO grid sampling
AroundPeking Aug 30, 2026
027709f
perf(sternheimer): bound periodic response memory
AroundPeking Aug 30, 2026
402ec32
docs: design strict-2d direct Coulomb output
AroundPeking Aug 29, 2026
cddfa73
test: define strict-2d direct Coulomb contract
AroundPeking Aug 29, 2026
b681d46
feat(rpa): add direct strict-2d Coulomb core
AroundPeking Aug 29, 2026
00b9881
feat(rpa): expose direct strict-2d Coulomb output
AroundPeking Aug 29, 2026
f54e71f
fix(rpa): keep stored LibRPA q labels one-to-one
AroundPeking Aug 30, 2026
a0c7d77
perf(sternheimer): accelerate periodic response batches
AroundPeking Aug 31, 2026
b310894
perf(sternheimer): block complete virtual subspace
AroundPeking Aug 31, 2026
1457d57
fix(sternheimer): block default full virtual space
AroundPeking Aug 31, 2026
083ce4d
fix(sternheimer): downshift channel batches to memory budget
AroundPeking Aug 31, 2026
19b1f3d
feat(rpa): add direct 3D Coulomb output
AroundPeking Aug 31, 2026
fb22000
perf(rpa): parallelize direct 3D reciprocal points
AroundPeking Aug 31, 2026
d381472
docs(sternheimer): design independent response grid
AroundPeking Sep 1, 2026
5d3b61b
feat(sternheimer): add independent response grid core
AroundPeking Sep 1, 2026
d12ccee
test(sternheimer): initialize MPI for response grid tests
AroundPeking Sep 1, 2026
14e2fcf
feat(sternheimer): use independent response grid
AroundPeking Sep 1, 2026
89a2737
feat(sternheimer): add explicit response grid dimensions
AroundPeking Sep 3, 2026
0d470d2
fix(sternheimer): admit single-Gamma periodic response plans
AroundPeking Sep 5, 2026
67747e7
Share periodic Delta-ST projectors and account for retained memory
AroundPeking Sep 6, 2026
556d942
feat(sternheimer): add explicit isolated molecular RI Coulomb coupling
AroundPeking Sep 6, 2026
b9da0c1
perf(sternheimer): read borrowed projector columns contiguously
AroundPeking Sep 8, 2026
0afd23c
fix(sternheimer): partition representative k-point owners consistently
AroundPeking Sep 8, 2026
99e5baa
fix(sternheimer): honor independent molecular response grids
AroundPeking Sep 8, 2026
872268e
feat(sternheimer): validate fine-integral augmented response audits
AroundPeking Sep 12, 2026
3dba8ae
feat(sternheimer): shard full auxiliary weak response audits
AroundPeking Sep 12, 2026
94fbd8e
Add guarded full-q weak-response units and exact operator caches
AroundPeking Sep 12, 2026
7e450af
fix: project continuous open-z Coulomb kernel into Fourier space
AroundPeking Sep 12, 2026
9615083
Parallelize weak-q response columns with sealed PBE reference replay
AroundPeking Sep 13, 2026
f700355
feat(sternheimer): audit full fine-grid Coulomb response metric
AroundPeking Sep 14, 2026
8d53ae2
feat(sternheimer): add strict 2D Gamma finite part
AroundPeking Sep 14, 2026
d53b0bf
feat(sternheimer): package finite-part Coulomb data
AroundPeking Sep 14, 2026
6bbfff9
docs(sternheimer): design weak Schur preconditioner
AroundPeking Sep 15, 2026
c5e6ca5
feat(sternheimer): add weak Schur preconditioner hook
AroundPeking Sep 15, 2026
f05d624
feat(sternheimer): add analytic weak spectral preconditioner
AroundPeking Sep 15, 2026
5f9b174
feat(sternheimer): enable weak spectral preconditioning
AroundPeking Sep 15, 2026
34e7d15
fix(sternheimer): precondition normalized weak equations
AroundPeking Sep 15, 2026
2675251
fix(sternheimer): honor requested weak residual tolerance
AroundPeking Sep 15, 2026
cf32a2f
fix(sternheimer): map full q to Coulomb reader star
AroundPeking Sep 15, 2026
b8623e8
feat(sternheimer): guard symmetry by exact FD stencil
AroundPeking Sep 19, 2026
e9b4ee5
use MPI file function to output KS_eigenvector
userchba Aug 2, 2026
4ea23f6
Feature: fully utilized magnetic space group (MSG) enabling SOC (#7692)
maki49 Jul 30, 2026
45961f2
Backport the upstream conjugate-first SOC spin-density fix
AroundPeking Sep 19, 2026
f3e3d23
RPA interface: export Shubnikov operation table and spin trailer in s…
Aug 4, 2026
97b6482
Preserve the validated production LibRPA ABF overlap export
AroundPeking Sep 19, 2026
4684426
Fix scalar ABF antiunitary restoration and retain numerical rotation …
AroundPeking Sep 20, 2026
628d208
Fix precision of the first LibRPA occupation and Fermi energy
AroundPeking Sep 20, 2026
ad02855
Correct target-branch test call sites after SOC interface backport
AroundPeking Sep 20, 2026
7dfeca6
Preserve target scalar rotations and split-Ewald exchange with SOC
AroundPeking Sep 20, 2026
6a8eec5
Docs: describe SOC magnetic LibRPA exports and validation limits
AroundPeking Sep 20, 2026
5aa8541
Fix: use target parameter API for SOC magnetic-group analysis
AroundPeking Sep 20, 2026
5408aa9
Fix: use the LibRI coefficient-ready flag in split-Ewald setup
AroundPeking Sep 20, 2026
3d63907
Fix: adapt magnetic point-group reporting to the target API
AroundPeking Sep 20, 2026
b9cd577
Test: include the RI helper definitions used by the existing I/O test
AroundPeking Sep 20, 2026
74e5450
Test: link target-branch matrix output helpers in SOC symmetry tests
AroundPeking Sep 20, 2026
2472720
Fix: retain validated ABF restoration shape and duplicate-key guards
AroundPeking Sep 20, 2026
b868d4f
Test: retain the complete upstream carbon-cell matrix references
AroundPeking Sep 20, 2026
713b804
Fix LibRI Cs finish flag compatibility
AroundPeking Sep 23, 2026
d631da6
fix(rpa): use common symmetry rows without spin trailer
AroundPeking Sep 24, 2026
6505286
docs: design SOC symmetry export regression
AroundPeking Sep 24, 2026
051e275
docs: add SOC symmetry regression plan
AroundPeking Sep 24, 2026
a805fa7
test(rpa): protect SOC symmetry stru_out export
AroundPeking Sep 24, 2026
dff5882
refactor(ri): follow upstream file naming
AroundPeking Sep 24, 2026
033f9a0
rebase(soc): keep upstream magnetic symmetry implementation
AroundPeking Sep 24, 2026
380bb92
rebase(ri): retain upstream RI utility implementation
AroundPeking Sep 24, 2026
693f3a3
fix(sternheimer): restore clean ABFS perturbation path after rebase
AroundPeking Sep 24, 2026
43fe729
fix(sternheimer): restore delta response overloads after rebase
AroundPeking Sep 24, 2026
cb5db9c
fix(rebase): restore Delta-ST and latest RI API compatibility
AroundPeking Sep 24, 2026
a296201
rebase(symmetry): retain upstream SOC rotation implementation
AroundPeking Sep 24, 2026
b6da58c
fix(rebase): align RI and upstream build interfaces
AroundPeking Sep 24, 2026
7eeec0e
fix(rebase): restore remaining upstream interfaces
AroundPeking Sep 24, 2026
7ae08dd
fix(rpa): restore band output filename
AroundPeking Sep 24, 2026
cfb150a
rebase: resolve upstream RI and regression interfaces
AroundPeking Sep 25, 2026
6bb6028
fix: own RI settings in Exx_LRI
AroundPeking Sep 25, 2026
899555b
fix: keep SIAB parameters compatible with C++11
AroundPeking Sep 26, 2026
86f5271
ci: expose ABACUS extra-component build errors
AroundPeking Sep 26, 2026
a98ec52
fix(build): define Libxc feature for XC module
AroundPeking Sep 26, 2026
6230890
fix(libxc): include the active Libxc declarations
AroundPeking Sep 26, 2026
24daf76
fix(bse): use the merged RI info type
AroundPeking Sep 26, 2026
b3af77b
fix(sternheimer): keep GCC OpenMP reductions portable
AroundPeking Sep 26, 2026
818e0d1
fix(greenx): allow long GNU Fortran table lines
AroundPeking Sep 26, 2026
24df524
legal: preserve Green-X Apache license notice
AroundPeking Sep 26, 2026
0a93b38
fix(input): use availability setter after rebase
AroundPeking Sep 26, 2026
7e5ee25
fix(rpa): use current density-matrix namespace
AroundPeking Sep 26, 2026
2b5d3dd
fix(rpa): align EXX helper declaration
AroundPeking Sep 26, 2026
8357876
fix(rpa): restore merged interfaces and CI input metadata
AroundPeking Sep 26, 2026
25f9a26
fix(rpa): use current density-matrix DMK accessor
AroundPeking Sep 26, 2026
f9712c7
fix(cmake): preserve DFT-D4 option and remove dead flags
AroundPeking Sep 26, 2026
79faa4e
fix(rpa): align SOC symmetry and reader output paths
AroundPeking Sep 26, 2026
ebecb12
test(rpa): cover SOC symmetry conversion order
AroundPeking Sep 26, 2026
82fac2c
fix(rpa): export BZ vectors in LibRPA units
AroundPeking Sep 26, 2026
438ecef
test(exx): restore LR-HF excitation references
AroundPeking Sep 26, 2026
2e970cf
test(rpa): cover production SOC stru output block
AroundPeking Sep 26, 2026
522c687
fix(test): link SOC symmetry serializer test
AroundPeking Sep 26, 2026
5cc85cc
refactor(rpa): isolate Delta-ST and externalize GreenX
AroundPeking Sep 27, 2026
f78bba3
test(rpa): guard optional GreenX minimax case
AroundPeking Sep 27, 2026
f206068
fix(test): update EXX symmetry test sources
AroundPeking Sep 27, 2026
d293554
fix(ci): use explicit LibRI include after RPA split
AroundPeking Sep 27, 2026
a0ec30c
test(rpa): exercise optional GreenX minimax path
AroundPeking Sep 27, 2026
cfeadf5
fix(rpa): preserve cut and Ewald mesh settings
AroundPeking Sep 27, 2026
3deb7be
docs(rpa): document SOC symmetry metadata block
AroundPeking Sep 27, 2026
2a35d2c
fix(rpa): pass valid Ewald component outputs
AroundPeking Sep 27, 2026
50c7b75
fix(symmetry): restore scalar ABF Coulomb blocks
AroundPeking Sep 28, 2026
7ef5634
feat(rpa): add LibRPA producer regression coverage
AroundPeking Sep 28, 2026
178d73e
fix(rpa): validate strict 2D Coulomb head handoff
AroundPeking Sep 29, 2026
27c682a
fix(ci): resolve RPA and symmetry test failures
AroundPeking Sep 29, 2026
f5a94e3
fix(ci): use keyword links in RI tests
AroundPeking Sep 29, 2026
2869720
refactor(rpa): inject producer runtime context
AroundPeking Sep 29, 2026
7f9304f
fix(rpa): preserve concrete producer log type
AroundPeking Sep 29, 2026
f6e29b5
test(delta-st): cover explicit producer runtime context
AroundPeking Sep 29, 2026
0a56c88
refactor(delta-st): inject producer runtime context
AroundPeking Sep 29, 2026
076edac
refactor(exx): inject runtime context into LRI kernels
AroundPeking Sep 29, 2026
390d712
fix(delta-st): propagate producer runtime to AO loading
AroundPeking Sep 29, 2026
3db8b61
ci: report CMake configuration failures
AroundPeking Sep 29, 2026
506da86
fix(ci): restore relocated test source paths
AroundPeking Sep 29, 2026
9b49a12
fix(ci): update relocated EXX test sources
AroundPeking Sep 29, 2026
a81e6f8
refactor(rpa): remove bundled GreenX residue
AroundPeking Sep 29, 2026
6feb030
ci: report test build failures
AroundPeking Sep 29, 2026
c4ffae1
fix(exx): restore NSCF Wigner-Seitz remapping
AroundPeking Sep 29, 2026
d2febf4
fix(test): align symmetry rotation matrix type
AroundPeking Sep 29, 2026
249a44c
fix(test): remove stale SOC rotation calls
AroundPeking Sep 29, 2026
f122697
fix(test): remove obsolete nonlocal mocks
AroundPeking Sep 29, 2026
cf4ce86
fix(test): drop stale Delta-ST nonlocal mock
AroundPeking Sep 29, 2026
c3aed1f
fix(delta-st): apply SIAB channel whitening
AroundPeking Sep 29, 2026
4a971eb
fix(test): remove stale Delta-ST LCAO interfaces
AroundPeking Sep 29, 2026
0860305
fix(test): remove stale virtual-subspace checks
AroundPeking Sep 29, 2026
3a58eea
fix(test): remove stale Delta-ST helper tests
AroundPeking Sep 29, 2026
f59776a
fix(test): drop internal Delta-ST helper coverage
AroundPeking Sep 29, 2026
475efc8
fix(test): close Delta-ST test namespace
AroundPeking Sep 29, 2026
bb892a0
fix(test): use input availability accessor
AroundPeking Sep 29, 2026
dbc3c64
fix(test): link SOC symmetry export regression
AroundPeking Sep 29, 2026
5d97ac5
fix(test): restore SOC density matrix sources
AroundPeking Sep 29, 2026
eb3c70d
fix(test): link EXX NSCF regression providers
AroundPeking Sep 30, 2026
f9f99ff
fix(test): complete EXX NSCF link closure
AroundPeking Sep 30, 2026
33bf4bf
fix(cmake): propagate OpenMP device runtime
AroundPeking Sep 30, 2026
3e943fa
fix(cmake): publish container numerical dependencies
AroundPeking Sep 30, 2026
166497a
fix(io): close numerical basis helper linkage
AroundPeking Sep 30, 2026
28b3bd3
fix(pyabacus): provide numerical link interface
AroundPeking Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 11 additions & 1 deletion .github/workflows/build_test_cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,18 @@ jobs:

- name: Build
run: |
set -o pipefail
git config --global --add safe.directory `pwd`
source toolchain/install/setup
rm -rf build
cmake -B build -G Ninja ${{ matrix.build_args }}
cmake --build build -j $(nproc)
cmake --build build -j $(nproc) 2>&1 | tee build.log

- name: Report build diagnostics
if: failure()
run: |
if [[ -f build.log ]]; then
message=$(grep -Ein -B 8 -A 8 'error:|fatal error:|undefined reference|FAILED|No rule to make' build.log || true)
message=$(printf '%s\n' "$message" | tail -n 120 | tr '\n' ' ' | cut -c1-5000)
echo "::error file=build.log,line=1,title=ABACUS build diagnostics::$message"
fi
22 changes: 19 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ jobs:
- name: Configure
run: |
source toolchain/install/setup
set -o pipefail
cmake -B build -G Ninja \
-DBUILD_TESTING=ON \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
Expand All @@ -97,7 +98,14 @@ jobs:
-DENABLE_FLOAT_FFTW=ON \
-DENABLE_DFTD4=ON \
-DENABLE_PEXSI=ON \
-Werror=dev
-Werror=dev 2>&1 | tee configure.log

- name: Report configuration diagnostics
if: failure()
run: |
message=$(grep -Ein -B 8 -A 8 'CMake Error|CMake Warning.*error|fatal error|FAILED' configure.log || true)
message=$(printf '%s\n' "$message" | tail -n 120 | tr '\n' ' ' | cut -c1-5000)
echo "::error file=configure.log,line=1,title=ABACUS configuration diagnostics::$message"

# Temporarily removed because no one maintains this now.
# And it will break the CI test workflow.
Expand All @@ -112,8 +120,16 @@ jobs:

- name: Build
run: |
cmake --build build -j8
cmake --install build
set -o pipefail
cmake --build build -j8 2>&1 | tee build.log
cmake --install build 2>&1 | tee -a build.log

- name: Report build diagnostics
if: failure()
run: |
message=$(grep -Ein -B 8 -A 8 'error:|fatal error:|undefined reference|FAILED|No rule to make' build.log || true)
message=$(printf '%s\n' "$message" | tail -n 120 | tr '\n' ' ' | cut -c1-5000)
echo "::error file=build.log,line=1,title=ABACUS build diagnostics::$message"

- name: Report compiler cache
if: always()
Expand Down
9 changes: 9 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ option(ENABLE_CNPY "Enable cnpy usage" OFF)
cmake_dependent_option(ENABLE_ELPA "Enable ELPA eigensolver" ON "ENABLE_MPI" OFF)
cmake_dependent_option(ENABLE_LIBRI "Enable LibRI for hybrid functional"
OFF "ENABLE_LCAO;ENABLE_MPI" OFF)
cmake_dependent_option(ENABLE_GREENX_MINIMAX
"Enable the external GreenX minimax API for Delta-Sternheimer"
OFF "ENABLE_LCAO;ENABLE_MPI;ENABLE_LIBRI" OFF)
set(GREENX_DIR "" CACHE PATH "GreenX installation prefix or CMake package directory")
cmake_dependent_option(ENABLE_PEXSI "Enable PEXSI for LCAO" OFF "ENABLE_LCAO;ENABLE_MPI" OFF)
cmake_dependent_option(ENABLE_MLALGO "Enable the machine learning algorithms"
OFF "ENABLE_LCAO;ENABLE_MPI" OFF)
Expand Down Expand Up @@ -607,6 +611,11 @@ if(ENABLE_LIBRI)
find_package(cereal REQUIRED CONFIG)
endif()

if(ENABLE_GREENX_MINIMAX)
enable_language(Fortran)
find_package(GreenX REQUIRED)
endif()

if(ENABLE_LIBXC)
find_package(Libxc CONFIG REQUIRED)
if(Libxc_VERSION VERSION_LESS "5.1.7")
Expand Down
92 changes: 92 additions & 0 deletions cmake/modules/FindGreenX.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Find an external GreenX minimax installation or source tree.
#
# Supported inputs:
# GREENX_DIR=<prefix> install prefix containing GreenXConfig.cmake or
# Fortran modules and libgx_minimax
# GREENX_DIR=<package> GreenX install prefix or package directory
#
# The module exposes GreenX::MiniMax when the minimax API is available.

set(GreenX_FOUND FALSE)

if(TARGET GreenX::MiniMax)
set(GreenX_FOUND TRUE)
elseif(TARGET greenX::LibGXMiniMax)
add_library(GreenX::MiniMax ALIAS greenX::LibGXMiniMax)
set(GreenX_FOUND TRUE)
elseif(TARGET LibGXMiniMax)
add_library(GreenX::MiniMax ALIAS LibGXMiniMax)
set(GreenX_FOUND TRUE)
endif()

# GreenX is an external dependency. Prefer its installed CMake package so
# that ABACUS does not compile or vendor GreenX sources. GREENX_DIR may point
# either to the install prefix or directly to the package directory.
if(NOT GreenX_FOUND)
set(_greenx_config_paths)
if(GREENX_DIR)
list(APPEND _greenx_config_paths
"${GREENX_DIR}"
"${GREENX_DIR}/lib/cmake/greenX"
"${GREENX_DIR}/lib64/cmake/greenX"
"${GREENX_DIR}/share/greenX/cmake")
endif()
if(GREENX_DIR)
find_package(greenX CONFIG QUIET
PATHS ${_greenx_config_paths}
NO_DEFAULT_PATH)
else()
find_package(greenX CONFIG QUIET)
endif()
if(TARGET greenX::LibGXMiniMax)
add_library(GreenX::MiniMax ALIAS greenX::LibGXMiniMax)
set(GreenX_FOUND TRUE)
endif()
endif()

if(NOT GreenX_FOUND AND GREENX_DIR)
find_path(GreenX_Fortran_MODULE_DIR
NAMES gx_minimax.mod
PATHS
"${GREENX_DIR}/include"
"${GREENX_DIR}/modules"
"${GREENX_DIR}/lib"
NO_DEFAULT_PATH)
find_library(GreenX_MINIMAX_LIBRARY
NAMES gx_minimax LibGXMiniMax
PATHS
"${GREENX_DIR}/lib"
"${GREENX_DIR}/lib64"
NO_DEFAULT_PATH)
find_library(GreenX_COMMON_LIBRARY
NAMES GXCommon gx_common
PATHS
"${GREENX_DIR}/lib"
"${GREENX_DIR}/lib64"
NO_DEFAULT_PATH)

if(GreenX_Fortran_MODULE_DIR AND GreenX_MINIMAX_LIBRARY)
add_library(GreenX::MiniMax UNKNOWN IMPORTED)
set_target_properties(GreenX::MiniMax PROPERTIES
IMPORTED_LOCATION "${GreenX_MINIMAX_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${GreenX_Fortran_MODULE_DIR}")
if(math_libs)
set_property(TARGET GreenX::MiniMax APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "${math_libs}")
endif()
if(GreenX_COMMON_LIBRARY)
set_property(TARGET GreenX::MiniMax APPEND PROPERTY
INTERFACE_LINK_LIBRARIES "${GreenX_COMMON_LIBRARY}")
endif()
set(GreenX_FOUND TRUE)
endif()
endif()

if(NOT GreenX_FOUND AND GreenX_FIND_REQUIRED)
message(FATAL_ERROR
"GreenX minimax was requested but no usable installation was found. "
"Set GREENX_DIR to a GreenX installation prefix or CMake package directory "
"containing gx_minimax.mod and libgx_minimax.")
endif()

mark_as_advanced(GreenX_Fortran_MODULE_DIR GreenX_MINIMAX_LIBRARY GreenX_COMMON_LIBRARY)
43 changes: 30 additions & 13 deletions docs/advanced/input_files/input-main.md
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,8 @@
- [out\_element\_info](#out_element_info)
- [restart\_save](#restart_save)
- [rpa](#rpa)
- [rpa\_out\_vel](#rpa_out_vel)
- [rpa\_outdir](#rpa_outdir)
- [out\_librpa\_reader\_version](#out_librpa_reader_version)
- [out\_librpa\_abf\_overlap](#out_librpa_abf_overlap)
- [out\_pchg](#out_pchg)
- [out\_wfc\_norm](#out_wfc_norm)
- [out\_wfc\_re\_im](#out_wfc_re_im)
Expand Down Expand Up @@ -339,6 +339,8 @@
- [exx\_real\_number](#exx_real_number)
- [exx\_singularity\_correction](#exx_singularity_correction)
- [rpa\_ccp\_rmesh\_times](#rpa_ccp_rmesh_times)
- [rpa\_abfs\_preorth](#rpa_abfs_preorth)
- [rpa\_abfs\_preorth\_threshold](#rpa_abfs_preorth_threshold)
- [exx\_symmetry\_realspace](#exx_symmetry_realspace)
- [out\_ri\_cv](#out_ri_cv)
- [Exact Exchange (PW)](#exact-exchange-pw)
Expand Down Expand Up @@ -2429,20 +2431,19 @@
> Note: If symmetry is set to 1, additional files containing the necessary information for exploiting symmetry in the subsequent rpa calculation will be output: irreducible_sector.txt, symrot_k.txt and symrot_R.txt.
- **Default**: False

### rpa_out_vel
### out_librpa_reader_version

- **Type**: Boolean
- **Availability**: *[`basis_type`](#basis_type)==lcao*
- **Description**: Velocity matrix in KS basis (in unit of eV *Angstrom). Loop layer: spin -&gt; k -&gt; direction -&gt; KS_basis1 -&gt; KS_basis2.
- **Default**: False
- **Unit**: eV * A
- **Type**: Integer
- **Availability**: *Numerical atomic orbital basis with rpa=True.*
- **Description**: Select the ABACUS output format for files consumed by LibRPA. 0 writes the legacy text files, and 1 writes LibRPA reader-v1 binary files directly.
- **Default**: 0

### rpa_outdir
### out_librpa_abf_overlap

- **Type**: String
- **Availability**: *[`basis_type`](#basis_type)==lcao*
- **Description**: The directory to save files for LibRPA.
- **Default**: "OUT.librpa"
- **Type**: Boolean
- **Availability**: *Numerical atomic orbital basis with rpa=True, reader version 1, and shrink ABFs.*
- **Description**: Writes dense raw active-ABF q-space overlap matrices as `v1_abf_overlap_active_iq_<iq>.dat` for offline PSD diagnostics; this can be high-cost in memory and output size. The writer fails closed if an actually present post-communication `(I,J,R)` key has duplicate MPI contributors, and reports the offending integer key. This check proves uniqueness only for keys present in the post-communication map; it does not assert complete R coverage or pre-communication ownership. The analyzer uses `basis_aux_shrink_out` only to validate per-type shell layout and its declared total; that file does not provide atom-to-type mapping. Full-unshrunk overlap output is not provided because that basis lifecycle is not available safely here.
- **Default**: False

### out_pchg

Expand Down Expand Up @@ -3424,6 +3425,22 @@
- **Description**: How many times larger the radial mesh required is to that of atomic orbitals in the postprocess calculation of the bare Coulomb matrix for RPA, GW, etc.
- **Default**: 10

### rpa_abfs_preorth

- **Type**: String
- **Description**: Controls on-site Coulomb-metric preorthogonalization of the auxiliary basis used by RPA producer and Sternheimer response output.
- `none`: preserve the legacy auxiliary basis exactly.
- `onsite_coulomb`: process every atom type and angular-momentum radial channel independently, reject near-dependent radial functions, and retain complete `(2l+1)` multiplets in an on-site Coulomb-orthonormal basis.

This option does not change ordinary EXX, GW, SCF, force, or stress auxiliary-basis construction. The producer and Sternheimer response must use the same value. Molecular production workflows validated with this option use a separate LibRPA global Coulomb hard threshold of `1e-4`; ABACUS does not set that LibRPA threshold automatically.
- **Default**: none

### rpa_abfs_preorth_threshold

- **Type**: Real
- **Description**: Squared residual on-site Coulomb norm at or below which a radial auxiliary function is rejected when `rpa_abfs_preorth=onsite_coulomb`. The value must be finite and strictly inside `(0,1)`. The validated molecular starting value is `1e-2`.
- **Default**: 1e-2

### exx_symmetry_realspace

- **Type**: Boolean
Expand Down
95 changes: 95 additions & 0 deletions docs/advanced/interface/LibRPA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# LibRPA exports with SOC and magnetic symmetry

The LCAO RI exporter writes the ABACUS states and auxiliary-basis data needed
by a compatible LibRPA reader. The reader constructs orbital and k-space
rotation matrices from the spatial operations, lattice, atomic coordinates,
and basis-shell conventions; no `symrot_*` sidecar files are part of this
interface.
Enabling an export does not certify symmetry equivalence of a downstream
RPA/GW calculation.

## Producer settings

For an otherwise complete, converged LCAO SOC input, the relevant settings are:

```text
basis_type lcao
nspin 4
lspinorb 1
symmetry 1
rpa 1
out_ri_cv 1
out_wfc_lcao 1
out_mat_xc 1
out_librpa_reader_version 1
```

Set the intended magnetic moments in `STRU`. With `symmetry=1`, an all-zero
initial magnetic configuration stays zero; it is not automatically replaced
by nonzero starting moments. A nonmagnetic SOC system uses a grey group,
whereas an ordered magnetic system uses the operations preserving that
configuration, possibly combined with time reversal. For an on/off comparison,
use a common converged density and keep the structure, basis, k mesh and
numerical thresholds fixed.

## Common symmetry operation block in `stru_out`

The existing physical lattice/position units and spatial `row` convention
are retained. After the atom records, symmetry-enabled output contains:

```text
N row
<9 integer rotation entries and 3 fractional translations, repeated N times>
```

The same spatial-operation format is used for scalar space groups and for the
spatial part of a magnetic group. Magnetic operations are written after the
unitary operations in the same 12-field rows. For `nspin=4`, the producer then
appends an explicit `spin_symmetry <grey_group> <spin_source>` block. Each row
contains an antiunitary flag and, when `spin_source=1`, the eight real and
imaginary components of the corresponding SU(2) spin rotation. This keeps the
spatial block compatible with scalar and magnetic groups while giving a SOC-
aware LibRPA reader the complete operation table. Readers that do not consume
the optional spin block can stop after the spatial rows.

## Optional auxiliary-overlap diagnostic

To inspect the active, shrunk auxiliary basis, also set:

```text
shrink_abfs_pca_thr 1e-6
out_librpa_abf_overlap 1
```

The threshold is an example, not a convergence recommendation. The option
requires `rpa=1`, reader version `1`, and a nonnegative shrink threshold.
It writes `v1_abf_overlap_active_iq_<iq>.dat` in the same active auxiliary
basis as the associated Coulomb matrices. It does not export the full
unshrunk overlap. Dense matrices can require substantial memory and disk.

From the ABACUS source tree, inspect a completed export with:

```bash
python3 tools/analyze_librpa_abf_overlap.py /path/to/export
python3 tools/test_analyze_librpa_abf_overlap.py
```

The analyzer checks metadata and matrix properties. The writer rejects
duplicate MPI contributors for present `(I,J,R)` blocks. Neither check
establishes complete real-space coverage or physical convergence.

## Occupation precision and validation

`band_out` writes the Fermi energy in Hartree and each occupation as the
native k-weighted occupation multiplied by the number of exported k points.
The stream precision is initialized before these values, including the first
occupation. Previously the first occupation and Fermi energy retained the
stream's default six significant digits; removing an irreducible k weight
could turn an occupied state into `0.999999` or `1.000002`.

An export check can divide the printed occupation by the exported k-point
count and compare it with `OUT.<suffix>/eig_occ.txt`. Validate the first row
as well as later rows. A successful LibRPA reader/EXX run establishes that the
files can be consumed; full/reduced-grid RPA or GW equivalence requires a
separate numerical comparison. This producer check does not change LibRPA's
archived-input regression workflow.
1 change: 1 addition & 0 deletions docs/advanced/interface/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ Interfaces to Other Softwares
candela
TB2J
migration-guide-csr-format
LibRPA
Loading
Loading