Enumerate Example — Systematic Dopant Screening

Purpose

Screen multiple dopants and concentrations automatically.

Use this mode when: - You want combinatorial exploration. - You define allowed dopants and doping levels. - You limit the maximum number of dopants per structure.

Note

The current implementation supports up to 3 dopants per structure via:

max_dopants_total = 3

Run

dopingflow run-all -c input.toml

Example input.toml

[structure]
outdir = "random_structures"

[references]
reference_mode = "metal"
host = "SnO2"
host_dir = "reference_structures/"
supercell = [ 5, 2, 1]
metals_ref = [ "Ti","Zr","Nb","Sb","Sn"]
oxides_dir = "reference_structures/"
fmax = 0.02
skip_if_done = false

[generate]
poscar_order = ["Ti","Zr","Nb","Sb","Sn","O"]
seed_base = 12345
clean_outdir = true

[doping]
mode = "enumerate"
host_species = "Sn"
dopants = ["Sb", "Ti", "Zr", "Nb"]
must_include = ["Sb"]
max_dopants_total = 3
allowed_totals = [5.0, 10.0, 15.0]
levels = [5.0, 10.0, 15.0]

# Other sections identical to previous example

Result

The workflow automatically generates composition folders like:

random_structures/
    Sb5/
    Sb5_Ti5/
    Sb5_Ti5_Zr5/
    Sb10_Nb5/
    ...

Each is processed independently through all stages.