Insert the Molecules in a variable position

GROMACS version: 2020.2
GROMACS modification: No

Hello everybody,

I am simulating the deposition of C60 molecules onto a graphene sheet. I am inserting the C60 molecules using gmx-insert. I am trying to insert the molecules in a layers instead of random insertion. So, I provided a position .dat file with the initial coordinate and used -dr option to randomize the x and y coordinate all over the box and allowed for 1nm displacement in the z direction. I am inserting 4000 molecule. Sometimes I need to insert the molecule in a certain position with respect to the previous inserted molecule position (for example the same x and y for the last molecule but different z). I failed to do that, because each molecule is inserted with respect to the position .dat file with the allowed displacement and hence, complete layers are formed along the x-y plane instead of depositing the molecules above each other along the z direction. What I thought might be a solution is to insert the molecules with respect to the previous molecules position.

What I want to do is similar to the attached image (picture number 2) (at some positions, you might have molecules up to 3nm in z direction before a complete layer along the x-y plane is formed. I failed to do that using the randomize option -dr because every time, it will randomize the x and y as long as it is possible instead of inserting the molecules vertically (in the z direction).

I have attached what I have achieved in my trial (picture 1), showing how the molecules are inserted along the x-y plane before the z, and what I want to achieve (picture 2) where molecules were able to be inserted in the z direction before completing the x-y layer.

Is it possible to extract the coordinates for the center of mass of the last inserted molecule (so that I can write it in my .dat file and use it as a reference for the next molecule insertion) ?

is it possible to insert the molecule in a position with respect to the last inserted molecule ?

If both options are not possible, is there any suggestion on how can I do that ?

Picture number 2 is from the paper: Morphology of a Bulk Heterojunction Photovoltaic Cell with Low Donor Concentration
By: Thomas Lee, Audrey Sanzogni, Ningxin Zhangzhou, Paul L. Burn and Alan E. Mark

Please let me know if anything is unclear.


You will need to make your own custom script to do that type of thing.

Another program to try out with inserting molecules in particular configurations is packmol, it has lots of features and options.


You can do this even without gmx-insert writing a simple script. Suppose you want to place C60s in hcp structure at the surface, generate hcp lattice and place C60s to those points. If you already prepared a layer of C60s on the surface using gmx-insert, & if you face problem in putting the second layer, do that in VMD, just select C60s, and use move/replicate command to get another layer in z.

1 Like