Skip to content

Docs: clarify Kerker bypass conditions - #7772

Merged
mohanchen merged 2 commits into
deepmodeling:developfrom
WHUweiqingzhou:docs/7766-kerker-input-parameters
Aug 4, 2026
Merged

Docs: clarify Kerker bypass conditions#7772
mohanchen merged 2 commits into
deepmodeling:developfrom
WHUweiqingzhou:docs/7766-kerker-input-parameters

Conversation

@WHUweiqingzhou

Copy link
Copy Markdown
Collaborator

Linked Issue

Fixes #7766

Summary

This PR clarifies the documentation of the Kerker-related INPUT parameters:

  • mixing_gg0
  • mixing_gg0_mag
  • mixing_gg0_min

It documents when Kerker preconditioning is bypassed and clarifies that changing mixing_gg0_min does not alter the fixed mixing_beta <= 0.1 or mixing_beta_mag <= 0.1 bypass conditions.

No numerical behavior, default value, INPUT parsing logic, or Kerker implementation is changed.

Background

Kerker preconditioning is used to suppress long-wavelength (small-wave-vector) charge-density fluctuations, commonly known as charge sloshing, during SCF iterations.

For the charge-density channel, the Kerker filter contains a lower bound of the form

$$f(G) = \max\left( \frac{G^2}{G^2 + G_0^2}, \frac{\mathrm{mixing\_gg0\_min}} {\mathrm{mixing\_beta}} \right).$$

The magnetic-density channel uses the analogous ratio

$$\frac{\mathrm{mixing\_gg0\_min}} {\mathrm{mixing\_beta\_mag}}.$$

With the default mixing_gg0_min = 0.1, the lower bound reaches or exceeds 1 when the corresponding mixing parameter is less than or equal to 0.1. Such a factor would no longer provide suppression and could become amplifying. The current implementation therefore bypasses Kerker preconditioning in this regime.

The bypass thresholds are fixed in the current implementation:

  • Charge-density Kerker is bypassed when mixing_beta <= 0.1.
  • Magnetic-density Kerker is bypassed when mixing_beta_mag <= 0.1.
  • The magnetic-density Kerker path is also unavailable when the charge-density Kerker preconditioner itself is bypassed.

These conditions are independent of the user-provided value of mixing_gg0_min. Changing mixing_gg0_min affects the filter lower bound when Kerker is active, but it does not change the fixed bypass thresholds or re-enable Kerker.

What's changed?

  • Clarified that mixing_gg0 controls suppression of long-wavelength, small-(G) charge-density fluctuations.
  • Documented that mixing_gg0 has no effect when mixing_beta <= 0.1.
  • Documented the corresponding mixing_beta_mag <= 0.1 condition for mixing_gg0_mag.
  • Clarified that magnetic-density Kerker is unavailable when the charge-density Kerker path is bypassed.
  • Expanded the mixing_gg0_min description to explain how it enters the charge and magnetic filter lower bounds.
  • Explicitly documented that changing mixing_gg0_min does not change either fixed bypass threshold.
  • Synchronized the built-in CLI help, docs/parameters.yaml, and the generated input-main.md.

Although a C++ file appears in the diff, only the Input_Item documentation strings are changed. No calculation code is modified.

Document the charge and magnetic mixing thresholds that bypass Kerker preconditioning, and clarify that mixing_gg0_min does not change those fixed thresholds.
@mohanchen mohanchen added the Compile & CICD & Docs & Dependencies Issues related to compiling ABACUS label Aug 4, 2026

@mohanchen mohanchen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks for your contribution!

@mohanchen
mohanchen merged commit e152a09 into deepmodeling:develop Aug 4, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Compile & CICD & Docs & Dependencies Issues related to compiling ABACUS

Projects

None yet

2 participants