matscipy.calculators.eam.average_atom

Functions

average_potential(concentrations, ...[, ...])

Generate Average-atom potential

matscipy.calculators.eam.average_atom.average_potential(concentrations, parameters, F, f, rep, kind='eam/alloy', avg_atom='A', atomic_number=999, crystal_structure='unknown', lattice_constant=1.0)

Generate Average-atom potential

The Average-atom (A-atom) potential is a mean-field approximation for random alloys, see Ref. `1`_. The purpose is to replace the true elements by a single fictious element, the A-atom. A configuration of A-atoms yields approximately the same potential energy as the corresponding random alloy configuration. Other average material properties, e.g. the elastic constants, are reproduced as well. For a full derivation, see Ref. 1.

The A-atom potential has standard EAM form, i.e. it can be tabulated just like any other EAM potential. The potential functions are simply the concentration-weighted averages of the pure element functions:

ϕAA(rγδ)=XNTYNTcXcYϕXY(rγδ)(pair potential),UA(ργ)=XNTcXUX(ργ)(embedding energy),gA(rγδ)=XNTcXgX(rγδ)(electron density),andmA=XNTcXmX(mass).

Note

Currently, only eam/alloy-style potentials can be averaged. The extension to eam/fs should be straightforward, however.

Parameters:
  • concentrations (array_like) – concentrations of the elements in the A-atom

  • parameters (EAMParameters) – EAM potential parameters

  • F (array_like) – tabulated embedding energy functionals

  • f (array_like) – tabulated electron density functions

  • rep (array_like) – tabulated pair potential energy functions

Returns:

  • parameters (EAMParameters) – EAM potential parameters

  • new_F (array_like) – tabulated embedding energy functionals, including A-atom functional

  • new_f (array_like) – tabulated electron density functions, including A-atom function(s)

  • new_rep (array_like) – tabulated pair potential energy functions, including pairs with A-atom

Examples

>>> from matscipy.calculators.eam import io, average_atom
>>> source, parameters, F, f, rep = io.read_eam(
>>>     "ZrCu.onecolumn.eam.alloy"
>>> )
>>> concentrations = [0.5, 0.5]
>>> (new_parameters, new_F, new_f, new_rep) = average_atom.average_potential(
>>>     concentrations, parameters, F, f, rep
>>> )
>>> composition = " ".join(
>>>     [str(c * 100.0) + "% {0},".format(e) for c, e in zip(concentrations, parameters.symbols)]
>>> )
>>> composition = composition.rstrip(",")
>>> source += ", averaged for composition {0}".format(composition)
>>> io.write_eam(
>>>     source,
>>>     new_parameters,
>>>     new_F,
>>>     new_f,
>>>     new_rep,
>>>     "ZrCu.onecolumn.averaged.eam.alloy",
>>>     kind="eam/alloy",
>>> )

Read an EAM potential table for two elements in eam/alloy format, and create a new table with additional A-atom functions for the equicomposition alloy.

References

[1]

Varvenne, C., Luque, A., Nöhring, W. G. & Curtin, W. A. Average-atom interatomic potential for random alloys. Physical Review B 93, 104201 (2016).

Notes

Notation:
  • N Number of atoms

  • NT Number of elements

  • rνμ Pair distance of atoms ν and μ

  • ϕνμ(rνμ) Pair potential energy of atoms ν and μ

  • ρν Total electron density of atom ν

  • Uν(ρnu) Embedding energy of atom ν

  • gδ(rγδ)gγδ Contribution from atom δ to ργ

  • mν mass of atom ν