From dc81be6b57397a69b9e9fb63269622259ac924c2 Mon Sep 17 00:00:00 2001 From: Teemu Murtola Date: Fri, 6 Nov 2009 12:49:21 +0100 Subject: [PATCH] Better g_energy -nmol behavior (bug #365). The -nmol switch is now applied consistently to both XVG output and to the calculated averages. The calculated total drift is also correctly scaled with -nmol. (backported commit 1c2fab9ceb04b8a8cb7e7c24b816861dea88ffdb) --- src/tools/gmx_energy.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/tools/gmx_energy.c b/src/tools/gmx_energy.c index 6544c79954..aa9f00e0d0 100644 --- a/src/tools/gmx_energy.c +++ b/src/tools/gmx_energy.c @@ -514,7 +514,7 @@ static void analyse_ener(bool bCorr,char *corrfn, real time[], real reftemp, t_energy oldee[],t_energy ee[],enersum_t *enersum, int nset,int set[],int nenergy,real **eneset, - real **enesum, + real **enesum,bool *bIsEner, char *leg[],real Vaver,real ezero) { FILE *fp; @@ -527,7 +527,6 @@ static void analyse_ener(bool bCorr,char *corrfn, double x1m,x1mk; real Temp=-1,Pres=-1,VarV=-1,VarT=-1; int i,j,m,k,kkk; - bool bIsEner; char buf[256]; nsteps = step - oldstep + 1; @@ -633,11 +632,7 @@ static void analyse_ener(bool bCorr,char *corrfn, } else if (strstr(leg[i],"essure") != NULL) { Pres = aver; } - bIsEner = FALSE; - for (kkk=0; (kkk <= F_ETOT); kkk++) - bIsEner = bIsEner || - (strcasecmp(interaction_function[kkk].longname,leg[i]) == 0); - if (bIsEner) { + if (bIsEner[i]) { pr_aver = aver/nmol-ezero; pr_stddev = stddev/nmol; } @@ -648,7 +643,10 @@ static void analyse_ener(bool bCorr,char *corrfn, lsq_y_ax_b(nenergy,time,eneset[i],&a,&b,&r); if(fabs(a)ener[set[0]].esum); print1(out,bDp,fr->ener[set[0]].eav); } - else for(i=0; (iener[set[i]].e)/nmol-ezero); + else for(i=0; (iener[set[i]].e)/nmol-ezero); + else + print1(out,bDp,fr->ener[set[i]].e); + } fprintf(out,"\n"); } @@ -1464,7 +1475,7 @@ int gmx_energy(int argc,char *argv[]) bFee,bSum,bFluct,bVisco,opt2fn("-vis",NFILE,fnm), nmol,ndf,firststep,oldstep,oldt,frame[cur].step,frame[cur].t, time,reftemp,oldee,frame[cur].ener,&enersum, - nset,set,nenergy,eneset,enesum,leg,Vaver,ezero); + nset,set,nenergy,eneset,enesum,bIsEner,leg,Vaver,ezero); } if (opt2bSet("-f2",NFILE,fnm)) { fec(opt2fn("-f2",NFILE,fnm), opt2fn("-ravg",NFILE,fnm), -- 2.11.4.GIT