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.