ReaxFFPotential

class ReaxFFPotential(file, qeq=None, qeqEps=None, qeqMaxIter=None, lgvdw=None, bond_rcut=None, hbond_rcut=None, thb_bond_rcut=None, thb_bond_rcutsq=None, multiwell=None, strict_bondpairs=None)

Constructor of the potential.

Parameters:
  • file (str) – The name of the file that contains the ReaxFF parameters.
  • qeq (bool) – Flag for switching the charge equilibration (QeQ) on or off.
  • qeqEps (float) – The accuracy of the QeQ method.
  • qeqMaxIter (int) – Maximal number of iterations for the QeQ method.
  • lgvdw (bool) – Flag for switching the LG correction on or off.
  • bond_rcut (PhysicalQuantity of type length) – Potential parameter.
  • hbond_rcut (PhysicalQuantity of type length) – Potential parameter.
  • thb_bond_rcut (PhysicalQuantity of type length) – Potential parameter.
  • thb_bond_rcutsq (PhysicalQuantity of type length**2) – Potential parameter.
  • multiwell (bool) – Potential parameter.
  • strict_bondpairs (bool) – Potential parameter.
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.

setBondCutoff(bond_rcut)

Set the bond cutoff.

Parameters:bond_rcut (PhysicalQuantity of type length) – Potential parameter.
setMaxQeQIterations(qeqMaxIter)

Set the maximal number of iterations during charge equilibration.

Parameters:qeqMaxIter (int) – Maximal number of iterations for the QeQ method.
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.
setQeQEps(qeqEps)

Set the accuracy of the charge equilibration.

Parameters:qeqEps (float) – The accuracy of the QeQ method.
setThbBondCutoff(thb_bond_rcut)

Set the thbond_rcut parameter.

Parameters:thb_bond_rcut (PhysicalQuantity of type length) – Potential parameter.
setThbBondCutoffSq(thb_bond_rcutsq)

Set the thbond_rcutsq parameter.

Parameters:thb_bond_rcutsq (bool) – Potential parameter.
setUseLGCorrection(lgvdw)

Activate or deactivate the LG correction.

Parameters:lgvdw (bool) – Flag for switching the LG correction on or off.
setUseMultiwell(multiwell)

Set the multiwell parameter.

Parameters:multiwell (bool) – Potential parameter.
setUseQeQ(qeq)

Activate or deactivate the charge equilibration.

Parameters:qeq (bool) – Flag for switching the charge equilibration (QeQ) on or off.
setUseStrictBondPairs(strict_bondpairs)

Set the strict_bondpairs parameter.

Parameters:strict_bondpairs (bool) – Potential parameter.
sethBondCutoff(hbond_rcut)

Set the hbond_rcut parameter.

Parameters:hbond_rcut (PhysicalQuantity of type length) – Potential parameter.

Usage Examples

Define a potential for rutile titanium dioxide by adding particle types and interaction functions to the TremoloXPotentialSet.

# -------------------------------------------------------------
# Set up a TiO2 rutile crystal
# -------------------------------------------------------------

# Set up lattice
lattice = SimpleTetragonal(4.593*Angstrom, 2.959*Angstrom)

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

# Define coordinates
fractional_coordinates = [[ 0.0000,  0.0000,  0.0000],
                          [ 0.5000,  0.5000,  0.5000],
                          [ 0.3051,  0.3051,  0.0000],
                          [ 0.6949,  0.6949,  0.0000],
                          [ 0.8051,  0.1949,  0.5000],
                          [ 0.1949,  0.8051,  0.5000]]

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

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

# Create a new potential set
potentialSet = TremoloXPotentialSet(name='ReaxFF_CHONTi_2012')

# Add the particle type to the potential set
potentialSet.addParticleType(ParticleType(symbol='H',
                                          mass=1.00794*atomic_mass_unit))
potentialSet.addParticleType(ParticleType(symbol='O',
                                          mass=15.9994*atomic_mass_unit))
potentialSet.addParticleType(ParticleType(symbol='Ti',
                                          mass=47.867*atomic_mass_unit))

# Add the ReaxFF potential to the potential set
potentialSet.addPotential(ReaxFFPotential(file='ffield.reax.Ti_C_H_O',
                                          qeq=True,
                                          qeqEps=1.000000e-06,
                                          qeqMaxIter=200,
                                          lgvdw=False,
                                          bond_rcut=5.0*Angstrom,
                                          hbond_rcut=7.5*Angstrom,
                                          thb_bond_rcut=0.001000,
                                          thb_bond_rcutsq=0.000010,
                                          multiwell=False,
                                          strict_bondpairs=True))

# Create a new TremoloX calculator from the potential set
calculator = TremoloXCalculator(parameters=potentialSet)

bulk_configuration.setCalculator(calculator)

Notes

The ReaxFFPotential implements the reactive force field (ReaxFF) to describe reactive processes [vDDLGI01].

You can only change the numerical parameters such as cutoff radii, convergence parameters and others. The actual potential parameters are read from a file, specified by the file argument. It is generally suggested to use only the predefined parameter sets.

You should carefully investigate and test whether the chosen ReaxFF potential is suitable for your desired application, as the potential may have been parametrized in a completely different context, even if it supports the same elements.

[vDDLGI01]A. C. T van Duin, S. Dasgupta, F. Lorant, and W. A. Goddard III. ReaxFF: A Reactive Force Field for Hydrocarbons. J. Phys. Chem. A, 105(41):9396–9409, 2001. doi:10.1021/jp004368u.