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

View file

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

View file

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

View file

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