[gmx-developers] Extracting i-j forces from nb_generic.c
Berk Hess
hess at kth.se
Thu Jan 9 20:31:15 CET 2014
On 01/09/2014 07:30 PM, Mark Abraham wrote:
>
>
> On Jan 9, 2014 7:44 AM, "James" <jamesresearching at gmail.com
> <mailto:jamesresearching at gmail.com>> wrote:
> >
> > Dear Erik, David and other Gromacs developers,
> >
> > Thank you very much for your replies. They were very helpful! I have
> run with just one thread and I can now see how to extract i-j VDW and
> short-range coulomb potentials (shared equally between pairs) and by
> tracing the temperature evaluation I think I have found the
> appropriate place for extracting kinetic energy and velocities.
> >
> > I wonder if I may follow up about the atomic numbering. I will need
> to move to parallel calculation as soon as possible, and I have been
> thinking about the comments:
> >
> > (Erik) "you can write functionality to move the properties you need
> (just as we move charge, etc) into the local topology when we do
> rebalancing between domains"
> >
> > I'm not sure what exactly is meant by "local topology". Where is
> "rebalancing between domains" performed? Would you mind expanding this
> explanation a little more or giving an example?
>
> See code in runner.c and md.c, probably near init_domain_decomposition
> or domain_decomposition. You'll need to drill into either or both to
> find how to propagate whatever it is you need.
>
> > (David) "There is a function in mtop_util.h that will give you the
> global atom number"
> >
> > Are you referring to the gmx_mtop_atomlookup_init function? I looked
> at other places in the code where this is called; I assume I would
> have to somehow pass *mtop to the force subroutine? If evaluating this
> is expensive, as Erik suggests, I suppose I could do this outside of
> the force loop.
>
> No, that is a global topology, and local atom indices won't help. IIRC
> gmx_local_topology_t is the data type. You should want to build an
> array at domain-decomposition time that can be looked up at each
> following integration step with a local atom index. Or simulate with
> pen and paper for better speed ;-)
>
The array is already there: cr->dd->gatindex
Cheers,
Berk
>
> Mark
>
> > Thank you again for your help.
> >
> > With best regards,
> >
> > James
> >
> >
> > On 31 December 2013 18:15, Erik Lindahl <erik.lindahl at scilifelab.se
> <mailto:erik.lindahl at scilifelab.se>> wrote:
> >>
> >> Hi James,
> >>
> >> On 31 Dec 2013, at 08:15, James <jamesresearching at gmail.com
> <mailto:jamesresearching at gmail.com>> wrote:
> >>
> >> > Dear Gromacs developers,
> >> >
> >> > To measure thermal conductivity using Green-Kubo I am trying to
> extract the i-j atomic forces from nb_generic.c and I wonder if anyone
> could help me with some basic questions?
> >> >
> >> > 1. If I understand correctly, ii and jj are atom numbers for atom
> i and atom j. These don't seem to correspond to the atoms in the order
> that they were read in (PDB file), however. How can I recover this
> order, or what is the new order?
> >>
> >> That would be "ii" and "jnr" in the master branch. If you are only
> using a single thread this should correspond to the atom order in the
> input (although C always starts counting at 0). However, when we run
> in parallel the domain decomposition will mean that the particle
> indices change (frequently) as particules move across node boundaries.
> >>
> >> There are routines you can use to find the global atom indices, but
> you don't want to call those from the innermost kernel. Instead I
> would recommend using a single thread while you develop, and later
> when you want to enable parallelization you can write functionality to
> move the properties you need (just as we move charge, etc) into the
> local topology when we do rebalancing between domains.
> >>
> >> > 2. What units are the positions ix, iy, iz (again in nb_generic.c)?
> >>
> >> nm - same as in the gro files, but it differs from PDB files that
> use Angstrom.
> >> >
> >> > 3. nb_generic is within the loop i = i0 to i1-1 in nonbonded.c.
> What is this loop? Somehow related to different interaction types?
> >>
> >> At one point we experimented with multithreading parallelism over
> this loop (thus the indices), but now the outermost loop is over
> different neighborlists. A certain particle will have different
> neighborlists for neighbors that only have charge, only Lennard-Jones,
> and both LJ+charge.
> >>
> >> Having said that, for the future we are likely moving entirely to
> the new style "verlet" kernels currently used for GPUs (and that will
> likely be default for CPUs in Gromacs-5.0 too), but we still need to
> write a generic kernel there.
> >>
> >> > 4. Later, I will also want to extract the instantaneous kinetic
> and potential energy of the atom in the same time-step - any advice is
> very welcome.
> >>
> >> For kinetic energy you can just look at how we calculate
> temperature - this is easy. Potential energy is complex if you use
> lattice summation (PME), since you then would need to modify the grid
> interpolation to get potentials of individual particles.
> >> >
> >> > 5. Out of interest, I notice many of the files in the release-4-6
> branch are in include/ but the same files are in legacyheaders/ in the
> master branch. Why is this? Which should I be developing against?
> >>
> >> We are moving pretty fast right now due to a switch from C to
> partial C++, which also involves a lot of cleaning-up and
> modularization. The master branch is the future, but legacyheaders is
> stuff that still hasn't been modularized.
> >>
> >> Cheers,
> >>
> >> Erik
> >> --
> >> Gromacs Developers mailing list
> >>
> >> * Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List
> before posting!
> >>
> >> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> >>
> >> * For (un)subscribe requests visit
> >>
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers or
> send a mail to gmx-developers-request at gromacs.org
> <mailto:gmx-developers-request at gromacs.org>.
> >
> >
> >
> > --
> > Gromacs Developers mailing list
> >
> > * Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List
> before posting!
> >
> > * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> >
> > * For (un)subscribe requests visit
> >
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers or
> send a mail to gmx-developers-request at gromacs.org
> <mailto:gmx-developers-request at gromacs.org>.
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20140109/0ab691a8/attachment-0001.html>
More information about the gromacs.org_gmx-developers
mailing list