You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Feature request: Robust SCF iteration setting via reducing mixing_beta gradually when SCF osciallation detected #6851
For some system like metal-semiconductor hetero-juncture and ferromagnetic/anti-ferromagnetic system, gradually reducing mixing_beta and raise mixing_ndim to 20 is a general way for turning parameter towards SCF convergence.
However, can we offer a more intelligent way for SCF convergence?
Now we have scf_os_thr, scf_os_ndim and scf_os_stop for detect osciallation in SCF and stop while osciallation emerges, but can we implement an alternative way: reducing mixing_beta gradually when SCF osciallation.
Describe the solution you'd like
Parameters:
scf_os_beta_reduce: 0/1 for open beta reduce function
scf_os_reduce_ratio: default 0.5, the ratio for reduce beta when osciallation, new beta will be beta*ratio
scf_os_beta_min: default 0.05, minimum beta in beta reduce process. when mixing_beta reach the minimum and SCF osciallation still detected, SCF will stop.
This mechanism will benefit system with hard SCF convergence like Ni(111) surface adsorption and hetero-juncture.
Task list only for developers
Notice possible changes of behavior
Explain the changes of codes in core modules of ESolver, HSolver, ElecState, Hamilt, Operator or Psi
Notice Possible Changes of Behavior (Reminder only for developers)
The suggestion is under PBE background, while HSE EXX SCF is controlled by exx_mixing_beta.
By implement this mechanism, the scf_os mechanism should be reviewed and changed a lot.
Notice any changes of core modules (Reminder only for developers)
No response
Notice Possible Changes of Core Modules (Reminder only for developers)
No response
Additional Context
No response
Task list for Issue attackers (only for developers)
Review and understand the proposed feature and its importance.
Research on the existing solutions and relevant research articles/resources.
Discuss with the team to evaluate the feasibility of implementing the feature.
Create a design document outlining the proposed solution and implementation details.
Get feedback from the team on the design document.
Develop the feature following the agreed design.
Write unit tests and integration tests for the feature.
Update the documentation to include the new feature.
Perform code review and address any issues.
Merge the feature into the main branch.
Monitor for any issues or bugs reported by users after the feature is released.
Address any issues or bugs reported by users and continuously improve the feature.
Activity
mohanchen commentedon Sep 25, 2026
It's a good idea, but rely on many tests. We will consider this in fugure. I will convert this to discussion.