Fixed potential memory corruption while loading particle information. Slightly reworked the source code

This commit is contained in:
Guilhem Lavaux 2013-01-29 13:59:25 -06:00
parent 9bd0cbbb88
commit 5fb3adfc89

View file

@ -87,7 +87,7 @@ int main(int argc, char **argv) {
double nearestEdge, redshift; double nearestEdge, redshift;
char line[500], junkStr[10]; char line[500], junkStr[10];
int mask_index; int mask_index;
double ranges[2][3], boxLen[3], mul; double ranges[3][2], boxLen[3], mul;
double volNorm, radius; double volNorm, radius;
int clock1, clock2; int clock1, clock2;
int periodicX=0, periodicY=0, periodicZ=0; int periodicX=0, periodicY=0, periodicZ=0;
@ -174,7 +174,7 @@ int main(int argc, char **argv) {
part[p].y += ranges[1][0]; part[p].y += ranges[1][0];
part[p].z += ranges[2][0]; part[p].z += ranges[2][0];
} }
} }
fclose(fp); fclose(fp);
printf(" Read %d particles...\n", numPartTot); printf(" Read %d particles...\n", numPartTot);
@ -341,19 +341,19 @@ int main(int argc, char **argv) {
if (voids[iVoid].barycenter[0] > boxLen[0]) if (voids[iVoid].barycenter[0] > boxLen[0])
voids[iVoid].barycenter[0] = voids[iVoid].barycenter[0] - boxLen[0]; voids[iVoid].barycenter[0] = voids[iVoid].barycenter[0] - boxLen[0];
if (voids[iVoid].barycenter[0] < 0) if (voids[iVoid].barycenter[0] < 0)
voids[iVoid].barycenter[0] = boxLen[0] - voids[iVoid].barycenter[0]; voids[iVoid].barycenter[0] = boxLen[0] + voids[iVoid].barycenter[0];
} }
if (periodicY) { if (periodicY) {
if (voids[iVoid].barycenter[1] > boxLen[1]) if (voids[iVoid].barycenter[1] > boxLen[1])
voids[iVoid].barycenter[1] = voids[iVoid].barycenter[1] - boxLen[1]; voids[iVoid].barycenter[1] = voids[iVoid].barycenter[1] - boxLen[1];
if (voids[iVoid].barycenter[1] < 1) if (voids[iVoid].barycenter[1] < 0)
voids[iVoid].barycenter[1] = boxLen[1] - voids[iVoid].barycenter[1]; voids[iVoid].barycenter[1] = boxLen[1] + voids[iVoid].barycenter[1];
} }
if (periodicZ) { if (periodicZ) {
if (voids[iVoid].barycenter[2] > boxLen[2]) if (voids[iVoid].barycenter[2] > boxLen[2])
voids[iVoid].barycenter[2] = voids[iVoid].barycenter[2] - boxLen[2]; voids[iVoid].barycenter[2] = voids[iVoid].barycenter[2] - boxLen[2];
if (voids[iVoid].barycenter[2] < 2) if (voids[iVoid].barycenter[2] < 0)
voids[iVoid].barycenter[2] = boxLen[2] - voids[iVoid].barycenter[2]; voids[iVoid].barycenter[2] = boxLen[2] + voids[iVoid].barycenter[2];
} }
@ -397,8 +397,8 @@ int main(int argc, char **argv) {
for (p = 0; p < voids[iVoid].numPart; p++) { for (p = 0; p < voids[iVoid].numPart; p++) {
dist[0] = fabs(voidPart[p].x - voids[iVoid].barycenter[0]); dist[0] = fabs(voidPart[p].x - voids[iVoid].barycenter[0]);
dist[0] = fabs(voidPart[p].y - voids[iVoid].barycenter[1]); dist[1] = fabs(voidPart[p].y - voids[iVoid].barycenter[1]);
dist[0] = fabs(voidPart[p].z - voids[iVoid].barycenter[2]); dist[2] = fabs(voidPart[p].z - voids[iVoid].barycenter[2]);
if (periodicX) dist[0] = fmin(dist[0], boxLen[0]-dist[0]); if (periodicX) dist[0] = fmin(dist[0], boxLen[0]-dist[0]);
if (periodicY) dist[1] = fmin(dist[1], boxLen[1]-dist[1]); if (periodicY) dist[1] = fmin(dist[1], boxLen[1]-dist[1]);
@ -564,12 +564,12 @@ int main(int argc, char **argv) {
voids[iVoid].densCon, voids[iVoid].densCon,
voids[iVoid].voidProb); voids[iVoid].voidProb);
fprintf(fpBarycenter, "%d %e %e %e\n", fprintf(fpBarycenter, "%d %e %e %e\n",
voids[iVoid].voidID, voids[iVoid].voidID,
// TEST // TEST
//voids[iVoid].center[0], // voids[iVoid].center[0],
//voids[iVoid].center[1], // voids[iVoid].center[1],
//voids[iVoid].center[2]); //` voids[iVoid].center[2],
voids[iVoid].barycenter[0], voids[iVoid].barycenter[0],
voids[iVoid].barycenter[1], voids[iVoid].barycenter[1],
voids[iVoid].barycenter[2]); voids[iVoid].barycenter[2]);