COMB3Particle

class COMB3Particle(particleType, l, mu, m, n, QL, QU, DL, DU, nB, J1, J2, J3, J4, q0, xi, Z, P, uniformCharge=False)

Constructor of the potential.

Parameters:
  • particleType (ParticleType or ParticleIdentifier) – Identifier of the particle type

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

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

  • m (int) – Potential parameter.

  • n (float) – Potential parameter.

  • QL (PhysicalQuantity of type charge) – Potential parameter.

  • QU (PhysicalQuantity of type charge) – Potential parameter.

  • DL (PhysicalQuantity of type length) – Potential parameter.

  • DU (PhysicalQuantity of type length) – Potential parameter.

  • nB (even int) – Potential parameter.

  • J1 (PhysicalQuantity of type energy / charge) – Potential parameter.

  • J2 (PhysicalQuantity of type energy / charge**2) – Potential parameter.

  • J3 (PhysicalQuantity of type energy / charge**3) – Potential parameter.

  • J4 (PhysicalQuantity of type energy / charge**4) – Potential parameter.

  • q0 (PhysicalQuantity of type charge) – Potential parameter.

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

  • Z (PhysicalQuantity of type charge) – Potential parameter.

  • P (PhysicalQuantity of type length**3) – Potential parameter.

  • uniformCharge (bool) – Specifies whether all particles of this type must have the same charge.

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 COMB3 potential for a TiN rocksalt crystal by adding particle types and interaction functions to the TremoloXPotentialSet.

# Set up a Titanium-Nitride cell

vector_a = [4.235, 0.0, 0.0]*Angstrom
vector_b = [0.0, 4.235, 0.0]*Angstrom
vector_c = [0.0, 0.0, 4.235]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
elements = [Titanium, Nitrogen, Titanium, Nitrogen, Titanium, Nitrogen,
            Titanium, Nitrogen]

# Define coordinates
fractional_coordinates = [[ 0. ,  0. ,  0. ],
                          [ 0.5,  0.5,  0.5],
                          [ 0.5,  0.5,  0. ],
                          [ 0. ,  0. ,  0.5],
                          [ 0.5,  0. ,  0.5],
                          [ 0. ,  0.5,  0. ],
                          [ 0. ,  0.5,  0.5],
                          [ 0.5,  0. ,  0. ]]

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

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

potentialSet = TremoloXPotentialSet(name = 'COMB_NTi_2014')
potentialSet.addParticleType(ParticleType(
    symbol='N',
    mass=14.0067 * atomic_mass_unit,
    atomicNumber=7
))
potentialSet.addParticleType(ParticleType(
    symbol='Ti',
    mass=47.867 * atomic_mass_unit,
    atomicNumber=22
))

option = COMBCoulombOption(alpha = 0.2*1/Angstrom, r_cut = 11.0*Angstrom)
potentialSet.addOption(option)
potential = COMB3Particle(
    particleType = 'Ti',
    l = 2.136011*1/Angstrom,
    mu = 1.178831*1/Angstrom,
    m = 1,
    n = 0.566048,
    QL = -4.0*elementary_charge,
    QU = 4.0*elementary_charge,
    DL = 0.005*Angstrom,
    DU = -0.5*Angstrom,
    nB = 10,
    J1 = 3.095768*eV/elementary_charge,
    J2 = 4.23028*eV/elementary_charge**2,
    J3 = -1.039759*eV/elementary_charge**3,
    J4 = 0.357428*eV/elementary_charge**4,
    q0 = 0.0*elementary_charge,
    xi = 0.724352*1/Angstrom,
    Z = 3.022932*elementary_charge,
    P = 0.335*Angstrom**3,
    uniformCharge = False
)
potentialSet.addPotential(potential)
potential = COMB3Particle(
    particleType = 'N',
    l = 5.218037*1/Angstrom,
    mu = 3.738549*1/Angstrom,
    m = 1,
    n = 1.0,
    QL = -2.0*elementary_charge,
    QU = 6.0*elementary_charge,
    DL = 0.007664*Angstrom,
    DU = -1.213951*Angstrom,
    nB = 10,
    J1 = 6.59963*eV/elementary_charge,
    J2 = 5.955097*eV/elementary_charge**2,
    J3 = 0.760433*eV/elementary_charge**3,
    J4 = 0.009388*eV/elementary_charge**4,
    q0 = 0.0*elementary_charge,
    xi = 1.371794*1/Angstrom,
    Z = -1.53917*elementary_charge,
    P = 0.5167863369*Angstrom**3,
    uniformCharge = False
)
potentialSet.addPotential(potential)
potential = COMB3PairPotential(
    particleType1 = 'Ti',
    particleType2 = 'Ti',
    A = 516.5873248*eV,
    B0 = 117.0421345*eV,
    B1 = 0.0*eV,
    B2 = 0.0*eV,
    l = 2.136011*1/Angstrom,
    mu0 = 1.178831*1/Angstrom,
    mu1 = 0.0*1/Angstrom,
    mu2 = 0.0*1/Angstrom,
    beta = 0.545629*1/Angstrom,
    b0 = 0.077183,
    b1 = 0.146606,
    b2 = 0.226674,
    b3 = 0.093054,
    b4 = -0.130433,
    b5 = -0.065549,
    b6 = 0.5504,
    c0 = -0.012318,
    c1 = 0.175079,
    c2 = 0.066085,
    c3 = -0.076109,
    N = 1.0,
    r_i = 3.9*Angstrom,
    r_cut = 4.1*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3PairPotential(
    particleType1 = 'N',
    particleType2 = 'N',
    A = 7654.972656*eV,
    B0 = 2102.295654*eV,
    B1 = 0.0*eV,
    B2 = 0.0*eV,
    l = 5.218037*1/Angstrom,
    mu0 = 3.738549*1/Angstrom,
    mu1 = 0.0*1/Angstrom,
    mu2 = 0.0*1/Angstrom,
    beta = 3.738549*1/Angstrom,
    b0 = 1.691325,
    b1 = 0.283832,
    b2 = 0.698596,
    b3 = 1.724015,
    b4 = 0.812665,
    b5 = 0.0,
    b6 = 0.0,
    c0 = 0.0,
    c1 = 0.0,
    c2 = 0.0,
    c3 = 0.0,
    N = 1.0,
    r_i = 2.0*Angstrom,
    r_cut = 2.3*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3PairPotential(
    particleType1 = 'Ti',
    particleType2 = 'N',
    A = 1661.765935*eV,
    B0 = 104.805547*eV,
    B1 = 135.992262*eV,
    B2 = 30.112007*eV,
    l = 3.17815*1/Angstrom,
    mu0 = 2.453223*1/Angstrom,
    mu1 = 1.766886*1/Angstrom,
    mu2 = 2.439896*1/Angstrom,
    beta = 2.297286*1/Angstrom,
    b0 = 0.225186,
    b1 = 0.269113,
    b2 = 0.261613,
    b3 = 0.033596,
    b4 = -0.113159,
    b5 = 2.2e-05,
    b6 = 3e-06,
    c0 = -0.032039,
    c1 = -0.082354,
    c2 = 0.024479,
    c3 = -0.073187,
    N = 1.0,
    r_i = 2.6*Angstrom,
    r_cut = 3.0*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3PairPotential(
    particleType1 = 'N',
    particleType2 = 'Ti',
    A = 1661.765935*eV,
    B0 = 104.805547*eV,
    B1 = 135.992262*eV,
    B2 = 30.112007*eV,
    l = 3.17815*1/Angstrom,
    mu0 = 2.453223*1/Angstrom,
    mu1 = 1.766886*1/Angstrom,
    mu2 = 2.439896*1/Angstrom,
    beta = 5.066036*1/Angstrom,
    b0 = 0.024877,
    b1 = -0.103268,
    b2 = 0.263335,
    b3 = 0.412664,
    b4 = 0.017287,
    b5 = 2.3e-05,
    b6 = 0.0,
    c0 = -0.056517,
    c1 = -0.036331,
    c2 = 0.007137,
    c3 = 0.06462,
    N = 1.0,
    r_i = 2.6*Angstrom,
    r_cut = 3.0*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3FieldCorrection(
    particleType1 = 'Ti',
    particleType2 = 'Ti',
    Pchi = 0.0253919125995*Angstrom**2*elementary_charge,
    PJ = 0.0531158828648*Angstrom**4,
    r_i = 10.0*Angstrom,
    r_cut = 11.0*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3FieldCorrection(
    particleType1 = 'Ti',
    particleType2 = 'N',
    Pchi = 0.0253919125995*Angstrom**2*elementary_charge,
    PJ = 0.0531158828648*Angstrom**4,
    r_i = 10.0*Angstrom,
    r_cut = 11.0*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3FieldCorrection(
    particleType1 = 'N',
    particleType2 = 'Ti',
    Pchi = 0.0728019460398*Angstrom**2*elementary_charge,
    PJ = 0.271659870233*Angstrom**4,
    r_i = 10.0*Angstrom,
    r_cut = 11.0*Angstrom
)
potentialSet.addPotential(potential)
potential = COMB3FieldCorrection(
    particleType1 = 'N',
    particleType2 = 'N',
    Pchi = 0.0728019460398*Angstrom**2*elementary_charge,
    PJ = 0.271659870233*Angstrom**4,
    r_i = 10.0*Angstrom,
    r_cut = 11.0*Angstrom
)
potentialSet.addPotential(potential)
potential = AngleCorrection6Potential(
    particleType1 = 'Ti',
    particleType2 = 'Ti',
    particleType3 = 'Ti',
    k0 = 0.0*eV,
    k1 = 0.043561*eV,
    k2 = 0.0*eV,
    k3 = 0.049195*eV,
    k4 = 0.0*eV,
    k5 = 0.0*eV,
    k6 = 0.0*eV,
    costheta0 = 0.0,
    r_i = 3.9*Angstrom,
    r_cut = 4.1*Angstrom
)
potentialSet.addPotential(potential)
calculator = TremoloXCalculator(parameters=potentialSet)
calculator.setInternalOrdering("default")

bulk_configuration.setCalculator(calculator)

See also COMB3 Potential Notes.