Reuse force field atom types and charges¶
Reuse the force field atom types and charges assigned in a previous AMS computation.
Example usage: (Download reuse_forcefieldparams.py
)
#!/usr/bin/env amspython
import sys
from scm.plams import AMSJob, Settings
# Read from a previous result file
path = sys.argv[1]
job = AMSJob.load_external(path)
charges, types, patch = job.results.get_forcefield_params()
print(charges)
print(types)
print(patch)
# Add the atom types and charges to the molecule
assert job.molecule is not None
mol = job.molecule.copy()
for i, at in enumerate(mol.atoms):
at.properties.ForceField.Charge = charges[i]
at.properties.ForceField.Type = types[i]
# Write a patch file
with open("patch.dat", "w") as outfile:
outfile.write(str(patch))
outfile.close()
# Set up new job settings
settings = Settings()
settings.input.ForceField.Type = "GAFF"
settings.input.ForceField.ForceFieldPatchFile = "patch.dat"
settings.input.ams.Task = "SinglePoint"
# Create the new job, and write the input file
job = AMSJob(molecule=mol, settings=settings)
text = job.get_input()
with open("ams.in", "w") as outfile:
outfile.write(text)
outfile.close()