Terminating an imported structure with a one-site group

Hi Pieter,

Continuing the saga of my efforts to build a (mostly) flexible way of setting up silica nanostructures for some simulations I’d like to do, I have been able to combine EMC and some VMD .tcl scripts to “trim away” the extra silica sites on the surface of my nanostructure after using the EMC carve function and get close to the final structure I’d like. I’ve also been able to use an ITEM EMC section in EMC setup to add an appropriate amount of Na+ ions in the case where my nanoparticle surface has terminal siloxane (Si-O) groups on it, thanks to this helpful thread.

The last thing I think I need to get the system I want is to find a way to terminate the oxygen atoms on my surface with a hydrogen - i.e., to make a hydroxyl group. I am looking at two potential options here: either (1) using the terminate command in an EMC script or (2) trying to treat this like the grafted nanoparticle example with a one-site chain being added. Since it seems like the terminate command works for single atoms, I’m hoping it can be applied here.

I have a setup.esh script that reads in a “cleaned-up” .pdb and .psf of a nanoparticle and types my atoms correctly with my force field, then goes into an ITEM EMC section. It looks a little something like this:

ITEM EMC
retype          = { mode -> random, fraction -> 1, source -> o_x, destination -> o_s, group -> {osur,0}};
clusters        = {
  polymer       -> {
    id          -> hter,
    groups      -> hter,
    nrepeat     -> 1
  },
  graft         -> {
    type        -> o_s,
    connect     -> head,
    polymer     -> hter
  }
};
build           = {
  system        -> {
    geometry    -> {lbox, lbox, lbox, 0, 0, 0},
    temperature -> 298.15
  },
  select        -> {
    progress    -> list,
    frequency   -> 1,
    cluster     -> hter,
    relax       -> {ncycles -> 100, radius -> 2}
  }
};
field           = {
  mode          -> apply,
  check         -> {
    atomistic   -> true,
    charge      -> true
  },
  debug         -> false
};
ITEM END

where I first retype all of the surface sites of o_x to a different type, o_s, then attempt to define a new cluster based on some groups that I had previously defined to get the right atom types,

osur    (*)O[Si](OH)(OH)(OH),1,hter:1
hter:t  H(*),1,osur:1

with the goal being that I will attach a single H atom, defined by the group hter, onto every atom of type o_s. The retyping part of this actually works (!), and retypes the 740 surface oxygens I have here. I think I am missing something in the grafting part, because when EMC goes to build I get a “building 0 sites” output. Any thoughts on how I might be able to do this? Attaching the relevant files for reference.

Thanks so much for all the help on this so far.

Sam

setup.esh (2.4 KB)
silica.prm (1.7 KB)
silica.top (1.7 KB)
test.pdb (461.9 KB)
test.psf (928.8 KB)