[gmx-users] Semipermeable membrane and pull code/flat bottom restraints for large molecules.

Thomas Underwood thomas.underwood at princeton.edu
Tue Dec 19 23:21:27 CET 2017

Dear GMX'ers, I'm wondering if you can give me some advice on setting up a system containing a semipermeable membrane. I have seen a few comments on this before, but I think my system is unique enough to warrant a new post.

I desire to run a system containing water, and many, largely anisotropic molecules (think rigid hexagons). I wish to slowly squeeze the hexagonal particles within a set region of space, and calculate the force required to contain them (i.e. the osmotic/swelling pressure) as function of semipermeable membrane separation.

My current understanding is that this could be achieved several ways:

Firstly, I could use flat-bottomed restraints to limit the z space accessible to all hexagonal molecules for a set period of time. I would then need to adjust the flat-bottomed restraints to decrease the semipermeable membrane separation, and continue/iterate the simulation.

Alternatively, I could attempt to use the pull code to 'pull' all these molecules together. Again, using flat bottomed restraints in z. I would prefer this method, as I could temporally alter the flat-bottomed restraints within one continuous simulation. My issue with the pull code is that it works on the COM of molecules only. I get the impression that if I use the pull code in gromacs, my molecules may flip, such that a lot of the atoms in the hexagonal molecules are on the wrong side of the semipermeable membrane, whilst the COM of each molecule remains within the flat-bottomed restraints. Is there any way to apply the pull code such that it acts on all atoms within a molecule? I.e. if an atom of my molecule is outside the flat-bottomed restraint, then that atom feels the force from said flat-bottom restraint?

Also, I'm assuming that I can work these flat bottom restraints relative to the COM of all of the hexagonal molecules within my system. If I center my system to the COM of all hexagonal molecules prior to commencing my squeeze/simulation, and set comm-grps=HEX (and frequently remove the linear center of mass translation of all hexagonal particles), then my system will remain centered around the said hexagonal molecules as they are squeezed?

Apologies for the convoluted and poorly worded questions, but any help on this topic would be appreciated. Will the pull code work for what I am trying to achieve, or am I better off using all-atom flat-bottom restraints (or even some other code/plumed)?

All the best,


More information about the gromacs.org_gmx-users mailing list