Repository navigation
Feature: support EXX PW (screened hybrid) NSCF #8093
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
Open
Flying-dragon-boxing
wants to merge
22
commits into
deepmodeling:develop
Choose a base branch
from
Flying-dragon-boxing:feature/pw-hybrid-nscf
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
71518d6
refactor(pw): separate exchange source and target bases
Flying-dragon-boxing d70d270
feat(pw): load a frozen SCF ensemble for screened hybrid NSCF
Flying-dragon-boxing f3b8efb
test(pw): verify and document screened hybrid NSCF restarts
Flying-dragon-boxing cf1aaed
refactor(esolver): isolate hybrid NSCF restart orchestration
Flying-dragon-boxing 381ac42
docs(pw): compare hybrid NSCF bands with VASP and retain direct exchange
Flying-dragon-boxing d7939c5
feat(pw): enable and verify CUDA screened hybrid NSCF
Flying-dragon-boxing 78510e3
fix(pw): match exchange FFT precision to wavefunctions
Flying-dragon-boxing 99e9c56
feat(pw): share screened zero-transfer limits with LCAO
Flying-dragon-boxing 475a4ac
Merge develop and adapt hybrid NSCF to current INPUT and EXX APIs
Flying-dragon-boxing 984923a
refactor(pw): keep exchange convolution interface minimal
Flying-dragon-boxing 34ec484
fix(pw): name the auxiliary-function correction gygi
Flying-dragon-boxing 6250df9
Add readers for existing PW source metadata and eig_occ occupations
Flying-dragon-boxing 19ee525
Reuse standard SCF outputs for hybrid NSCF without changing existing IO
Flying-dragon-boxing 72b098c
Remove unused EXX iteration-count accessor after checkpoint cleanup
Flying-dragon-boxing f7f7356
Clean hybrid NSCF leftovers and keep workflow regressions outside CMake
Flying-dragon-boxing 04c334a
Shorten hybrid NSCF documentation and clarify runtime symmetry
Flying-dragon-boxing c33bda5
Add hybrid NSCF objects to legacy Makefile build
Flying-dragon-boxing 0a8cf7e
Address review: accept zero Fock coefficients, diagnose smeared sourc…
Flying-dragon-boxing 99177ba
Replace hybrid NSCF workflow script with standard integrate cases
Flying-dragon-boxing 5351bbc
Merge upstream/develop into feature/pw-hybrid-nscf
Flying-dragon-boxing e6b9b9e
Name Methfessel-Paxton in the out-of-range source occupation diagnostic
Flying-dragon-boxing 9245343
Move frozen EXX source ownership from ESolver into OperatorEXXPW
Flying-dragon-boxing 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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| # PW screened hybrid NSCF | ||
|
|
||
| Hybrid NSCF reads the charge density, binary `wfk*_pw.dat` wavefunctions and | ||
| weighted occupations in `eig_occ.txt` from a converged SCF calculation. It keeps | ||
| that source fixed while solving a new K-point list or additional target bands. | ||
| No new file format is required. | ||
|
|
||
| ## SCF | ||
|
|
||
| Use a complete, uniformly weighted source mesh and: | ||
|
|
||
| ```text | ||
| calculation scf | ||
| suffix hybrid | ||
| basis_type pw | ||
| dft_functional HSE | ||
| smearing_method fixed | ||
| symmetry -1 | ||
| kpar 1 | ||
| bndpar 1 | ||
| exxace false | ||
| exx_gamma_extra false | ||
| out_chg 1 | ||
| out_wfc_pw 2 | ||
| out_freq_ion 0 | ||
| cal_force 0 | ||
| cal_stress 0 | ||
| ``` | ||
|
|
||
| ## NSCF | ||
|
|
||
| Keep the same structure, pseudopotentials and cutoffs. In a separate output | ||
| directory, retain the shared settings above, replace `KPT` with the target | ||
| points, and change: | ||
|
|
||
| ```text | ||
| calculation nscf | ||
| read_file_dir ../scf/OUT.hybrid | ||
| init_wfc random | ||
| nbands 20 | ||
| out_band 1 | ||
| out_wfc_pw 0 | ||
| out_chg 0 | ||
| ``` | ||
|
|
||
| Supports CPU/CUDA and `nspin 1/2`; use one MPI rank for CUDA. ACE, SOC, | ||
| unscreened exchange, forces and stress are unsupported in this workflow. | ||
| Set `symmetry -1`: input `0` is accepted but PW EXX resets it to `-1` at runtime. | ||
|
|
||
| HSE defaults to `exx_singularity_correction limits`, as in LCAO. Set `gygi` to | ||
| retain the historical PW correction, which can produce jumps at source K points. | ||
| Use matching SCF/NSCF settings for consistent bands. Do not use Methfessel-Paxton | ||
| smearing (`mp`/`mp2`/`mp3`) for the source: it can write occupations outside | ||
| `[0, k-point weight]`, which hybrid NSCF rejects; the non-negative schemes | ||
| (`fixed`, `gauss`, `mv`, `fd`) are accepted. Configuration differences | ||
| or missing `INPUT.info` produce warnings; missing or incompatible numerical | ||
| source data produces an error. | ||
|
|
||
| ## Verification | ||
|
|
||
| With MPI and LibXC enabled, substitute your configured executable/build paths: | ||
|
|
||
| ```bash | ||
| cmake --build build --target MODULE_ESOLVER_pw_hybrid_source | ||
| OMP_NUM_THREADS=1 ctest --test-dir build -R '^MODULE_ESOLVER_pw_hybrid_source$' | ||
| # Frozen-source band regressions: tests/01_PW/nscf_hse_same and nscf_hse_path | ||
| cd tests/01_PW | ||
| OMP_NUM_THREADS=1 bash ../integrate/Autotest.sh -a <abacus> -r '^nscf_hse' | ||
| ``` | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,6 +4,7 @@ Electronic Properties and Outputs | |
|
|
||
| .. toctree:: | ||
| band | ||
| hybrid_nscf | ||
| dos | ||
| Mulliken | ||
| potential | ||
|
|
||
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.