TersoffSingleTypePotential¶
- class TersoffSingleTypePotential(particleType, A, B, R, S, l, mu, alpha, beta, omega, chi, chiR, m, n, c, d, h)¶
Constructor of the potential.
- Parameters:
particleType (ParticleType or ParticleIdentifier) – Identifier of the particle type
A (PhysicalQuantity of type energy) – Potential parameter.
B (PhysicalQuantity of type energy) – Potential parameter.
R (PhysicalQuantity of type length) – Potential parameter.
S (PhysicalQuantity of type length) – Potential parameter.
l (PhysicalQuantity of type length**-1) – Potential parameter.
mu (PhysicalQuantity of type length**-1) – Potential parameter.
alpha (PhysicalQuantity of type length**-1) – Potential parameter.
beta (float) – Potential parameter.
omega (float) – Potential parameter.
chi (float) – Potential parameter.
chiR (float) – Potential parameter.
m (int) – Potential parameter.
n (float) – Potential parameter.
c (float) – Potential parameter.
d (float) – Potential parameter.
h (float) – 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 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 Tersoff potential for an ethane molecule by adding particle types and interaction functions to the TremoloXPotentialSet.
# -------------------------------------------------------------
# Bulk configuration of a ethane molecule in a large supercell
# -------------------------------------------------------------
# Set up lattice
vector_a = [25.0, 0.0, 0.0]*Angstrom
vector_b = [0.0, 25.0, 0.0]*Angstrom
vector_c = [0.0, 0.0, 25.0]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)
# Define elements
elements = [Carbon, Carbon, Hydrogen, Hydrogen, Hydrogen, Hydrogen, Hydrogen,
Hydrogen]
# Define coordinates
fractional_coordinates = [[ 0.46713495, 0.49407606, 0.50000000],
[ 0.52151251, 0.52578179, 0.50000000],
[ 0.47593606, 0.44625342, 0.50000000],
[ 0.44187846, 0.50582697, 0.54086237],
[ 0.44187846, 0.50582697, 0.45913763],
[ 0.55812154, 0.49417303, 0.50000000],
[ 0.52406394, 0.55374658, 0.45913763],
[ 0.52406394, 0.55374658, 0.54086237]]
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
# Create a new potential set
potentialSet = TremoloXPotentialSet(name='Tersoff_CH_2010')
# Add the particle types to the potential set
potentialSet.addParticleType(ParticleType(symbol='H',
mass=1.00794 * atomic_mass_unit))
potentialSet.addParticleType(ParticleType(symbol='C',
mass=12.0107 * atomic_mass_unit))
# Add the Tersoff potential components to the potential set
potentialSet.addPotential(TersoffSingleTypePotential('H',
A=80.070348*eV,
B=31.379342*eV,
R=1.1*Angstrom,
S=1.7*Angstrom,
l=4.207524/Angstrom,
mu=1.795631/Angstrom,
alpha=0.0/Angstrom,
beta=1.0,
omega=12.33,
chi=1.0,
chiR=1.0,
m=0,
n=1.0,
c=0.0,
d=1.0,
h=-1.0))
potentialSet.addPotential(TersoffSingleTypePotential('C',
A=1393.6*eV,
B=430.0*eV,
R=1.8*Angstrom,
S=2.1*Angstrom,
l=3.4879/Angstrom,
mu=2.2119/Angstrom,
alpha=0.0/Angstrom,
beta=0.0,
omega=1.0,
chi=1.0,
chiR=1.0,
m=0,
n=0.72751,
c=38049.0,
d=4.3484,
h=-0.93))
potentialSet.addPotential(TersoffDiagPotential('C', 'H',
A=297.485465*eV,
B=96.824546*eV,
l=3.601111/Angstrom,
mu=2.129864/Angstrom,
R=1.3*Angstrom,
S=1.8*Angstrom,
chiR=1.0,
chi=1.0,
omega=0.000208,
alpha=4.0/Angstrom,
m=1))
potentialSet.addPotential(
TersoffTriplePotential('H', 'C', 'C', omega=12.33, alpha=4.0/Angstrom, m=1)
)
potentialSet.addPotential(
TersoffTriplePotential('C', 'C', 'C', omega=0.000208, alpha=0.0/Angstrom, m=0)
)
potentialSet.addPotential(
TersoffTriplePotential('H', 'H', 'H', omega=12.33, alpha=4.0/Angstrom, m=1)
)
potentialSet.addPotential(
TersoffTriplePotential('H', 'C', 'H', omega=2.71334, alpha=4.0/Angstrom, m=1)
)
potentialSet.addPotential(
TersoffTriplePotential('C', 'C', 'H', omega=7.1e-05, alpha=4.0/Angstrom, m=1)
)
potentialSet.addPotential(
TersoffTriplePotential('C', 'H', 'H', omega=0.000613, alpha=4.0/Angstrom, m=1)
)
potentialSet.addPotential(
TersoffTriplePotential('C', 'H', 'C', omega=0.000208, alpha=4.0/Angstrom, m=1)
)
potentialSet.addPotential(
TersoffTriplePotential('H', 'H', 'C', omega=56.02937, alpha=4.0/Angstrom, m=1)
)
calculator = TremoloXCalculator(parameters=potentialSet)
bulk_configuration.setCalculator(calculator)
See also Notes on Tersoff Potentials.