[gmx-developers] modifing nonbonded interactions
Nazish Hoda
nazish at umich.edu
Sun Oct 19 09:07:59 CEST 2008
> OK. While the simplest way to implement this is to modify the inner
> loop of the kernels to do such a comparison, this will severely hurt
> performance. If one was already dropping from the optimized kernels
> to a generic kernel, then the additional drop is probably not so
> severe, but I'd expect still noticeable.
This is what I have done. It is definetely slower. I am more
interested in checking the physics. If this works then I will think of
implementing the other idea you gave; that would require more effort.
The big plan is to perform implict solvent simulations for charged
systems that can mimic full atomistic simulations.
I have posted these queries on a regular basis for two weeks now,
since I started to work on this. But no one use to respond. I did not
wanted to
spend much time going through the full source code because I needed to
add just few lines. I was lucky today that I got some responses.
I would like to thank you once more, it really saved me lots of time, Nazish.
Quoting Mark Abraham <Mark.Abraham at anu.edu.au>:
> Nazish Hoda wrote:
>> Hi Mark,
>>
>> I really appreciate your help.
>> Let me first describe what I am planning to do.
>> I want to implement a position dependent dielectric constant:
>> \epsilon = \epsilon_near r < r_1,
>> \epsilon = \epsilon_far r > r_1.
>
> OK. While the simplest way to implement this is to modify the inner
> loop of the kernels to do such a comparison, this will severely hurt
> performance. If one was already dropping from the optimized kernels
> to a generic kernel, then the additional drop is probably not so
> severe, but I'd expect still noticeable.
>
> Much better would be to hijack the twin-range cut-off machinery to
> create different groups of nonbonded interactions which get sent to
> unmodified nonbonded kernels with different epsilon values. This way
> the distance test is done once per (charge-group) interaction
> during the neighbour-searching, and you get to keep the optimized
> kernels. See section 4.6.3 of the GROMACS 3.3 manual for some
> introductory information.
>
> Better still would be to find that some other simulation code
> already has such a mechanism implemented.
>
>> Regarding your suggestions, I now understand that I can force it
>> not to use the optimized subroutines. Though I did not undertand
>> what David means that I will be better served by using lookup
>> tables; is he referring to the numbering scheme for LJ, Coloumbic,
>> and water optimized functions, and how to use this information to
>> refer to the correct kernel functions?
>
> They don't vary the kernels, that's the point. Once you supply a
> table, the table-lookup kernels will be used. See section 6.6 of the
> 3.3 manual. Such an approach isn't useful to you, since you want
> what amounts to a different functional form depending on the value
> of r. This underscores why you should have been describing your
> objective, so that people trying to help you don't have to make
> shots in the dark - or ignore you until you ask a "right" question
> :-).
>
> Mark
> _______________________________________________
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://www.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.
>
>
>
More information about the gromacs.org_gmx-developers
mailing list