Fixed compiler warnings in Zobov (hopefully fixing some potential bugs too)

This commit is contained in:
Guilhem Lavaux 2013-03-19 09:48:21 -04:00
parent 5e36b11505
commit 0a20f4a36a
4 changed files with 38 additions and 36 deletions

View file

@ -85,7 +85,7 @@ int main(int argc,char **argv) {
printf("Bad density threshold.\n"); printf("Bad density threshold.\n");
exit(0); exit(0);
} }
if (sscanf(argv[7],"%f",&mockIndex) == 0) { if (sscanf(argv[7],"%d",&mockIndex) == 0) {
printf("Bad mock galaxy index.\n"); printf("Bad mock galaxy index.\n");
exit(0); exit(0);
} }
@ -108,29 +108,29 @@ int main(int argc,char **argv) {
p = (PARTICLE *)malloc(np*sizeof(PARTICLE)); p = (PARTICLE *)malloc(np*sizeof(PARTICLE));
/* Adjacencies*/ /* Adjacencies*/
for (i=0;i<np;i++) { for (i=0;i<np;i++) {
fread(&p[i].nadj,1,sizeof(int),adj); fread(&p[i].nadj,1,sizeof(pid_t),adj);
/* The number of adjacencies per particle */ /* The number of adjacencies per particle */
if (p[i].nadj > 0) if (p[i].nadj > 0)
p[i].adj = (int *)malloc(p[i].nadj*sizeof(int)); p[i].adj = (pid_t *)malloc(p[i].nadj*sizeof(pid_t));
else p[i].adj = 0; else p[i].adj = 0;
p[i].ncnt = 0; /* Temporarily, it's an adj counter */ p[i].ncnt = 0; /* Temporarily, it's an adj counter */
} }
for (i=0;i<np;i++) { for (i=0;i<np;i++) {
fread(&nin,1,sizeof(int),adj); fread(&nin,1,sizeof(pid_t),adj);
if (nin > 0) if (nin > 0)
for (k=0;k<nin;k++) { for (k=0;k<nin;k++) {
fread(&j,1,sizeof(int),adj); fread(&j,1,sizeof(pid_t),adj);
if (j < np) { if (j < np) {
/* Set both halves of the pair */ /* Set both halves of the pair */
assert(i < j); assert(i < j);
if (p[i].ncnt == p[i].nadj) if (p[i].ncnt == p[i].nadj)
{ {
p[i].adj = (int *)realloc(p[i].adj, (p[i].nadj+1)*sizeof(int)); p[i].adj = (pid_t *)realloc(p[i].adj, (p[i].nadj+1)*sizeof(pid_t));
p[i].nadj++; p[i].nadj++;
} }
if (p[j].ncnt == p[j].nadj) if (p[j].ncnt == p[j].nadj)
{ {
p[j].adj = (int *)realloc(p[j].adj, (p[j].nadj+1)*sizeof(int)); p[j].adj = (pid_t *)realloc(p[j].adj, (p[j].nadj+1)*sizeof(pid_t));
p[j].nadj++; p[j].nadj++;
} }
p[i].adj[p[i].ncnt] = j; p[i].adj[p[i].ncnt] = j;
@ -144,13 +144,13 @@ int main(int argc,char **argv) {
fclose(adj); fclose(adj);
/* Check that we got all the pairs */ /* Check that we got all the pairs */
// adj = fopen(adjfile, "r"); /* adj = fopen(adjfile, "r");
// fread(&np,1, sizeof(int),adj); fread(&np,1, sizeof(int),adj);*/
for (i=0;i<np;i++) { for (i=0;i<np;i++) {
// fread(&nin,1,sizeof(int),adj); /* actually nadj */ /* fread(&nin,1,sizeof(int),adj); /* actually nadj */
// PMS // PMS
if (p[i].ncnt != p[i].nadj && i < mockIndex) { if (p[i].ncnt != p[i].nadj && i < mockIndex) {
//if (p[i].ncnt != p[i].nadj) { /*if (p[i].ncnt != p[i].nadj) {*/
// END PMS // END PMS
p[i].nadj = p[i].ncnt; p[i].nadj = p[i].ncnt;
printf("We didn't get all of %d's adj's; %d != %d.\n",i,nin,p[i].nadj); printf("We didn't get all of %d's adj's; %d != %d.\n",i,nin,p[i].nadj);
@ -185,9 +185,9 @@ int main(int argc,char **argv) {
} }
fclose(vol); fclose(vol);
jumped = (int *)malloc(np*sizeof(int)); jumped = (pid_t *)malloc(np*sizeof(pid_t));
jumper = (int *)malloc(np*sizeof(int)); jumper = (pid_t *)malloc(np*sizeof(pid_t));
numinh = (int *)malloc(np*sizeof(int)); numinh = (pid_t *)malloc(np*sizeof(pid_t));
/* find jumper */ /* find jumper */
for (i = 0; i < np; i++) { for (i = 0; i < np; i++) {
@ -252,7 +252,7 @@ int main(int argc,char **argv) {
} }
for (h=0;h<nzones;h++) { for (h=0;h<nzones;h++) {
zt[h].adj = (int *)malloc(zt[h].nadj*sizeof(int)); zt[h].adj = (pid_t *)malloc(zt[h].nadj*sizeof(pid_t));
if (zt[h].adj == NULL) { if (zt[h].adj == NULL) {
printf("Unable to allocate %d adj's of zone %d\n",zt[h].nadj,h); printf("Unable to allocate %d adj's of zone %d\n",zt[h].nadj,h);
exit(0); exit(0);
@ -313,7 +313,7 @@ int main(int argc,char **argv) {
for (h=0;h<nzones;h++) { for (h=0;h<nzones;h++) {
/*printf("%d ",zt[h].nadj);*/ /*printf("%d ",zt[h].nadj);*/
z[h].nadj = zt[h].nadj; z[h].nadj = zt[h].nadj;
z[h].adj = (int *)malloc(zt[h].nadj*sizeof(int)); z[h].adj = (pid_t *)malloc(zt[h].nadj*sizeof(pid_t));
z[h].slv = (float *)malloc(zt[h].nadj*sizeof(float)); z[h].slv = (float *)malloc(zt[h].nadj*sizeof(float));
for (za = 0; za<zt[h].nadj; za++) { for (za = 0; za<zt[h].nadj; za++) {
z[h].adj[za] = zt[h].adj[za]; z[h].adj[za] = zt[h].adj[za];
@ -326,12 +326,12 @@ int main(int argc,char **argv) {
free(zt); free(zt);
free(numinh); free(numinh);
m = (int **)malloc(nzones*sizeof(int *)); m = (pid_t **)malloc(nzones*sizeof(pid_t *));
/* Not in the zone struct since it'll be freed up (contiguously, we hope) /* Not in the zone struct since it'll be freed up (contiguously, we hope)
soon */ soon */
nm = (int *)malloc(nzones*sizeof(int)); nm = (pid_t *)malloc(nzones*sizeof(pid_t));
for (h=0; h<nzones; h++) { for (h=0; h<nzones; h++) {
m[h] = (int *)malloc(z[h].np*sizeof(int)); m[h] = (pid_t *)malloc(z[h].np*sizeof(pid_t));
nm[h] = 0; nm[h] = 0;
z[h].vol = 0.; z[h].vol = 0.;
} }
@ -354,14 +354,14 @@ int main(int argc,char **argv) {
printf("Problem opening zonefile %s.\n\n",zonfile); printf("Problem opening zonefile %s.\n\n",zonfile);
exit(0); exit(0);
} }
fwrite(&np,1,4,zon); fwrite(&np,1,sizeof(pid_t),zon);
fwrite(&nzones,1,4,zon); fwrite(&nzones,1,sizeof(int),zon);
for (h=0; h<nzones; h++) { for (h=0; h<nzones; h++) {
// PMS // PMS
//printf("%d %d %d", &(z[h].np), m[h], z[h].np); //printf("%d %d %d", &(z[h].np), m[h], z[h].np);
// END PMS // END PMS
fwrite(&(z[h].np),1,4,zon); fwrite(&(z[h].np),1,sizeof(pid_t),zon);
fwrite(m[h],z[h].np,4,zon); fwrite(m[h],z[h].np,sizeof(pid_t),zon);
free(m[h]); free(m[h]);
} }
free(m); free(m);
@ -394,7 +394,7 @@ int main(int argc,char **argv) {
printf("Problem opening zonefile %s.\n\n",zonfile2); printf("Problem opening zonefile %s.\n\n",zonfile2);
exit(0); exit(0);
} }
fwrite(&nzones,1,4,zon2); fwrite(&nzones,1,sizeof(int),zon2);
for (h = 0; h<nzones; h++) { for (h = 0; h<nzones; h++) {
nhlcount = 0; nhlcount = 0;
@ -532,8 +532,8 @@ int main(int argc,char **argv) {
z[h].nhl = nhl; z[h].nhl = nhl;
fwrite(&nhl,1,4,zon2); fwrite(&nhl,1,sizeof(int),zon2);
fwrite(zonelist,nhl,4,zon2); fwrite(zonelist,nhl,sizeof(int),zon2);
} }
fclose(zon2); fclose(zon2);

View file

@ -3,7 +3,9 @@
##define NGUARD 42 /*Actually, the number of SPACES between guard points ##define NGUARD 42 /*Actually, the number of SPACES between guard points
in each dim */ in each dim */
typedef int pid_t;
typedef struct Partadj { typedef struct Partadj {
int nadj; pid_t nadj;
int *adj; pid_t *adj;
} PARTADJ; } PARTADJ;

View file

@ -142,7 +142,7 @@ int main(int argc, char *argv[]) {
points */ points */
parts = (coordT *)malloc(3*nvpbuf*sizeof(coordT)); parts = (coordT *)malloc(3*nvpbuf*sizeof(coordT));
orig = (int *)malloc(nvpbuf*sizeof(int)); orig = (pid_t *)malloc(nvpbuf*sizeof(pid_t));
if (parts == NULL) { if (parts == NULL) {
printf("Unable to allocate parts\n"); printf("Unable to allocate parts\n");
@ -323,14 +323,14 @@ int main(int argc, char *argv[]) {
printf("nvp = %d\n",nvp); printf("nvp = %d\n",nvp);
/* Tell us where the original particles were */ /* Tell us where the original particles were */
fwrite(orig,sizeof(int),nvp,out); fwrite(orig,sizeof(pid_t),nvp,out);
/* Volumes*/ /* Volumes*/
fwrite(vols,sizeof(float),nvp,out); fwrite(vols,sizeof(float),nvp,out);
/* Adjacencies */ /* Adjacencies */
for (i=0;i<nvp;i++) { for (i=0;i<nvp;i++) {
fwrite(&(adjs[i].nadj),1,sizeof(int),out); fwrite(&(adjs[i].nadj),1,sizeof(pid_t),out);
if (adjs[i].nadj > 0) if (adjs[i].nadj > 0)
fwrite(adjs[i].adj,adjs[i].nadj,sizeof(int),out); fwrite(adjs[i].adj,adjs[i].nadj,sizeof(pid_t),out);
else printf("0"); else printf("0");
} }
fclose(out); fclose(out);

View file

@ -18,6 +18,8 @@ int main(int argc, char *argv[]) {
int nvp,npnotdone,nvpmax, nvpsum, *orig; int nvp,npnotdone,nvpmax, nvpsum, *orig;
double avgnadj, avgvol; double avgnadj, avgvol;
int numRemoved = 0;
// PMS // PMS
int mockIndex; int mockIndex;
// END PMS // END PMS
@ -157,8 +159,6 @@ int main(int argc, char *argv[]) {
adjs[i].nadj = 0; adjs[i].nadj = 0;
} }
int numRemoved = 0;
// unlink particles adjacent to mock galaxies // unlink particles adjacent to mock galaxies
for (i = 0; i < mockIndex; i++) { for (i = 0; i < mockIndex; i++) {
for (j = 0; j < adjs[i].nadj; j++) { for (j = 0; j < adjs[i].nadj; j++) {
@ -217,7 +217,7 @@ printf("\n");
avgvol += (double)(vols[p]); avgvol += (double)(vols[p]);
} }
if (npnotdone > 0) if (npnotdone > 0)
printf("%d particles not done!\n"); printf("%d particles not done!\n", npnotdone);
printf("%d particles done more than once.\n",nvpsum-np); printf("%d particles done more than once.\n",nvpsum-np);
avgnadj /= (double)np; avgnadj /= (double)np;
avgvol /= (double)np; avgvol /= (double)np;