EmtPotential

class EmtPotential(particleType, E0, s0, V0, eta2, kappa, l, nu0)

Constructor of the potential

Parameters:
  • particleType (string) – Identifier of the particle type.

  • E0 (PhysicalQuantity of type energy) – Potential parameter.

  • s0 (PhysicalQuantity of type length) – Potential parameter.

  • V0 (PhysicalQuantity of type energy) – Potential parameter.

  • eta2 (PhysicalQuantity of type length**-1) – Potential parameter.

  • kappa (PhysicalQuantity of type length**-1) – Potential parameter.

  • l (PhysicalQuantity of type length**-1) – Potential parameter.

  • nu0 (PhysicalQuantity of type length**-3) – Potential parameter.

classmethod getAllParameterNames()

Return the names of all used parameters as a list.

getAllParameters()

Return all parameters of this potential and their current values as a <parameterName / parameterValue> dictionary.

static getDefaults()

Get the default parameter of the current potential, returns a dictionary consisting of the parameter name and default value.

getParameter(parameterName)

Get the current value of the parameter parameterName.

setParameter(parameterName, value)

Set the parameter parameterName to the given value.

Parameters:
  • parameterName (str) – The name of the parameter that will be modified.

  • value – The new value that will be assigned to the parameter parameterName.

Usage Examples

Set up a bonded potential with a EmtPotential for a copper crystal.

# Set up lattice
lattice = FaceCenteredCubic(3.61496*Angstrom)

# Define elements
elements = [Copper]

# Define coordinates
fractional_coordinates = [[0.0, 0.0, 0.0]]

# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
)

potential_set = TremoloXPotentialSet(name='EMT_Potential')

potential_set.addParticleType(ParticleType(
    symbol='Cu',
    mass=63.546*atomic_mass_unit,
    charge=None,
    sigma=None,
    sigma14=None,
    epsilon=None,
    epsilon14=None,
    atomicNumber=29,
    tags=[]
))

# Define a new EMT potential and add it to the potential set.
emt_potential = EmtPotential(
    ParticleIdentifier('Cu', []),
    -3.51*eV,
    2.67*Bohr,
    2.476*eV,
    1.652*1/Bohr,
    2.74*1/Bohr,
    1.906*1/Bohr,
    0.0091*1/Bohr**3,
)
potential_set.addPotential(emt_potential)

# Set up a new TremoloXCalculator and attach it to the configuration.
calculator = TremoloXCalculator(potential_set)
bulk_configuration.setCalculator(calculator)

Notes

This potential implements Effective Medium Theory (EMT) [1]. The basic idea of EMT is to calculate the energy of an atom in an arbitrary environment by first calculating it in some properly chosen reference system, the effective medium, and then estimate the energy difference between the real system and the reference system.

The energy function is given by

\[E = \sum_i E_{c,i}(n_i) + \Delta E_{AS}(i)\]

where \(E_{c}\) represents the cohesive energy and it is defined as

\[E_c(s_i) = E_0 f[\lambda (s_i - s_0)]\]

with

\[f(x) &=& (1+x)\exp(-x)\]
\[s_i = s_0 - \frac{1}{\beta\eta_2} \log\left(\frac{\sigma_{1,i}}{12}\right)\]
\[\sigma_{1,i} = \frac{1}{\gamma_1} \sum_{j\ne i} \exp [-\eta_2 (r_{ij} - \beta s_0)] \chi_{ij}\Theta(r_{ij})\]
\[\beta = \frac{(16\pi / 3)^{1/3}}{\sqrt{2}}\]
\[\Theta(x) = (1+\exp(a(r-r_c)))\]

\(\Delta E_{AS}\) represents the atomic-sphere correction, and it is defined as

\[\Delta E_{AS}(i) = \frac{1}{2} \left[ \sum_{j\ne i} \chi_{ij} V_{ij}(r_{ij}) - 12 V(\beta s_i) \right]\]

with

\[V(r_{ij}) = - \frac{V_0}{\gamma_2} \exp\left[ - \frac{\kappa}{\beta}(r_{ij} - \beta s_0)\right] \Theta(r_{ij})\]

The normalization constants \(\gamma_1\) and \(\gamma_2\) are chosen such that \(E_c = E_0\) and \(\Delta E_{AS}= 0\) in the equilibrium reference system. The factor \(\chi_{ij} = n_{0,i} / n_{0,j}\) corrects for interactions between particles of different type. Last, the cutoff radius \(r_c\) is chosen based on the largest \(s_0\) present in the simulation and the constant a defines the steepness of the cutoff. The remaining parameters are given by the user.