TersoffMixitPotential

class TersoffMixitPotential(particleType1, particleType2, alpha, omega, chi, chiR, m)

Constructor of the potential.

Note: TersoffSingleTypePotentials must be added for BOTH particle types!

Parameters:
  • particleType1 (ParticleType or ParticleIdentifier) – Identifier of the first particle type.

  • particleType2 (ParticleType or ParticleIdentifier) – Identifier of the second particle type.

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

  • omega (float) – Potential parameter.

  • chi (float) – Potential parameter.

  • chiR (float) – Potential parameter.

  • m (int) – 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.