Repository navigation
Feature: LR-TDDFT analytical forces (gradients) by Z-vector method and excited-state geometry relaxation #8069
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
134 commits
Select commit
Hold shift + click to select a range
991ebc0
LR-TDDFT analytical gradients: port onto refactored develop
maki49 a51848b
fix(lr-grad): replace LibRI RI::LR with a local two-density-matrix EX…
maki49 531542e
fix(lr-grad): correct nspin in the LR grid-force ModuleGint calls, cl…
maki49 3bbb90d
fix(lr-grad): gather the RHS before the LAPACK Z-vector solve
maki49 d5d5d10
fix: singlet gate for gxc
maki49 495b7c0
fix: Hxc dm-trans term (symmetrization and factor)
maki49 72970b7
Fix some factor bugs in ceZc, K_ii terms (visible in DZP)
maki49 cd937ea
Fix: transpose dm_trans in Z-vector eq. RHS
maki49 5e1bb03
Fix pot_hxc_gs: correct TDRPA@LDA (linear vxc=fxc[gs](T+Z) instead of…
maki49 2bdaa6a
Feature: implement gxc
maki49 2a4f778
Perf: share gxc kernels to save memory
maki49 a54e18b
Perf: put drho out to cal_v_eff for gxc, to save memory
maki49 51df46b
fix nspin=1
maki49 e6dbb01
small fixes
maki49 68199dc
Perf: speed up the LR kernel-to-potential integrands by ~45%
maki49 ca76c00
feat: lr-grad openshell implementation
maki49 a5c73b0
Feat: enable LRC kernel
maki49 d91a131
Remove the LR-Grad EXX debug scaffolding
maki49 135c52d
fix(lr): make the KS-orbital window copy and paraX_ setup re-entrant
maki49 35254a9
refactor(lr): keep the KS solver as a member and alias its geometry o…
maki49 dbd737a
feat(lr): re-run the ground state from runner(istep)
maki49 ae72baf
feat(lr): drive geometry relaxation from an excited-state surface
maki49 b2a246c
fix(lr): scope the relax-target inputs, and clear out the re-entrancy…
maki49 2e8c043
fix(lr): the excited-state force adds the LR part, and log the energy
maki49 6a3d3f3
fix(lr): build an Exx_LRI on the ks-lr path for a hybrid ground state
maki49 399ec7e
fix: use an spin-index mixing in close-shell grad: affect triplet gra…
maki49 f1b237c
fix: expand Z-window to nbands for complete orbital rotation space
maki49 4094aea
fix: small fixes about nupdown and degeneracy information
maki49 aaf4032
fix openshell bug: parallel index in HamiltULR and add-on op-lr-diag
maki49 31df937
fix: adapt LR-gradient code to develop interface changes after rebase
maki49 68e56c6
fix compile warning
maki49 d33af90
fix: clamp sigma for HSE06's wpbeh kernel; fix complex CXC index bug
maki49 157822d
chore: remove diagnostic env-var switches from the LR-Grad investigation
maki49 9d0c84a
feat(lr-grad): algebra for the degenerate-subspace gradient matrix
maki49 138b2ca
refactor(lr-grad): let the excited-state gradient take X from the caller
maki49 d7dc54a
feat(lr-grad): compute the gradient matrix of a degenerate multiplet
maki49 82d2640
feat(lr-grad): store the degenerate gradient matrix, print its eigenv…
maki49 818dc96
feat: state following by max overlap
maki49 fa31179
feat(lr-grad): find the Jahn-Teller direction from the degenerate gra…
maki49 b14820c
feat(lr-grad): lr_relax_degen_mode = jt, descending the Jahn-Teller b…
maki49 c1183ba
fix: adapt LR-gradient code to develop interface changes after rebase…
maki49 b4ef783
test(lr): add cal_force to the gamma-only LR-TDDFT integrate tests
maki49 e4cf077
fix: guard MPI-only and EXX-only symbols for the no-ELPA/no-EXX CI bu…
maki49 12776d4
fix: more MPI-only guards, and wire the Grad sources into Makefile.Ob…
maki49 9a47836
fix: make the gradient path build again under -DENABLE_MPI=OFF/Intel …
maki49 d144b9b
fix: reduce global dependency budget flagged by agent governance check
maki49 58cd935
feat(lr-grad): distributed ScaLAPACK and ELPA solvers for the Z-vecto…
maki49 d41fbf8
feat(lr-grad): add INPUT parameter lr_grad_solver to choose the Z-vec…
maki49 a981272
docs(lr): move hand-written input-main.md text into the C++ descripti…
maki49 4791751
feat(lr-grad): add lr_grad_solver = scalapack_chol, a ScaLAPACK Chole…
maki49 dffff57
fix(lr): clamp sigma in xc_gga_vxc for HSE06, matching fxc/kxc
maki49 fdd43e7
fix(lr-grad): build the LR unit tests against the 6-argument gather_2…
maki49 c04ee92
refactor(lr-grad): flatten Grad/ into module_lr, cap filenames at 15 …
maki49 af63607
chore(lr-grad): drop unused includes left over from removed diagnostics
maki49 ea71a3d
fix: match Makefile.Objects' LR-Grad object name to zeqlin_solv.cpp
maki49 739cfd5
fix para: ks-lr nb sync with groudstate; nrxx=0 guard
maki49 1912461
fix(lr-grad): replace #pragma once with include guards
maki49 fb90da4
fix para: dav_subspace bcast type and spectra spin index
maki49 c79ffec
fix(lr): derive occupied windows from charged spin populations
maki49 9a2b75e
fix(lr): update two nocc tests left stale by the post-SCF resolution …
maki49 a0700ca
fix(lr): balance force timers in degenerate gradient paths
maki49 27cadf1
fix(lr): handle empty grid ranks and align gamma CI coverage
maki49 b571f36
fix CI precision
maki49 7f2ee94
perf(lr): reuse transition density across output spins
maki49 bf1387c
fix: CI test lr force thr 1e-6
maki49 4fdd372
perf: vectorize Gamma and multi-k LR exchange projection
maki49 4607c35
refactor(dm): make internal real-space density updates non-const
maki49 ea6e740
refactor(lr): pass orbital layout explicitly to density transposition
maki49 463a022
refactor(lr): move gradient evaluation out of ESolver
maki49 36e9095
refactor(lr): lowercase new filenames and split gradient controllers
maki49 7659d84
refactor(lr): remove mutable operator work buffers
maki49 1f2d4b2
refactor(lr): keep new filename stems within fifteen characters
maki49 5f0765d
refactor(input): shorten LR degeneracy parameter names
maki49 d6f3b3b
fix(lr): restore CI builds after gradient refactor
maki49 9e8ae7f
fix(lr): address blocking PR review findings
maki49 6c59371
fix(lr): make gradient ownership and solver failures explicit
maki49 232363d
refactor(lr): separate production force and validation helpers
maki49 6ff2094
fix(lr): apply BSE singlet weighting once and cover nspin one
maki49 e28cff8
refactor(lr): reuse gradient inputs in EDM W and Z interfaces
maki49 1012d7f
fix(lr): correct amplitude offsets and stationary JT tracking
maki49 73ee3d0
fix(lr): use response XC kernel for quadratic gradient terms
maki49 8bec3f7
fix(lr): isolate electronic EXX state while sharing geometry tensors
maki49 58cafa6
fix(lr): reject unsupported NLCC forces and relaxation
maki49 ca201a4
fix(lr): preserve signed sigma for non-HSE kernels
maki49 413b786
fix(lr): track roots with distributed cross-geometry overlaps
maki49 a055dd8
fix(lr): track degenerate subspaces and preserve the actual JT branch
maki49 40bcc10
test(lr): cover degenerate relaxation and enable CI XC gradients
maki49 b143939
Merge origin/develop into LR-Grad-relax
maki49 aaf7da8
Merge origin/develop into LR-Grad-relax
maki49 cc578ff
fix(lr): report resolved KS band counts in initialization log
maki49 a70cc80
Merge branch 'develop' into LR-Grad-relax
maki49 c62bc3a
fix(lr): check runtime LibXC KXC availability for gradients
maki49 9f39177
Merge remote-tracking branch 'my/LR-Grad-relax' into LR-Grad-relax
maki49 a546107
Merge origin/develop and adapt LR cube output API
maki49 ae1f3f2
refactor(lr): clarify state tracking names and orthonormality warning
maki49 8a2c449
refactor(lr): split ESolver initialization and orbital setup
maki49 8b86aa7
Merge origin/develop and adapt relocated LR initialization
maki49 fd32f16
fix(test): adapt overlap fixtures to UnitCell vector maps
maki49 c0f7c5b
fix(lr): align distributed root projection for arbitrary block sizes
maki49 9485c68
refactor(lr): construct only occupied and virtual MO overlap blocks
maki49 09691ff
Merge origin/develop and refresh LR references after AO spline fix
maki49 0e53a65
Merge branch 'develop' into LR-Grad-relax
mohanchen 61f310e
Refactor LR integration collectors and rename state tracking references
maki49 02f96c1
Merge remote-tracking branch 'my/LR-Grad-relax' into LR-Grad-relax
maki49 1878539
Merge remote-tracking branch 'origin/develop' into LR-Grad-relax
maki49 ab811c9
Merge remote-tracking branch 'origin/develop' into LR-Grad-relax
maki49 324cacf
Fix LR review issues in state projection and force validation
maki49 4e42a4b
Avoid constructing discarded Casida chains for Z operators
maki49 34ee454
Make LR XC kernel preparation explicit
maki49 5b27615
Remove the ELPA-backed LR Z-vector solver
maki49 1ccd41e
Document and warn about truncated LR force windows
maki49 0bf7c32
Document the finite-tolerance approximation in JT relaxation
maki49 3399002
Compare signed LR force components in integration tests
maki49 d962f16
Update serial INPUT tests after removing the ELPA Z solver
maki49 398a482
Merge develop and separate LR implementation from interfaces
maki49 17d5a66
Pass LR force settings explicitly and use numerical connectors
maki49 07fb8e4
Use column-major connectors for LR Hermitian eigensolvers
maki49 e741632
Use numerical connectors throughout the LR additions
maki49 9bc3be3
Pass LR runtime dependencies explicitly and clarify captures
maki49 0a212fd
Expand compact PR additions and make LR test setup consistent
maki49 3570618
Merge origin/develop into LR-Grad-relax
maki49 5bc7213
Rename EXX workspace files to reflect RI ownership
maki49 abe308b
Make LR reductions and elementwise calculations explicit
maki49 ac4bf0d
Merge branch 'develop' into LR-Grad-relax
mohanchen 3ec4712
Fix LR review issues and isolate LR density regressions
maki49 7b9c4eb
Make LR interfaces explicit and reject unsupported force modes
maki49 2e13b88
Split remaining LR force matrix declarations
maki49 2ec57f5
Reuse the common sparse writer behind thin LR adapters
maki49 4e8e8dc
Restore ground-state XC selection during LR force reconstruction
maki49 95d9b1b
Allow empty local blocks in LR matrix transformations
maki49 5db76ae
Support empty LR ownership through eigensolvers and force response
maki49 87328f1
Preserve LR exchange linearity and certify Z-CG residuals
maki49 05e8146
Allow disabling LR optical postprocessing and accelerate CI cases
maki49 c852f67
Fix missing reduction header in Z solver test
maki49 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why add the installation in CI rather than modifying the toolchain script? This simply leaves users unaware of anything. Moreover you have wrong configuration setup: Libxc 7.1.x has replaced options
DISABLE_KXC,DISABLE_LXCetc with a singleMAXORDERoption (-DMAXORDER=3means enabling KXC).Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, you are building Libxc version 5.1.7 with KXC support? The build time for higher-order derivatives configuration of Libxc has been significantly reduced since 7.1.x... and more numerical bugs fixed...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I kept the older LibXC because, starting with 7.1.0, the standard ωPBEH/HSE implementation no longer provides KXC, which HSE LR-TDDFT analytical forces require. Upstream restricted it to second derivatives because of insufficient smoothness at piecewise junctions and numerical stability issues; see the upstream change.
Since CI currently has no HSE excited-state analytical-force case, I support reuse toolchain's new-version installation by default (in #8218 ).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah that issue. Indeed, wPBEH is a mess, and its implementation in previous versions is also problematic to some extent. IIRC upstream is doing some reimplementation towards it.