class atomate2.common.flows.electrode.ElectrodeInsertionMaker(relax_maker, static_maker, bulk_relax_maker=None, name='ion insertion', structure_matcher=<factory>)[source]

Bases: Maker, ABC

Attempt ion insertion into a structure.

The basic unit for cation insertion is:

(static) -> (chgcar analysis) -> N x (relax) -> (return best structure)

The workflow is:

[relax structure] [get_stable_inserted_structure] [get_stable_inserted_structure] [get_stable_inserted_structure] … until the insertion is no longer topotactic.

This workflow requires the users to provide the following functions:
self.get_charge_density(task_doc: TaskDoc):

Get the charge density of a TaskDoc output from a calculation.


Ensure that the static maker will store the desired data.

If you use this workflow please cite the following paper:

Shen, J.-X., Horton, M., & Persson, K. A. (2020). A charge-density-based general cation insertion algorithm for generating new Li-ion cathode materials. npj Computational Materials, 6(161), 1—7. doi: 10.1038/s41524-020-00422-3

  • name (str) – The name of the flow created by this maker.

  • relax_maker (RelaxMaker) – A maker to perform relaxation calculations.

  • bulk_relax_maker (Maker) – A separate maker to perform the first bulk relaxation calculation. If None, the relax_maker will be used.

  • static_maker (Maker) – A maker to perform static calculations.

  • structure_matcher (StructureMatcher) – The structure matcher to use to determine if additional insertion is needed.

  • relax_maker (Maker) –

  • static_maker (Maker) –

  • bulk_relax_maker (Maker | None) –

  • name (str) –

  • structure_matcher (StructureMatcher) –

make(structure, inserted_element, n_steps, insertions_per_step=4, working_ion_entry=None)[source]

Make the flow.

  • structure (Structure) – Structure to insert ion into.

  • inserted_species – Species to insert.

  • n_steps (int) – The maximum number of sequential insertion steps to attempt.

  • insertions_per_step (int) – The maximum number of ion insertion sites to attempt.

  • inserted_element (ElementLike) –

  • working_ion_entry (ComputedEntry | None) –

Return type:

Flow for ion insertion.

abstract get_charge_density(prev_dir)[source]

Get the charge density of a structure.


prev_dir (Path | str) – The previous directory where the static calculation was performed.

Return type:

The charge density.

abstract update_static_maker()[source]

Ensure that the static maker will store the desired data.

Return type: