abacus-develop icon indicating copy to clipboard operation
abacus-develop copied to clipboard

Feature: require an automatic workflow of electron-number adjustment for a constant work function

Open sunml99 opened this issue 1 year ago • 2 comments

Background

Realistic electrochemical reactions often occur under a constant applied potential. It is therefore crucial to achieve a constant potential condition for DFT-based electrochemcial surface reaction simulations. DFT calculations in ABACUS are currently based on a constant number of electrons instead of a constant potential (i.e., work function).

Describe the solution you'd like

Since we are already able to adjust the total number of electrons in ABACUS slab models to approximate an effective electrical double-layer condition, we would like to request the ABACUS team to construct an automatic workflow of electron-number adjustment for converging the slab model's work function to a certain value. We would also prefer this constant-potential workflow/module to combine with CI-NEB calculations, which can help people do transition-state optimization under a constant potential condition.

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)

No response

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.

sunml99 avatar Jan 31 '24 14:01 sunml99

@sunml99, Thanks for your idea! Indeed, this function is quite important for surface application. We will consider a practical schedule about it.

WHUweiqingzhou avatar Feb 01 '24 05:02 WHUweiqingzhou

Maybe we can implement this method in ABACUS referred by J. Chem. Theory Comput. 2023, 19, 5168−5175.

WHUweiqingzhou avatar Feb 18 '24 03:02 WHUweiqingzhou