COMBSelfEnergyCorrectionShan¶
- class COMBSelfEnergyCorrectionShan(particleType1, particleType2, a, b, r_cut=None)¶
Constructor of the potential.
Note: COMBParticle 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.
a (PhysicalQuantity of length**4 * charge) – Potential parameter.
b (PhysicalQuantity of type length**4) – Potential parameter.
r_cut (PhysicalQuantity of type length) – The cutoff radius of this potential.
- 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.