MeamElementPotential¶
- class MeamElementPotential(particleType, latticeType, nearestNeighbors, alpha, beta, referenceDistance, referenceEnergy, scalingFactor, weightingFactors, rho, gamma, attrac=0.0, repuls=0.0, nn2=False, zbl=True)¶
Constructor of the potential.
- Parameters:
particleType (ParticleType or ParticleIdentifier) – Identifier of the particle type.
latticeType (str) – Type of the reference structure.
nearestNeighbors (int) – Number of nearest neighbors in the reference structure.
alpha (float) – Exponential decay factor for pair potential.
beta (sequence of float) – Exponential decay factors for the background electron densities. Must be of length four.
referenceDistance (PhysicalQuantity of type length) – The nearest neighbor distance in the reference structure.
referenceEnergy (PhysicalQuantity of type energy) – The cohesive energy.
scalingFactor (float) – Scaling Factor in embedding function.
weightingFactors (sequence of float) – Weighting factors in the reference configuration. Must be of length three.
rho (float) – Element-dependent density scaling.
gamma (int) – Choice for gamma function.
attrac (float) – The attractive factor in the pair potential.
repuls (float) – The repulsive factor in the pair potential.
nn2 (bool) – Triggers second nearest neighbor formulation for symmetric pair.
zbl (bool) – Toggles zbl blending for small distances.
- 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 MEAM potential for a SiO2 quartz crystal by adding particle types and interaction functions to the TremoloXPotentialSet.
# Set up lattice
vector_a = [5.4306, 0.0, 0.0]*Angstrom
vector_b = [0.0, 5.4306, 0.0]*Angstrom
vector_c = [0.0, 0.0, 5.4306]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)
# Define elements
elements = [Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
Silicon]
# Define coordinates
fractional_coordinates = [[ 0. , 0. , 0. ],
[ 0.25, 0.25, 0.25],
[ 0.5 , 0.5 , 0. ],
[ 0.75, 0.75, 0.25],
[ 0.5 , 0. , 0.5 ],
[ 0.75, 0.25, 0.75],
[ 0. , 0.5 , 0.5 ],
[ 0.25, 0.75, 0.75]]
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
fractional_coordinates=fractional_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
potentialSet = TremoloXPotentialSet(name='MEAM_Si_2007')
potentialSet.addParticleType(ParticleType(
symbol='Si',
mass=28.0855*atomic_mass_unit,
charge=None,
sigma=None,
sigma14=None,
epsilon=None,
epsilon14=None,
atomicNumber=14,
tags=[],
))
_option = MeamGlobalOption(
delr=0.1*Angstrom,
erose=2,
wf_mixing=2,
r_cut=4.5*Angstrom,
augment_1st=0.0,
embedding_negative=False,
density_scaling=False,
)
potentialSet.addOption(_option)
_potential = MeamElementPotential(
particleType=ParticleIdentifier('Si', []),
latticeType='dia',
nearestNeighbors=4,
alpha=4.89890486934,
beta=[3.55, 2.5, 0.0, 7.5, ],
referenceDistance=2.35*Angstrom,
referenceEnergy=4.63*eV,
scalingFactor=0.58,
weightingFactors=[1.8, 5.25, -2.61, ],
rho=1.0,
gamma=3,
attrac=0.0,
repuls=0.0,
nn2=True,
zbl=False,
)
potentialSet.addPotential(_potential)
_potential = MeamScreeningPotential(
particleType1=ParticleIdentifier('Si', []),
particleType2=ParticleIdentifier('Si', []),
particleType3=ParticleIdentifier('Si', []),
Cmin=1.41,
Cmax=2.8,
)
potentialSet.addPotential(_potential)
calculator = TremoloXCalculator(parameters=potentialSet)
calculator.setVerletListsDelta(0.25*Angstrom)
bulk_configuration.setCalculator(calculator)
bulk_configuration.update()
See also Notes on MEAM Potential.