<div dir="ltr"><div>Dear all,</div><div>I have gone through the neighbor search part of GROMACS and found that the basic logic of function &quot;put_in_list_t&quot; is as below:</div><div><br></div><div>if charge group i is water</div>
<div>{</div><div>  neighbor_list vdwc = VDWQQ_WATER</div><div><br></div><div>  if charge group j is water</div><div>    add j to neighbor_list vdwc_ww</div><div>  else</div><div>    add j to neighbor_list vdwc</div><div>}</div>
<div>else</div><div>{</div><div>  neighborlist vdwc = VDWQQ</div><div>  add j to neighborlist vdwc</div><div>}</div><div><br></div><div>However,  there are many cases that charge group i is not water but charge group j is water, and these cases are not considered into this algorithm currently. In practice, it can be found that many water molecules will be split when added into the neighbor lists of a charge group: atom &quot;OW&quot; will be filled into neighbor_list VDWQQ (NBlist 0) and two atoms &quot;HW&quot; will be filled into neighbor_list QQ (NBlist 2) separately. Therefore, when calculating non-bonded interactions, the NB kernel will be called three times. </div>
<div><br></div><div>If we modify the algorithm such that even if charge group i is not water, charge group j will still be put into neighbor_list VDWQQ_WATER (NBlist 6) if it is water, then for every pair of solvent-nonsolvent charge group non-bonded interaction, NB kernel will be called only once, and considering the water optimization, the computing time for calling kernel VDWQQ_WATER once should be smaller than calling kernel VDWQQ once plus kernel QQ twice. Also, considering the current VDWQQ_WATER kernel is dealing with the cases that i is water but j is not, we need to add a similar kernel which will compute the cases that j is water but i is not.</div>
<div><br></div><div>I am not quite sure if there are other considerations, but as far as I can see this approach might further reduce the non-bonded interaction computing time.</div><div><br></div><div>Thanks!</div><div>-Mark</div>
<div><br></div></div>