[gmx-developers] How to get the globle atoms coordinates in local node?

Yorquant Wang wangykoo at gmail.com
Tue Mar 26 17:04:16 CET 2013

Hi Mark:
    Really thank you for giving help and suggestion!
    I want to using umbrella sampling to calculate PMF using a
self-designed Reaction coodinates(RC).
RC is defined as:
There is a serials of lipids in my simulation box. I choose two atoms in
each lipid molecules as head atom and tail atom.
RC=SUM (A(head atom of lipid i)*B(tail atom of lipid i))
A is function of the head atom of a lipid molecule
B is function of the tail atom of a lipid molecule
RC equals sum of all A*B for all lipid molecules in the simulation box.

My coding strategy is: I firstly defined a pull group including all the
head atoms of lipids, then I introduing a function cal_RC() in pullutil.c
file, and call it at the end of function pull_calc_coms() .

cal_RC(..., t_commrec  *cr,t_mdatoms *md, t_pbc   *pbc, rvec  x[],....)
int i=0,ii=0;
for(i=0;i<((pull->grp[1]).nat_loc); i++)
 ii = (pull->grp[1]).ind_loc[i];
A[i]= functionA(x[ii]) ;
//      I want to use this local index ii to get its global index ,
//      If I have each head atoms' global index, could I derive the
corresponding tail atoms' global index by molecular top information? If it
could, then I // want to use those corresponding tail atoms' global index
to get their coodinates in local nodes. so I can calulate the RC I need.


Could you give me some suggestion? Thank you very much!

Best wishes

2013/3/26 Mark Abraham <mark.j.abraham at gmail.com>

> On Tue, Mar 26, 2013 at 3:03 PM, Yorquant Wang <wangykoo at gmail.com> wrote:
>> Hi all:
>>     I want to implement a simple function into GMX4.5. I need to get the
>> atoms' coordinates which is not on this nodes, but I know those atoms
>> globle index. Just like the below situation.
>> ------------------------------
>> int cell_id=cr->dd->ga2la[global_index].cell;
>> int local_index=cr->dd->ga2la[global_index].a;
>> if(0==cell_id)
>> {
>>  rvec* atom_position=&local_state->x[local_index];
>> }
>> else
>> {
>>  *// atom is NOT on this node*
>>  // if atom is on a neighbor node then its position can be acquired using special communication
>> }
>> ------------------------------
>>   What's the special communication? Could you give me a help to tell me
>> which function in GMX  can do this special communication ?
> It lives in src/mdlib/domdec_con.c and uses the string "specat" in its
> names. It's intended for managing information to support things like
> constraints and virtual sites across DD boundaries, and not as a general
> query mechanism. What is that code fragment you gave?
> If you're able to give some more information about what you're trying to
> achieve, we might be able to suggest a better solution.
> Mark
> --
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the
> www interface or send it to gmx-developers-request at gromacs.org.

Yukun Wang
PhD candidate
Institute of Natural Sciences && College of Life Science, Shanghai Jiao
Tong University
Cell phone: 13621806236.
China Shanghai
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20130327/259419ff/attachment.html>

More information about the gromacs.org_gmx-developers mailing list