Skip to content

Feature request: Robust SCF iteration setting via reducing mixing_beta gradually when SCF osciallation detected #6851

@QuantumMisaka

Description

@QuantumMisaka

Background

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Features NeededThe features are indeed needed, and developers should have sophisticated knowledgeInput&OutputSuitable for coders without knowing too many DFT detailsLarge SystemsIssues related to large-size systems

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions