COMBMixitPotential

class COMBMixitPotential(particleType1, particleType2, K=None, r0=None)

Constructor of the potential.

Note: COMBParticle must be added for BOTH particle types!

Parameters:
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 COMB potential for a SiO2 quartz crystal by adding particle types and interaction functions to the TremoloXPotentialSet.

# -------------------------------------------------------------
# Set up a SiO2 Quartz crystal
# -------------------------------------------------------------

# Set up lattice
lattice = Hexagonal(4.916*Angstrom, 5.4054*Angstrom)

# Define elements
elements = [Silicon, Silicon, Silicon, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen]

# Define coordinates
fractional_coordinates = [[ 0.4697,  0.0000,  0.0000    ],
                          [ 0.0000,  0.4697,  0.66666667],
                          [ 0.5303,  0.5303,  0.33333333],
                          [ 0.4135,  0.2669,  0.1191    ],
                          [ 0.2669,  0.4135,  0.547567  ],
                          [ 0.7331,  0.1466,  0.785767  ],
                          [ 0.5865,  0.8534,  0.214233  ],
                          [ 0.8534,  0.5865,  0.452433  ],
                          [ 0.1466,  0.7331,  0.8809    ]]

# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
    )

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------

potentialSet = TremoloXPotentialSet(name='COMB_SiO')

# Add particle types for Si and O.
potentialSet.addParticleType(ParticleType(symbol='Si',
                                          mass=28.0855*atomic_mass_unit,
                                          atomicNumber=14))
potentialSet.addParticleType(ParticleType(symbol='O',
                                          mass=15.9994*atomic_mass_unit,
                                          atomicNumber=8))

# Add COMB potential for Si.
potential = COMBSingleTypePotential(particleType='Si',
                                    A = 1830.81*eV,
                                    B = 471.17*eV,
                                    R = 2.6*Angstrom,
                                    S = 3.0*Angstrom,
                                    l = 2.4799*1/Angstrom,
                                    mu = 1.7322*1/Angstrom,
                                    beta = 1.0999e-06,
                                    m = 3,
                                    n = 0.78734,
                                    c = 100390.0,
                                    d = 16.218,
                                    h = -0.59826,
                                    QL = -4.0,
                                    QU = 4.0,
                                    DL = 1.7982*Angstrom,
                                    DU = -1.7094*Angstrom,
                                    nB = 10,
                                    J1 = -0.3*eV/elementary_charge,
                                    J2 = -2.2*eV/elementary_charge**2,
                                    J3 = -1.25*eV/elementary_charge**3,
                                    J4 = 2.53*eV/elementary_charge**4,
                                    q0 = 0.6112*elementary_charge,
                                    uniformCharge = False)
potentialSet.addPotential(potential)

# Add COMB potential for O.
potential = COMBSingleTypePotential(particleType = 'O',
                                    A = 3326.7*eV,
                                    B = 260.89*eV,
                                    R = 2.6*Angstrom,
                                    S = 3.0*Angstrom,
                                    l = 5.36*1/Angstrom,
                                    mu = 2.68*1/Angstrom,
                                    beta = 2.0,
                                    m = 1,
                                    n = 1.0,
                                    c = 6.6,
                                    d = 1,
                                    h = -0.229,
                                    QL = -1.8349,
                                    QU = 5.5046,
                                    DL = 0.00148*Angstrom,
                                    DU = -0.00112*Angstrom,
                                    nB = 10,
                                    J1 = 12.006*eV/elementary_charge,
                                    J2 = 10.5205*eV/elementary_charge**2,
                                    J3 = 0.0*eV/elementary_charge**3,
                                    J4 = 0.0*eV/elementary_charge**4,
                                    q0 = 0.0*elementary_charge,
                                    uniformCharge = False)
potentialSet.addPotential(potential)

# Combination rules between Si and O.
potential = COMBMixitPotential(particleType1 = 'O',
                               particleType2 = 'Si',
                               K = 20.0,
                               r0 = 1.65*Angstrom)
potentialSet.addPotential(potential)

# Three-body-terms.
potential = COMBTriplePotential(particleType1 = 'Si',
                                particleType2 = 'O',
                                particleType3 = 'O',
                                cosTheta = -0.333313248,
                                K0 = 3.16666666667*eV,
                                K1 = 0.0*eV,
                                K2 = 6.33333333333*eV,
                                K3 = 0.0*eV,
                                K4 = 0.0*eV,
                                K5 = 0.0*eV,
                                K6 = 0.0*eV)
potentialSet.addPotential(potential)
potential = COMBTriplePotential(particleType1 = 'O',
                                particleType2 = 'Si',
                                particleType3 = 'Si',
                                cosTheta = -0.806238149,
                                K0 = 1.5*eV,
                                K1 = 0.0*eV,
                                K2 = 3.0*eV,
                                K3 = 0.0*eV,
                                K4 = 0.0*eV,
                                K5 = 0.0*eV,
                                K6 = 0.0*eV)
potentialSet.addPotential(potential)

# Coulomb interactions.
potential = COMBCoulomb(particleType1 = 'Si',
                        particleType2 = 'Si',
                        R = 1.1*Angstrom,
                        S = 5.45*Angstrom,
                        eta = 0.380689)
potentialSet.addPotential(potential)
potential = COMBCoulomb(particleType1 = 'Si',
                        particleType2 = 'O',
                        R = 1.1*Angstrom,
                        S = 5.45*Angstrom,
                        eta = 0.2817839)
potentialSet.addPotential(potential)
potential = COMBCoulomb(particleType1 = 'O',
                        particleType2 = 'O',
                        R = 1.1*Angstrom,
                        S = 5.45*Angstrom,
                        eta = 0.20857489)
potentialSet.addPotential(potential)
calculator = TremoloXCalculator(parameters=potentialSet)

bulk_configuration.setCalculator(calculator)

See also COMB Potential Notes.