This notebook applies a SMIRNOFF FFXML involving partial bond orders (reducing the number of parameters) to assign bond parameters for benzene.
# Import stuff we need
from openff.toolkit.typing.engines.smirnoff import *
import openeye.oechem as oechem
import openeye.oeiupac as oeiupac
import openeye.oeomega as oeomega
# NBVAL_SKIP
# Load our force field from this directory. Use of partial bond orders here means there is only one [#6X3]~[#6X3]
# bond parameter line rather than three which otherwise would be required
ffxml = 'Frosst_AlkEthOH_extracarbons.offxml'
ff = ForceField(ffxml)
# Initialize benzene as a test molecule
mol = oechem.OEMol()
oeiupac.OEParseIUPACName(mol, 'benzene')
omega = oeomega.OEOmega()
omega(mol)
oechem.OETriposAtomNames(mol)
# NBVAL_SKIP
topology = generateTopologyFromOEMol(mol)
system = ff.createSystem(topology, [mol], chargeMethod = 'OECharges_AM1BCCSym', verbose = True)
Applying oechem.oequacpac.OEAssignPartialCharges with specified charge method "OECharges_AM1BCCSym". HarmonicBondGenerator: [#6X4:1]-[#6X4:2] : 0 matches [#6X4:1]-[#1:2] : 0 matches [#8:1]~[#1:2] : 0 matches [#6X4:1]-[O&X2&H1:2] : 0 matches [#6X4:1]-[O&X2&H0:2] : 0 matches [#8X2:1]-[#1:2] : 0 matches [#6X3:1]!#[#6X3:2] : 12 matches [#6X3:1]-[#1:2] : 6 matches 12 bonds added (0 skipped due to constraints) HarmonicAngleGenerator: [a,A:1]-[#6X4:2]-[a,A:3] : 0 matches [#1:1]-[#6X4:2]-[#1:3] : 0 matches [#6X4:1]-[#6X4:2]-[#6X4:3] : 0 matches [#8X2:1]-[#6X4:2]-[#8X2:3] : 0 matches [#6X4:1]-[#8X2:2]-[#1:3] : 0 matches [#6X4:1]-[#8X2:2]-[#6X4:3] : 0 matches [*:1]~[#6X3:2]~[*:3] : 36 matches [#1:1]-[#6X3:2]~[*:3] : 12 matches [#1:1]-[#6X3:2]-[#1:3] : 0 matches 18 angles added (0 skipped due to constraints) PeriodicTorsionGenerator Propers: [a,A:1]-[#6X4:2]-[#6X4:3]-[a,A:4] : 0 matches [a,A:1]-[#6X4:2]-[#8X2:3]-[#1:4] : 0 matches [a,A:1]-[#6X4:2]-[#8X2:3]-[!#1:4] : 0 matches [#1:1]-[#6X4:2]-[#6X4:3]-[#1:4] : 0 matches [#1:1]-[#6X4:2]-[#6X4:3]-[#6X4:4] : 0 matches [#6X4:1]-[#6X4:2]-[#8X2:3]-[#1:4] : 0 matches [#6X4:1]-[#6X4:2]-[#6X4:3]-[#6X4:4] : 0 matches [#6X4:1]-[#6X4:2]-[#8X2:3]-[#6X4:4] : 0 matches [#6X4:1]-[#8X2:2]-[#6X4:3]-[O&X2&H0:4] : 0 matches [#8X2:1]-[#6X4:2]-[#6X4:3]-[#8X2:4] : 0 matches [#8X2:1]-[#6X4:2]-[#6X4:3]-[#1:4] : 0 matches [#1:1]-[#6X4:2]-[#6X4:3]-[OX2:4] : 0 matches [*:1]~[#6X3:2]-[#6X4:3]~[*:4] : 0 matches [#1:1]-[#6X4:2]-[#6X3:3]=[#6X3:4] : 0 matches [*:1]~[#6X3:2]-[#6X3:3]~[*:4] : 0 matches [*:1]~[#6X3:2]:[#6X3:3]~[*:4] : 48 matches [*:1]-[#6X3:2]=[#6X3:3]-[*:4] : 0 matches PeriodicTorsionGenerator Impropers: [a,A:1]~[#6X3:2]([a,A:3])~[OX1:4] : 0 matches 24 torsions added 0 impropers added, each applied in a six-fold manner NonbondedForceGenerator: [#1:1] : 6 matches [$([#1]-C):1] : 0 matches [$([#1]-C-[#7,#8,F,#16,Cl,Br]):1] : 0 matches [$([#1]-C(-[#7,#8,F,#16,Cl,Br])-[#7,#8,F,#16,Cl,Br]):1] : 0 matches [$([#1]-C(-[#7,#8,F,#16,Cl,Br])(-[#7,#8,F,#16,Cl,Br])-[#7,#8,F,#16,Cl,Br]):1] : 0 matches [#1$(*-[#8]):1] : 0 matches [#6:1] : 6 matches [#6X4:1] : 0 matches [#8:1] : 0 matches [#8X2:1] : 0 matches [#8X2+0$(*-[#1]):1] : 0 matches