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.