1. Derivative structure enumeration using decision diagramΒΆ

Derivative structure enumeration

$(pyclupan)/derivative/enumeration.py -p PoscarFile -n NExpand \
        -o LatticeID -o LatticeID -o LatticeID

Options

-p POSCAR, --poscar POSCAR
                    POSCAR file for primitive cell
-e [ELEMENTS [ELEMENTS ...]], --elements [ELEMENTS [ELEMENTS ...]]
                      Elements on a lattice
-o [OCCUPATION [OCCUPATION ...]], --occupation [OCCUPATION [OCCUPATION ...]]
                      Lattice IDs that are occupied by an element
-c [COMP [COMP ...]], --comp [COMP [COMP ...]]
                      Composition (n_elements / n_sites)
--comp_lb [COMP_LB [COMP_LB ...]]
                      Lower bound of composition (n_elements / n_sites)
--comp_ub [COMP_UB [COMP_UB ...]]
                      Upper bound of composition (n_elements / n_sites)
--charge [CHARGE [CHARGE ...]]
                      Charges for elements
--hnf HNF HNF HNF HNF HNF HNF HNF HNF HNF
                      Hermite normal form
-n N_EXPAND, --n_expand N_EXPAND
                      Determinant of Hermite normal form
--superperiodic       Including superperiodic structures
--endmember           Including endmembers (incomplete structures)
--nodump              No dump file of DSSet object

(Examples)

  1. Binary alloy

    # Lattice ID 0: fcc lattice sites
    $(pyclupan)/derivative/enumeration.py -p fcc-primitive -n 8 -o 0 -o 0
    $(pyclupan)/derivative/enumeration.py -p fcc-primitive -n 8 -e 0 1
    
  2. Ternary alloy

    $(pyclupan)/derivative/enumeration.py -p fcc-primitive -n 6 -o 0 -o 0 -o 0
    
  3. Quaternary alloy

    $(pyclupan)/derivative/enumeration.py -p fcc-primitive -n 8 -o 0 -o 0 -o 0 -o 0
    
  4. Binary configurations on anion sites in the perovskite structure

    # Lattice ID 0: A sites, Lattice ID 1: B sites, Lattice ID 2: Anion sites
    $(pyclupan)/derivative/enumeration.py -p perovskite-unitcell -n 3 -o 0 -o 1 -o 2 -o 2
    
  5. Ternary configurations on cation (perovskite A and B) sites and binary configurations on anion sites in the perovskite structure

    # Lattice ID 0: A sites, Lattice ID 1: B sites, Lattice ID 2: Anion sites
    $(pyclupan)/derivative/enumeration.py -p perovskite-unitcell -n 3 -o 0 1 -o 0 1 -o 0 1 -o 2 -o 2
    
  6. Ternary configurations on cation sites and binary configurations on anion sites at A2BCX5 in the perovskite structure. Cations A and B occupy two cation sites, and Cation C occupies perovskite B sites.

    # Lattice ID 0: A sites, Lattice ID 1: B sites, Lattice ID 2: Anion sites
    #  - Comp.(ele=0) = 1/2 of perovskite A and B sites
    #  - Comp.(ele=1) = 1/4 of perovskite A and B sites
    #  - Comp.(ele=2) = 1/2 of perovskite B sites
    #  - Comp.(ele=3) = 5/6 of perovskite anion sites
    #  - Comp.(ele=4) = 1/6 of perovskite anion sites
    
    $(pyclupan)/derivative/enumeration.py -p perovskite-unitcell -n 4 -o 0 1 -o 0 1 -o 1 -o 2 -o 2 -c 0 1/2 -c 1 1/4 -c 3 5/6
    
  7. Binary configurations on cation sites and binary configurations on anion sites in wurtzite lattice. Only derivative structures satisfying charge neutrality are enumerated.

    # Lattice ID 0: cation sites, Lattice ID 1: anion sites
    # ele 0 = Si, ele 1 = Al, ele 2 = C, ele 3 = N
    # charge(Si) = 4, charge(Al) = 3, charge(C) = -4, charge(N) = -3
    
    $(pyclupan)/derivative/enumeration.py -p wurtzite-primitive -n 4 -e 0 1 -e 2 3 --charge 4 3 -4 -3
    

Generation of structure files

POSCAR files are generated from derivative structure lists (derivative*.dump or derivative*.yaml). If no dump and yaml files are given, all derivative*.pkl files in the current directory will be parsed.

$(pyclupan)/derivative/io.py -e Ag Au

usage: io.py [-h] [--dump [DUMP [DUMP ...]]] [--yaml [YAML [YAML ...]]]
         [-r RANDOM] [--n_cell_ub N_CELL_UB]
         [-e [ELEMENTS [ELEMENTS ...]]]

optional arguments:
--dump [DUMP [DUMP ...]]
                      parse derivative*.pkl file
--yaml [YAML [YAML ...]]
                      parse derivative*.yaml file
-r RANDOM, --random RANDOM
                      number of random samples
--n_cell_ub N_CELL_UB
                      Maximum number of cells
-e [ELEMENTS [ELEMENTS ...]], --elements [ELEMENTS [ELEMENTS ...]]
                      elements
--no_poscars          Only derivative-all.pkl is generated. No poscar files
                      are generated.

POSCAR files are identified with n_cell, supercell_id, and labeling_id.

If you generate only derivative-all.pkl used for computing structural features, use the following command.

$(pyclupan)/derivative/io.py --no_poscars

If you generate complete derivative-all.pkl and sample a part of structures randomly, use the following command.

$(pyclupan)/derivative/io.py --random 100