Stiwe2Potential¶
- class Stiwe2Potential(particleType1, particleType2, p, A, B, gamma, 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.
p (float) – Potential parameter.
A (PhysicalQuantity of type energy) – Potential parameter.
B (PhysicalQuantity of type length**p) – Potential parameter.
gamma (PhysicalQuantity of type length) – Potential parameter.
r_cut (PhysicalQuantity of type length) – Cutoff radius
- 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 potential for silicon by adding particle types and interaction functions to the TremoloXPotentialSet.
# -------------------------------------------------------------
# Bulk silicon configuration
# -------------------------------------------------------------
# Set up lattice
lattice = FaceCenteredCubic(5.4306*Angstrom)
# Define elements
elements = [Silicon, Silicon]
# Define coordinates
fractional_coordinates = [[ 0.00, 0.00, 0.00],
[ 0.25, 0.25, 0.25]]
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
# Create a new potential set
potentialSet = TremoloXPotentialSet(name = 'StillingerWeber_Si_1985')
# Add the particle type to the potential set
potentialSet.addParticleType(ParticleType(symbol='Si', mass=28.0855*atomic_mass_unit))
# Add the Stillinger-Weber two-body potential to the potential set
potentialSet.addPotential(Stiwe2Potential('Si', 'Si',
r_cut=3.77118*Angstrom,
p=4.0,
A = 15.2855528754*eV,
B = 11.6031922834*Ang**4,
gamma = 2.0951*Angstrom))
# Add the Stillinger-Weber three-body potential to the potential set
potentialSet.addPotential(Stiwe3Potential('Si', 'Si', 'Si',
gamma0=2.51412*Angstrom,
gamma1=2.51412*Angstrom,
l=45.5343*eV,
cosTheta0=-0.333333333333,
type=1,
r_0=3.77118*Angstrom,
r_1=3.77118*Angstrom,
r_13=-1.0*Angstrom))
# Create the TremoloX calculator from the potential set
calculator = TremoloXCalculator(parameters=potentialSet)
Notes¶
The Stiwe2Potential represents the two-body contribution of the Stillinger-Weber potential [1].
The Stillinger-Weber potential can be written as:
The two-body part is calculated as
For a more general form of the two-body term, see GeneralStiwe2Potential.
For the three-body part two types are available, which can be selected by the
type
argument.
Type 1:
If not specified otherwise, \(\alpha\) is set to 2, as in the original Stillinger-Weber potential [1].
Type 2: