Code:
//Tester file to deal with segFault
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <time.h>
#define CORRPHI0 2070000.0
#define CORRVLNUM 40000
#define VLMAX 41000
char *fileDefine(char *name);
//void generatePlotFile(char *name,int size);
int main(void)
{
int corrvlnum, i, j, k, r, z, isLevel, lcheck,probCounter=0,sample,debug=0;
double ax, ay, bx, by, tx, ty, maxr,latconst, field=0.0,t0,dT,\
absMaxX, absMinX, absMaxY, absMinY;
double vlinit[2][VLMAX];
FILE *fp;
char *theFile;
int fdebug;
printf("Generate a Correlated Points list?\n1. Yes\n0. No\n");
scanf("%d",&fdebug);
if(fdebug)
{
theFile = fileDefine("Correlated Points");
fp = fopen(theFile, "w"); //Writing to the file
if (fp == NULL)
{
printf("Error Opening File!");
return 1;
};
}
while (field == 0.0)
{printf("Enter magnetic field(mT):\n");
scanf("%lf",&field);}
//starts the timer
t0=(double)time(NULL);
//printf("Start Time: %lf Seconds\n",t0);
vlinit[0][0] = vlinit[1][0] = 0.0;
latconst = sqrt(CORRPHI0 * 2.0 / (sqrt(3.0) * field));
// real lattice vectors
ax = 0.5 * latconst;
ay = sqrt(3.0) * latconst / 2.0;
bx = latconst;
by = 0.0;
printf("Field %lf mT; a0 %lf nm\n", field, latconst);
if(fdebug) fprintf(fp,"#Field %lf mT; a0 %lf nm\n", field, latconst);
maxr = sqrt(sqrt(3.0) * ((double) CORRVLNUM) / (2.0 * M_PI));
z=0;
for (i=-2*maxr; i<=2*maxr; i++)
for (j=-2*maxr; j<=2*maxr; j++) {
tx = i * ax + j * bx;
ty = i * ay + j * by;
if (tx*tx + ty*ty < maxr*maxr*latconst*latconst) {
vlinit[0][z] = tx;
vlinit[1][z] = ty;
z++;
if(tx==0 && ty==0 && debug)printf("%lf\t%lf\n",tx,ty);
if(tx<absMinX) absMinX=tx;//find minimum and maximum in set
else if (tx>absMaxX) absMaxX=tx;
if(ty<absMinY) absMinY=ty;
else if (ty >absMaxY) absMaxY=ty;
}
}
corrvlnum=z;//check vlnum
printf("Initial lattice for correlation functions fills circle with %d vortex lines.\n\n",corrvlnum);
if(fdebug) fprintf(fp,"#%d Vortex Lines.\n",corrvlnum);
int r_rA,r_rB,r_theta,binSize =1001;
maxr = absMaxX-absMinX > absMaxY-absMinY ? absMaxX-absMinX: absMaxY-absMinY;
binSize = 10*rint(maxr/latconst);
printf("\n Maximum Spacings %d\tNumber of bins: %d\n",binSize/10,binSize);
static int density3[1001][1001][181],rA,rB,theta; //180 degrees and .1* a0
//initialize array
for(i=0;i<binSize;i++)
for(j=0;j<binSize;j++)
for(k=0;k<181;k++)
density3[i][j][k]=0; //--> SegFaults here
}
char *fileDefine(char *name)
{
char *input = malloc(50);
printf("Enter %s File Name:\n",name);
scanf("%49s",input);
return input;
}