dragonfruit.alloys.vegard module

dragonfruit.alloys.vegard.get_concentrations(atoms: ase.atoms.Atoms) Dict[str, float]

Get the concentrations of each constituent.

dragonfruit.alloys.vegard.get_elemental_cells(atoms: ase.atoms.Atoms, elemental_atoms: Sequence[ase.atoms.Atoms]) Dict[str, ase.cell.Cell]

Get the cells from the elemental atoms which corresponds to the constituents in Atoms.

Takes in a list of elementals, and extracts the cells from the relevant elementals. E.g. if we pass in a NaCl atoms object, we’d get back something like

{‘Na’: [[4.0, 0, 0], [0, 4, 0], [0, 0, 4]], ‘Cl’: [[3.8, 0, 0], [0, 3.8, 0], [0, 0, 3.8]]}

(these are fake numbers).

dragonfruit.alloys.vegard.make_vegard_atoms(atoms: ase.atoms.Atoms, elemental_atoms: Sequence[ase.atoms.Atoms], size: Sequence[int] = (1, 1, 1)) ase.atoms.Atoms

Apply Vegard’s law, and set the lattice parameter to the pure ones.A

https://en.wikipedia.org/wiki/Vegard%27s_law

Parameters
  • atoms – The atoms object to apply Vegard’s law to

  • elemental_atoms – Sequence of Atoms for the optimized constituents in atoms. May have more constituents than in the atoms, but all of the constituents must be there. Elemental cells are assumed to be in the primitive cell with no repititions. Assumes the cell is of the same type, no checks will be made!

  • size – Size of the requested atoms object, relative to to the primitive cell. Should be a list of 3 integers.