<div dir="ltr"><div><div>Hi Berk,<br><br></div>The 1D dd where I used 2 MPI processes with -dd 1 1 2 can only work if I do not turn on the -dlb yes. It seems the problem will always exist if I have atom pairs separated in two domains.<br><br></div>You mentioned I could get all pairs by only looking at home atoms for the i-atoms. Does it mean I can even make the code like this, by changing ga2la_get for aj to ga2la_get_home?<br><br>// NP is number of tested pairs recorded in an array;<br>
// If atom ai is one of the home atoms in a node, we start testing if aj is<br>
available by the same node;<br>
// rlist = 1.0nm, Coulombtype = Cut-off, cutoff-scheme = Verlet, ns_type<br>
= grid, pbc = xyz;<br>
<br>
int Npairs = 0;<br>
for (i=0; i<NP; ++i)<br>
{<br>
int ai = datai[i] ;<br>
int localai;<br>
// Examine if ai it is within the home atoms index;<br>
if (ga2la_get_home(cr->dd->ga2la, ai, &localai))<br>
{<br>
aj = dataj[i] ;<br>
// Examine if aj is available by local node;;<br>
if (ga2la_get_home(cr->dd->ga2la, aj, &localaj))<br>
{<br>
FILE *fp;<br>
fp = fopen("pairs.dat","a");<br>
<br>
fprintf(fp, "%d\t%d\n", ai, aj);<br>
fclose(fp);<br>
<br>
r_N = 0.6 ;<br>
pbc_dx(&pbc, x[localai], x[localaj], dx) ;<br>
dr2 = iprod( dx, dx ) ;<br>
dr = sqrt( dr2 ) ;<br>
if (dr < r_N)<br>
{<br>
Npairs += 1;<br>
}<br>
}<br>
}<br>
}<br><div><div><br><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 28, 2015 at 2:22 AM, <span dir="ltr"><<a href="mailto:gromacs.org_gmx-developers-request@maillist.sys.kth.se" target="_blank">gromacs.org_gmx-developers-request@maillist.sys.kth.se</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Send gromacs.org_gmx-developers mailing list submissions to<br>
<a href="mailto:gromacs.org_gmx-developers@maillist.sys.kth.se">gromacs.org_gmx-developers@maillist.sys.kth.se</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers" rel="noreferrer" target="_blank">https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers</a><br>
<br>
or, via email, send a message with subject or body 'help' to<br>
<a href="mailto:gromacs.org_gmx-developers-request@maillist.sys.kth.se">gromacs.org_gmx-developers-request@maillist.sys.kth.se</a><br>
<br>
You can reach the person managing the list at<br>
<a href="mailto:gromacs.org_gmx-developers-owner@maillist.sys.kth.se">gromacs.org_gmx-developers-owner@maillist.sys.kth.se</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of gromacs.org_gmx-developers digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Increase the scope of dd domains (Xingcheng Lin)<br>
2. Re: energy group computation (Berk Hess)<br>
3. Re: dhdl expanded ensemble (Berk Hess)<br>
4. Re: Increase the scope of dd domains (Berk Hess)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Thu, 27 Aug 2015 23:35:30 -0500<br>
From: Xingcheng Lin <<a href="mailto:linxingcheng50311@gmail.com">linxingcheng50311@gmail.com</a>><br>
To: <a href="mailto:gromacs.org_gmx-developers@maillist.sys.kth.se">gromacs.org_gmx-developers@maillist.sys.kth.se</a><br>
Subject: [gmx-developers] Increase the scope of dd domains<br>
Message-ID:<br>
<CAPugp-HQjXb8hYKJO9i-1fMSfpzQxe=<a href="mailto:qZCOo8tPwPQrFraKEmw@mail.gmail.com">qZCOo8tPwPQrFraKEmw@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
Hi,<br>
<br>
I am trying to encode a "on the fly" calculation for the number of atom<br>
pairs within some distance (for example here, 6 angstroms).<br>
<br>
The problem happens when doing parallel domain decomposition. Specifically,<br>
when two particles reside in different domains, gromacs is not able to<br>
recognize this pair. I am trying to use ga2la_get_home and ga2la_get for<br>
calculation, here is the code:<br>
<br>
// NP is number of tested pairs recorded in an array;<br>
// If atom ai is one of the home atoms in a node, we start testing if aj is<br>
available by the same node;<br>
// rlist = 1.0nm, Coulombtype = Cut-off, cutoff-scheme = Verlet, ns_type<br>
= grid, pbc = xyz;<br>
<br>
int Npairs = 0;<br>
for (i=0; i<NP; ++i)<br>
{<br>
int ai = datai[i] ;<br>
int localai;<br>
// Examine if ai it is within the home atoms index;<br>
if (ga2la_get_home(cr->dd->ga2la, ai, &localai))<br>
{<br>
aj = dataj[i] ;<br>
// Examine if aj is available by local node;;<br>
if (ga2la_get(cr->dd->ga2la, aj, &localaj, &localcell))<br>
{<br>
FILE *fp;<br>
fp = fopen("pairs.dat","a");<br>
<br>
fprintf(fp, "%d\t%d\n", ai, aj);<br>
fclose(fp);<br>
<br>
r_N = 0.6 ;<br>
pbc_dx(&pbc, x[localai], x[localaj], dx) ;<br>
dr2 = iprod( dx, dx ) ;<br>
dr = sqrt( dr2 ) ;<br>
if (dr < r_N)<br>
{<br>
Npairs += 1;<br>
}<br>
}<br>
}<br>
}<br>
<br>
The results show some atom pairs, while atoms less than 6 angstroms apart,<br>
are missing here. I increase rlist, but it doesn't help. Is there any way<br>
to increase the scope of atoms available in each domain so that the missing<br>
atoms can be detected?<br>
<br>
Or are there any mistakes out of my notice in this code?<br>
<br>
Thank you,<br>
Xingcheng<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20150827/208ffc05/attachment.html" rel="noreferrer" target="_blank">http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20150827/208ffc05/attachment.html</a>><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Fri, 28 Aug 2015 09:04:56 +0200<br>
From: Berk Hess <<a href="mailto:hess@kth.se">hess@kth.se</a>><br>
To: <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
Subject: Re: [gmx-developers] energy group computation<br>
Message-ID: <<a href="mailto:55E00818.1060601@kth.se">55E00818.1060601@kth.se</a>><br>
Content-Type: text/plain; charset="windows-1252"; Format="flowed"<br>
<br>
Hi,<br>
<br>
This is a use, not a development question. Please post such questions to<br>
gmx-users.<br>
<br>
But the quick answer is that although it's technically possible to<br>
calculate this number, this number is useless (and indeed high).<br>
<br>
Cheers,<br>
<br>
Berk<br>
<br>
On 2015-08-27 19:00, ANTHONY C MANSON wrote:<br>
> Hello:<br>
><br>
> I am trying to estimate the polar solvation energy of a 76 residue<br>
> protein at standard conditions. I am using the gromacs 4.5.3 dp release.<br>
> I have set up a simulation with the solvated (using spce water) protein.<br>
> I have defined two energygrps: Protein SOL in the *.mdp file.<br>
> I have run the simulation and have then run g_energy on the *.edr file.<br>
> I get the following choices from g_energy:<br>
><br>
> 1 Bond 2 Angle 3 Proper-Dih. 4 Improper-Dih.<br>
> 5 LJ-14 6 Coulomb-14 7 LJ-(SR) 8 Disper.-corr.<br>
> 9 Coulomb-(SR) 10 Coul.-recip. 11 Potential 12<br>
> Kinetic-En.<br>
> 13 Total-Energy 14 Temperature 15 Pres.-DC 16 Pressure<br>
> 17 Vir-XX 18 Vir-XY 19 Vir-XZ 20 Vir-YX<br>
> 21 Vir-YY 22 Vir-YZ 23 Vir-ZX 24 Vir-ZY<br>
> 25 Vir-ZZ 26 Pres-XX 27 Pres-XY 28 Pres-XZ<br>
> 29 Pres-YX 30 Pres-YY 31 Pres-YZ 32 Pres-ZX<br>
> 33 Pres-ZY 34 Pres-ZZ 35 #Surf*SurfTen 36 Mu-X<br>
> 37 Mu-Y 38 Mu-Z<br>
> 39 Coul-SR:Protein-Protein 40 LJ-SR:Protein-Protein<br>
> 41 Coul-14:Protein-Protein 42 LJ-14:Protein-Protein<br>
> 43 Coul-SR:Protein-SOL 44 LJ-SR:Protein-SOL<br>
> 45 Coul-14:Protein-SOL 46 LJ-14:Protein-SOL<br>
> 47 Coul-SR:SOL-SOL 48 LJ-SR:SOL-SOL<br>
> 49 Coul-14:SOL-SOL 50 LJ-14:SOL-SOL<br>
> 51 T-System<br>
><br>
> I pick Coul-SR:Protein-SOL as a component of the polar solvation energy.<br>
> I note that the energy magnitude seems extremely high:<br>
><br>
> Energy Average Err.Est. RMSD Tot-Drift<br>
> -------------------------------------------------------------------------------<br>
> Coul-SR:Protein-SOL -8343.86 46 193.457 -192.93<br>
> (kJ/mol)<br>
><br>
> This seems unreasonable to me. I wanted to understand how mdrun<br>
> was calculating this value. Perhaps it is accumulating energies over<br>
> many frames. What part of the code (force.c ...) handles this<br>
> calculation so I can verify its action.<br>
><br>
> Also, I tried running g_enemat on this with the following groups.dat file.<br>
><br>
> 2<br>
> Protein<br>
> SOL<br>
><br>
> I use the command:<br>
><br>
> g_enemat -f ub_short.edr -e 100<br>
><br>
> and get:<br>
><br>
> Opened ub_short.edr as double precision energy file<br>
> Will read groupnames from in! putfile<br>
> Read 2 groups<br>
> group 0WARNING! could not find group (null):Protein-Protein (0,0)in<br>
> energy file<br>
> WARNING! could not find group (null):Protein-SOL (0,1)in energy file<br>
> group 1WARNING! could not find group (null):SOL-SOL (1,1)in energy file<br>
><br>
> Will select half-matrix of energies with 6 elements<br>
> Read frame: 1000, Time: 100.000e 100.000<br>
> Will build energy half-matrix of 2 groups, 6 elements, over 1001 frames<br>
> Segmentation fault<br>
><br>
><br>
> Cheers<br>
> Anthony Manson Ph.D.<br>
><br>
><br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20150828/17c227f6/attachment-0001.html" rel="noreferrer" target="_blank">http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20150828/17c227f6/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Fri, 28 Aug 2015 09:09:49 +0200<br>
From: Berk Hess <<a href="mailto:hess@kth.se">hess@kth.se</a>><br>
To: <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a>, "<a href="mailto:michael.shirts@virginia.edu">michael.shirts@virginia.edu</a>"<br>
<<a href="mailto:michael.shirts@virginia.edu">michael.shirts@virginia.edu</a>><br>
Subject: Re: [gmx-developers] dhdl expanded ensemble<br>
Message-ID: <<a href="mailto:55E0093D.2000804@kth.se">55E0093D.2000804@kth.se</a>><br>
Content-Type: text/plain; charset=windows-1252; format=flowed<br>
<br>
No. To be more precise dhdl is only (fully) calculated at each step<br>
where free energies are calculated, i.e. every nstdhdl steps.<br>
To find where the final values are stored, it's often easiest to look in<br>
mdebin.c, in this case at line 1244.<br>
<br>
Cheers,<br>
<br>
Berk<br>
<br>
On 2015-08-28 03:52, Shirts, Michael R. (mrs5pt) wrote:<br>
> Dhdl is automatically calculated at every step if free energies are<br>
> calculated. Look in sum_dhdl -- difference components are stored in<br>
> enerd->term.<br>
><br>
> Unless it's a new development you would rather keep private for now, you<br>
> should consider posting the proposed enhancement on redmine. You would<br>
> likely get some tips about how to do it in a way that could be more easily<br>
> included in later gromcs versions.<br>
><br>
> Best,<br>
> ~~~~~~~~~~~~<br>
> Michael Shirts<br>
> Associate Professor<br>
> Department of Chemical Engineering<br>
> University of Virginia<br>
> <a href="mailto:michael.shirts@virginia.edu">michael.shirts@virginia.edu</a><br>
> <a href="tel:%28434%29%20243-1821" value="+14342431821">(434) 243-1821</a><br>
><br>
><br>
> From: <Mirabzadeh>, "Christopher (<a href="mailto:mira2978@vandals.uidaho.edu">mira2978@vandals.uidaho.edu</a>)"<br>
> <<a href="mailto:mira2978@vandals.uidaho.edu">mira2978@vandals.uidaho.edu</a>><br>
> Reply-To: "<a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a>" <<a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a>><br>
> Date: Thursday, August 27, 2015 at 12:20 PM<br>
> To: "<a href="mailto:gromacs.org_gmx-developers@maillist.sys.kth.se">gromacs.org_gmx-developers@maillist.sys.kth.se</a>"<br>
> <<a href="mailto:gromacs.org_gmx-developers@maillist.sys.kth.se">gromacs.org_gmx-developers@maillist.sys.kth.se</a>><br>
> Subject: [gmx-developers] dhdl expanded ensemble<br>
><br>
><br>
><br>
> Hello,<br>
><br>
> What I'm trying to do;<br>
><br>
> I'm attempting to add functionality to expanded ensemble.<br>
><br>
><br>
> What I've done so far;<br>
><br>
> I've added functionality to accept my mdp options and found pre-written<br>
> functions to take advantage of.<br>
><br>
> Where I'm stuck;<br>
><br>
> I need the derivative of the Hamiltonian with respect to lambda at every<br>
> md step. I'm having a hard time narrowing down this variable. I know it's<br>
> calculated and I see in mdebin.c there is a line that says "/* store_dh is<br>
> dE */". Is the derivative "store_dhdl[]=enerd->term[F_DVDL]"?<br>
> Or, is this already being called somewhere in expanded.c that I can take<br>
> advantage of, maybe dfhist?<br>
><br>
> Is the dhdl automatically calculated? Where is it stored? If dhdl isn?t<br>
> being calculated automatically, is there an mdp option or mdrun flag that<br>
> I need?<br>
><br>
> I appreciate any advice that can be offered.<br>
><br>
><br>
> -ChrisM<br>
><br>
> Mirabzadeh, Christopher<br>
> Graduate Research Assistant/Physics Instructor<br>
> Department of Physics<br>
> University of Idaho<br>
> Moscow, Id<br>
> <a href="tel:%28509%29339-5647" value="+15093395647">(509)339-5647</a><br>
><br>
><br>
><br>
><br>
><br>
<br>
<br>
<br>
------------------------------<br>
<br>
Message: 4<br>
Date: Fri, 28 Aug 2015 09:20:44 +0200<br>
From: Berk Hess <<a href="mailto:hess@kth.se">hess@kth.se</a>><br>
To: <a href="mailto:gmx-developers@gromacs.org">gmx-developers@gromacs.org</a><br>
Subject: Re: [gmx-developers] Increase the scope of dd domains<br>
Message-ID: <<a href="mailto:55E00BCC.4040506@kth.se">55E00BCC.4040506@kth.se</a>><br>
Content-Type: text/plain; charset="windows-1252"; Format="flowed"<br>
<br>
Hi,<br>
<br>
Gromacs uses a neutral-territory eighth-shell domain decomposition<br>
method. So you can get all pairs by only looking at home-atoms for the<br>
i-atoms. You code should work though for 1D decomposition, is that the case?<br>
<br>
To get this to work with 2D or 3D decomposition, you need to replace<br>
ga2la_get_home by ga2la_get and then only consider i-j pairs where the<br>
cell values are in the cell pair list given by dd->comm->zones. cell_i<br>
should be < zones->nizone and zones->izone[cell_i].j0 <= cell_j <<br>
zones->izone[cell_j].j1 When the DD cells get smaller than the cutoff,<br>
you need to use cell % zones->n.<br>
<br>
Note that since the ga2la_get calls are expensive, such an approach is<br>
only efficient when you have only few atoms / atom pairs.<br>
For improving performance, it can help to first lookup locala and cell<br>
for all atoms and store them and then do the pair double loop after<br>
that. And instead of using sqrt, check dr2 < r_N*r_N.<br>
<br>
Cheers,<br>
<br>
Berk<br>
<br>
On 2015-08-28 06:35, Xingcheng Lin wrote:<br>
> Hi,<br>
><br>
> I am trying to encode a "on the fly" calculation for the number of<br>
> atom pairs within some distance (for example here, 6 angstroms).<br>
><br>
> The problem happens when doing parallel domain decomposition.<br>
> Specifically, when two particles reside in different domains, gromacs<br>
> is not able to recognize this pair. I am trying to use ga2la_get_home<br>
> and ga2la_get for calculation, here is the code:<br>
><br>
> // NP is number of tested pairs recorded in an array;<br>
> // If atom ai is one of the home atoms in a node, we start testing if<br>
> aj is available by the same node;<br>
> // rlist = 1.0nm, Coulombtype = Cut-off, cutoff-scheme = Verlet,<br>
> ns_type = grid, pbc = xyz;<br>
><br>
> int Npairs = 0;<br>
> for (i=0; i<NP; ++i)<br>
> {<br>
> int ai = datai[i] ;<br>
> int localai;<br>
> // Examine if ai it is within the home atoms index;<br>
> if (ga2la_get_home(cr->dd->ga2la, ai, &localai))<br>
> {<br>
> aj = dataj[i] ;<br>
> // Examine if aj is available by local node;;<br>
> if (ga2la_get(cr->dd->ga2la, aj, &localaj, &localcell))<br>
> {<br>
> FILE *fp;<br>
> fp = fopen("pairs.dat","a");<br>
><br>
> fprintf(fp, "%d\t%d\n", ai, aj);<br>
> fclose(fp);<br>
><br>
> r_N = 0.6 ;<br>
> pbc_dx(&pbc, x[localai], x[localaj], dx) ;<br>
> dr2 = iprod( dx, dx ) ;<br>
> dr = sqrt( dr2 ) ;<br>
> if (dr < r_N)<br>
> {<br>
> Npairs += 1;<br>
> }<br>
> }<br>
> }<br>
> }<br>
><br>
> The results show some atom pairs, while atoms less than 6 angstroms<br>
> apart, are missing here. I increase rlist, but it doesn't help. Is<br>
> there any way to increase the scope of atoms available in each domain<br>
> so that the missing atoms can be detected?<br>
><br>
> Or are there any mistakes out of my notice in this code?<br>
><br>
> Thank you,<br>
> Xingcheng<br>
><br>
><br>
><br>
><br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20150828/682fbb3e/attachment.html" rel="noreferrer" target="_blank">http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20150828/682fbb3e/attachment.html</a>><br>
<br>
------------------------------<br>
<span class=""><font color="#888888"><br>
--<br>
Gromacs Developers mailing list<br>
<br>
* Please search the archive at <a href="http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List" rel="noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists/GMX-developers_List</a> before posting!<br>
<br>
* Can't post? Read <a href="http://www.gromacs.org/Support/Mailing_Lists" rel="noreferrer" target="_blank">http://www.gromacs.org/Support/Mailing_Lists</a><br>
<br>
* For (un)subscribe requests visit<br>
<a href="https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers" rel="noreferrer" target="_blank">https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-developers</a> or send a mail to <a href="mailto:gmx-developers-request@gromacs.org">gmx-developers-request@gromacs.org</a>.<br>
<br>
End of gromacs.org_gmx-developers Digest, Vol 136, Issue 21<br>
***********************************************************<br>
</font></span></blockquote></div><br></div></div></div></div></div>