*/
#include "gmxpre.h"
-#include <math.h>
-#include <stdlib.h>
+#include <cmath>
+#include <cstdlib>
#include "gromacs/commandline/pargs.h"
#include "gromacs/fileio/confio.h"
};
static gmx_bool bPBC = FALSE;
- static gmx_bool bSHIFT = FALSE;
static int iIGNOREOUTER = -1; /*Positive values may help if the surface is spikey */
static gmx_bool bCUTDOWN = TRUE;
static real rBINWIDTH = 0.05; /* nm */
int ePBC;
char title[STRLEN];
t_trxframe fr;
- rvec *xtop, *shx[26];
+ rvec *xtop;
matrix box, box_pbc;
t_trxstatus *status;
int flags = TRX_READ_X;
int i, nidx, nidxp;
int v;
int j, k;
- long ***bin = (long ***)NULL;
- long nbin[3];
+ int ***bin = NULL;
+ int nbin[3];
FILE *flp;
- long x, y, z, minx, miny, minz, maxx, maxy, maxz;
- long numfr, numcu;
- long tot, max, min;
+ int x, y, z, minx, miny, minz, maxx, maxy, maxz;
+ int numfr, numcu;
+ int tot, maxval, minval;
double norm;
output_env_t oenv;
gmx_rmpbc_t gpbc = NULL;
}
for (i = ZZ; i >= XX; --i)
{
- MAXBIN[i] = (ceil((MAXBIN[i]-MINBIN[i])/rBINWIDTH)+(double)iNAB)*rBINWIDTH+MINBIN[i];
- MINBIN[i] -= (double)iNAB*rBINWIDTH;
- nbin[i] = (long)ceil((MAXBIN[i]-MINBIN[i])/rBINWIDTH);
+ MAXBIN[i] = (std::ceil((MAXBIN[i]-MINBIN[i])/rBINWIDTH)+iNAB)*rBINWIDTH+MINBIN[i];
+ MINBIN[i] -= iNAB*rBINWIDTH;
+ nbin[i] = static_cast<int>(std::ceil((MAXBIN[i]-MINBIN[i])/rBINWIDTH));
}
snew(bin, nbin[XX]);
for (i = 0; i < nbin[XX]; ++i)
printf("Memory was required for [%f,%f,%f]\n", fr.x[index[i]][XX], fr.x[index[i]][YY], fr.x[index[i]][ZZ]);
exit(1);
}
- x = (long)ceil((fr.x[index[i]][XX]-MINBIN[XX])/rBINWIDTH);
- y = (long)ceil((fr.x[index[i]][YY]-MINBIN[YY])/rBINWIDTH);
- z = (long)ceil((fr.x[index[i]][ZZ]-MINBIN[ZZ])/rBINWIDTH);
+ x = static_cast<int>(std::ceil((fr.x[index[i]][XX]-MINBIN[XX])/rBINWIDTH));
+ y = static_cast<int>(std::ceil((fr.x[index[i]][YY]-MINBIN[YY])/rBINWIDTH));
+ z = static_cast<int>(std::ceil((fr.x[index[i]][ZZ]-MINBIN[ZZ])/rBINWIDTH));
++bin[x][y][z];
if (x < minx)
{
fprintf(flp, "Spatial Distribution Function\n");
fprintf(flp, "test\n");
fprintf(flp, "%5d%12.6f%12.6f%12.6f\n", nidxp, (MINBIN[XX]+(minx+iIGNOREOUTER)*rBINWIDTH)*10./bohr, (MINBIN[YY]+(miny+iIGNOREOUTER)*rBINWIDTH)*10./bohr, (MINBIN[ZZ]+(minz+iIGNOREOUTER)*rBINWIDTH)*10./bohr);
- fprintf(flp, "%5ld%12.6f%12.6f%12.6f\n", maxx-minx+1-(2*iIGNOREOUTER), rBINWIDTH*10./bohr, 0., 0.);
- fprintf(flp, "%5ld%12.6f%12.6f%12.6f\n", maxy-miny+1-(2*iIGNOREOUTER), 0., rBINWIDTH*10./bohr, 0.);
- fprintf(flp, "%5ld%12.6f%12.6f%12.6f\n", maxz-minz+1-(2*iIGNOREOUTER), 0., 0., rBINWIDTH*10./bohr);
+ fprintf(flp, "%5d%12.6f%12.6f%12.6f\n", maxx-minx+1-(2*iIGNOREOUTER), rBINWIDTH*10./bohr, 0., 0.);
+ fprintf(flp, "%5d%12.6f%12.6f%12.6f\n", maxy-miny+1-(2*iIGNOREOUTER), 0., rBINWIDTH*10./bohr, 0.);
+ fprintf(flp, "%5d%12.6f%12.6f%12.6f\n", maxz-minz+1-(2*iIGNOREOUTER), 0., 0., rBINWIDTH*10./bohr);
for (i = 0; i < nidxp; i++)
{
v = 2;
{
v = 16;
}
- fprintf(flp, "%5d%12.6f%12.6f%12.6f%12.6f\n", v, 0., (double)fr.x[indexp[i]][XX]*10./bohr, (double)fr.x[indexp[i]][YY]*10./bohr, (double)fr.x[indexp[i]][ZZ]*10./bohr);
+ fprintf(flp, "%5d%12.6f%12.6f%12.6f%12.6f\n", v, 0., fr.x[indexp[i]][XX]*10.0/bohr, fr.x[indexp[i]][YY]*10.0/bohr, fr.x[indexp[i]][ZZ]*10.0/bohr);
}
tot = 0;
if (bin[k][j][i] != 0)
{
printf("A bin was not empty when it should have been empty. Programming error.\n");
- printf("bin[%d][%d][%d] was = %ld\n", k, j, i, bin[k][j][i]);
+ printf("bin[%d][%d][%d] was = %d\n", k, j, i, bin[k][j][i]);
exit(1);
}
}
}
}
- min = 999;
- max = 0;
+ minval = 999;
+ maxval = 0;
for (k = 0; k < nbin[XX]; k++)
{
if (k < minx+iIGNOREOUTER || k > maxx-iIGNOREOUTER)
continue;
}
tot += bin[k][j][i];
- if (bin[k][j][i] > max)
+ if (bin[k][j][i] > maxval)
{
- max = bin[k][j][i];
+ maxval = bin[k][j][i];
}
- if (bin[k][j][i] < min)
+ if (bin[k][j][i] < minval)
{
- min = bin[k][j][i];
+ minval = bin[k][j][i];
}
}
}
numcu = (maxx-minx+1-(2*iIGNOREOUTER))*(maxy-miny+1-(2*iIGNOREOUTER))*(maxz-minz+1-(2*iIGNOREOUTER));
if (bCALCDIV)
{
- norm = ((double)numcu*(double)numfr) / (double)tot;
+ norm = static_cast<double>(numcu*numfr)/tot;
}
else
{
{
continue;
}
- fprintf(flp, "%12.6f ", norm*(double)bin[k][j][i]/(double)numfr);
+ fprintf(flp, "%12.6f ", static_cast<double>(norm*bin[k][j][i])/numfr);
}
fprintf(flp, "\n");
}
}
gmx_ffclose(flp);
- /* printf("x=%d to %d\n",minx,maxx); */
- /* printf("y=%d to %d\n",miny,maxy); */
- /* printf("z=%d to %d\n",minz,maxz); */
-
if (bCALCDIV)
{
- printf("Counts per frame in all %ld cubes divided by %le\n", numcu, 1.0/norm);
- printf("Normalized data: average %le, min %le, max %le\n", 1.0, norm*(double)min/(double)numfr, norm*(double)max/(double)numfr);
+ printf("Counts per frame in all %d cubes divided by %le\n", numcu, 1.0/norm);
+ printf("Normalized data: average %le, min %le, max %le\n", 1.0, minval*norm/numfr, maxval*norm/numfr);
}
else
{
- printf("grid.cube contains counts per frame in all %ld cubes\n", numcu);
- printf("Raw data: average %le, min %le, max %le\n", 1.0/norm, (double)min/(double)numfr, (double)max/(double)numfr);
+ printf("grid.cube contains counts per frame in all %d cubes\n", numcu);
+ printf("Raw data: average %le, min %le, max %le\n", 1.0/norm, static_cast<double>(minval)/numfr, static_cast<double>(maxval)/numfr);
}
return 0;