Controlling the pore surface

Hi,

I’m simulating nanoporous organosilicate films formed by Si, O and C atoms only. I want to change the surface chemistry of the pore surfaces and probe the mechanical properties.

I create the pores by mimicking the porogen burnout approach, basically I create the structure with porogen molecules and then delete the porogen molecules before I equilibrate the final structure. Is it possible to delete the atoms surrounding the pores and replace them with a certain type of C based chemical group during the simulation and obtain a nanoporous structure with pore surfaces donated with an organic layer? What kind of strategy should I proceed in? I’m doing non-reactive force potential based simulations and trying figure out a strategy which won’t require me to switch to reactive force potentials.

Thank you,

Karsu Kilic

It might be interesting to use ‘create_atoms’ (or ‘fix deposit’ for during a simulation). For example, you could fill a pore with a number of organic molecules and let them float around until adhering to the pore surface.

Hi,

I'm simulating nanoporous organosilicate films formed by Si, O and C atoms only. I want to change the surface chemistry of the pore surfaces and probe the mechanical properties.

I create the pores by mimicking the porogen burnout approach, basically I create the structure with porogen molecules and then delete the porogen molecules before I equilibrate the final structure. Is it possible to delete the atoms surrounding the pores and replace them with a certain type of C based chemical group during the simulation and obtain a nanoporous structure with pore surfaces donated with an organic layer? What kind of strategy should I proceed in? I'm doing non-reactive force potential based simulations and trying figure out a strategy which won't require me to switch to reactive force potentials.

LAMMPS itself is no molecule/structure editor and thus options to
manipulate a structure are limited. It is better to look into using a
(scriptable) molecule editor or visualization software like pymol or
VMD or avogadro.
or some custom python scripting using LAMMPS python module.

the good news is, that you don't have to create a very realistic
structure when adding/replacing fragments. when you load the resulting
structure/topology into LAMMPS, you can first modify the interaction
model to use a soft pair style for interactions for a very small
potential height and keep the known-to-be-good atoms immobile. now you
can run an MD on the newly added atoms while slowly increasing the
repulsion of the soft potential (either continuously with fix adapt or
just incrementally through short runs and then new pair_coeff
statements). this will un-overlap the structures and create some
reasonable starting geometry. you can then switch to the intended
force field and relax/requilibrate some more and then start production
calculations.

HTH,
     axel.

Hi Karsu

I hesitate to reply with more moltemplate spam. I periodically post spam-like replies telling people to build a DATA file, and point out a list of molecule builders they can use to do it. And I often take care to point out my own program, “moltemplate”, if I think it might be relevant to them.

In your case, I’m too clueless to know enough about the type of material you are trying to build to know if my program would help at all.

If you need to run a physically realistic reactive simulation to prepare a realistic starting geometry of your system, then I presume what you really need is a way to build a starting geometry for that simulation (even if its not the final simulation you intend to run).

If you just need to replacing side groups on the surface with randomly chosen chemical groups (or add random vacancies), this can easily be done with moltemplate using the “new random” command, explained in section 7.8 and 7.9 of the moltemplate manual:
http://moltemplate.org/doc/index.html
Examples from the manual below (for a coarse grained 2D membrane composed of random molecules):

lipid_bilayer_mixture_LR.jpg

lipid_bilayer_vacancies_LR.jpg

You can use other commands to create the bulk (crystalline?) material below the surface (if applicable).

In addition, PACKMOL and moltemplate also can be used to create random mixtures of molecules on a surface, or in 3D. Examples:
http://moltemplate.org/examples/vesicle_Brannigan2005+Bellesia2010.html
http://moltemplate.org/visual_examples.html#martini_DPPC_bilayer

As Axel said, for more flexibility, try the python interface. The only issue is that I’m not sure how much functionality the python interface currently has for adding molecules and controlling their position and bond connectivity (yet). (I wish it did.) But python is a general programming language, and moltemplate is not. (Alas, moltemplate functionality is not yet available from within python. Unfortunately, you currently have to run moltemplate through the bash shell. Perhaps this will change one day.)

I don’t know if it’s relevant, but when I need complicated geometries, I currently use the clumsy procedure of writing a python script to create a file containing a list of moltemplate commands which explicitly define the positions and rotations of all the molecules and other building blocks in the system. (Moltemplate will allow you to customize position and orientation of individual molecules.) Then I run moltemplate on that file. Unfortunately, building a system like this with more than a million particles will take hours (but it works). Depending on your system size, perhaps that’s not an issue.

Other molecule builders for LAMMPS are listed here:
https://lammps.sandia.gov/prepost.html

Andrew