SuttonChenPotential¶
- class SuttonChenPotential(particleType1, particleType2, c, m, n, epsilon, sigma, r_cut=None)¶
Constructor of the potential.
- Parameters:
particleType1 (ParticleType or ParticleIdentifier) – Identifier of the first particle type.
particleType2 (ParticleType or ParticleIdentifier) – Identifier of the second particle type.
c (float) – Potential parameter.
m (float) – Potential parameter.
n (float) – Potential parameter.
epsilon (PhysicalQuantity of type energy) – Potential parameter.
sigma (PhysicalQuantity of type length) – Potential parameter.
r_cut (PhysicalQuantity of type length) – Cutoff radius
- static fromMixingRule(potential1, potential2, epsilon=None, sigma=None, c=None, m=None, n=None)¶
Generate a Sutton-Chen potential using a mixing rule.
- Parameters:
potential1 (SuttonChenPotential) – Sutton-Chen potential with particleType1 == particleType2.
potential2 (SuttonChenPotential) – Sutton-Chen potential with particleType1 == particleType2.
- :param epsilon Potential parameter. If this value is None, the corresponding
value in the new potential will be calculated using the mixing rule epsilon_new = sqrt(epsilon_1 * epsilon2). Otherwise the given value is used.
- :param sigma Potential parameter. If this value is None, the corresponding
value in the new potential will be calculated using the mixing rule sigma_new = 0.5 * (sigma_1 + sigma_2). Otherwise the given value is used.
- :param sigma Potential parameter. If this value is None, the corresponding
value in the new potential will be calculated using the mixing rule sigma_new = 0.5 * (sigma_1 + sigma_2). Otherwise the given value is used.
- Returns:
Sutton-Chen potential with particleType1 = potential1.particleType1 and particleType2 = potential2.particleType1. All other values are created using a mixing rule.
- Return type:
- 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 parameters of this potential and return them in form of a dictionary of <parameter name, default value> key-value pairs.
- 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¶
Define a Sutton-Chen potential for an alloy of aluminum and nickel by adding particle types and interaction functions to the TremoloXPotentialSet.
# -------------------------------------------------------------
# Bulk Al-Ni alloy configuration
# -------------------------------------------------------------
# Set up lattice
lattice = SimpleCubic(2.881*Angstrom)
# Define elements
elements = [Aluminium, Nickel]
# Define coordinates
fractional_coordinates = [[0.0, 0.0, 0.0],
[0.5, 0.5, 0.5]]
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
# Create a new potential set
potentialSet = TremoloXPotentialSet(name='SuttonChen_NiAl_2008')
# Add the particle types to the potential set
potentialSet.addParticleType(ParticleType(symbol='Ni',
mass=58.6934*atomic_mass_unit))
potentialSet.addParticleType(ParticleType(symbol='Al',
mass=26.9815*atomic_mass_unit))
# Add the Sutton-Chen potentials to the potential set
potentialSet.addPotential(SuttonChenPotential('Ni', 'Ni',
r_cut=7.04*Angstrom,
c=39.432000,
m=6.0,
n=9.0,
sigma=3.52*Angstrom,
epsilon=0.015707*eV))
potentialSet.addPotential(SuttonChenPotential('Al', 'Al',
r_cut=8.1*Angstrom,
c=16.399,
m=6.0,
n=7.0,
sigma=4.05*Angstrom,
epsilon=0.033147*eV))
# Add the Sutton-Chen potential between different types to the potential set
potentialSet.addPotential(SuttonChenPotential('Ni', 'Al',
r_cut=7.57*Angstrom,
c=39.432000,
m=6.000000,
n=8.000000,
sigma=3.785*Angstrom,
epsilon=0.0228175355593*eV))
calculator = TremoloXCalculator(parameters=potentialSet)
bulk_configuration.setCalculator(calculator)
Notes¶
The SuttonChenPotential is a many-body potential primarily designed for metals and alloys [1].
The potential energy is defined as
with
If the Sutton-Chen potential is supposed to act between different ParticleType, the parameters epsilon
, sigma
, m
, and n
should be chosen according to the native Sutton-Chen combination rules
and
as done in the example script above.
The c
parameter does not have an effect in this case.