Changeset 4bb871a for util/src


Ignore:
Timestamp:
Feb 2, 2010, 12:22:06 PM (16 years ago)
Author:
Tillmann Crueger <crueger@…>
Children:
45cd358
Parents:
adcdf8 (diff), 6d0fcaa (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge commit 'heber/Analysis_PairCorrelation' into MenuRefactoring

Location:
util/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • util/src/NanoCreator.c

    radcdf8 r4bb871a  
    520520{
    521521  int c;
     522  if ((a == 0) && (b == 0))
     523    return 1;
     524  else if (a == 0)
     525    return b;
     526  else if (b == 0)
     527    return a;
    522528  do {
    523529    c = a % b;        /* Rest of integer divison */
     
    672678  double *x = NULL, *coord = NULL, *tempvector = NULL, *offset = NULL;
    673679  //double *cog = NULL, *cog_projected = NULL;
    674   char stage[6];
     680  char *stage = NULL;
    675681  int axis[NDIM] = {0,1,2}, chiral[2] = {1,1}, factors[NDIM] = {1,1,1};
    676682  char name[255], line[255], input = 'n';
    677683  char *CellBuffer = NULL, *SheetBuffer = NULL, *TubeBuffer = NULL, *bufptr = NULL;
    678684  double *randomness = NULL, percentage; // array with percentages for presence in sheet and beyond
    679   int i,j, ggT;
     685  int i,j, ggT, ggTsmall;
    680686  int length;
    681687
     
    688694        } else {
    689695                // store variables
    690                 filename = argv[1];
    691                 strncpy(stage, argv[2], 5);
     696                filename = Malloc(sizeof(char)*(strlen(argv[1])+1), "Main: filename");
     697    stage = Malloc(sizeof(char)*(strlen(argv[2])+1), "Main: stage");
     698                strcpy(filename, argv[1]);
     699                strcpy(stage, argv[2]);
    692700    fprintf(stdout, "I will begin at stage %s.\n", stage);
    693701
    694702                // build filenames
     703    length = strlen(filename);
    695704    char *ptr = strrchr(filename, '.');
    696705    if (ptr == NULL) {
    697706      ptr = filename;
    698707    } else {
    699       length = strlen(filename);
    700708      if (ptr != NULL) {
    701709        length = ((int)(ptr-filename) >= length-5) ? (int)(ptr-filename) : length;
     
    841849
    842850  int numbersheet, biggestdiameter, sheetnr[NDIM], tmp, seed;
     851  double dfactors[2];
    843852  double x1,x2,x3, angle;
    844853  char flag = 'n';
     
    874883
    875884    do {
    876       fprintf(stdout, "\nNow specify the two natural numbers (m n) defining the chiral angle, \nif the result is crap, try flipping to (m,n): ");
     885      fprintf(stdout, "\nNow specify the two natural numbers (n m) defining the chiral angle, \nif the result is crap, try flipping to (n,m): ");
    877886      fscanf(stdin, "%d %d", &chiral[0], &chiral[1]);
    878       ggT = GCD(2*chiral[1]+chiral[0],2*chiral[0]+chiral[1]);
     887      ggTsmall = GCD(chiral[0],chiral[1]);
     888      ggT = GCD(2*chiral[0]+chiral[1],2*chiral[1]+chiral[0]);
     889      fprintf(stdout, "Greatest Common Denominator of (n, m) is %d\n", ggTsmall);
    879890      fprintf(stdout, "Greatest Common Denominator of (2n+m, 2m+n) is %d\n", ggT);
    880891      fprintf(stdout, "chiral0: %d\tchiral1: %d\n", chiral[0], chiral[1]);
    881892      for (i=0;i<NDIM;i++) {
    882         Tubevector[axis[0]][i] = (double)chiral[0] * Vector[axis[0]][i] + (double)chiral[1] * Vector[axis[1]][i];
    883         //Tubevector[axis[0]][i] = chiral[0] * Vector[axis[0]][i] + chiral[1] * Vector[axis[1]][i];
     893//        Tubevector[axis[0]][i] = (double)chiral[0] * Vector[axis[0]][i] + (double)chiral[1] * Vector[axis[1]][i];
     894        Tubevector[axis[0]][i] = chiral[0] * Vector[axis[0]][i] + chiral[1] * Vector[axis[1]][i];
    884895        //Tubevector[axis[0]][i] = (2.*chiral[0]+chiral[1])/(double)ggT * Vector[axis[0]][i] + (-chiral[0]-2.*chiral[1])/(double)ggT * Vector[axis[1]][i];
    885896        //Tubevector[axis[1]][i] = -chiral[1] * Vector[axis[0]][i] + chiral[0] * Vector[axis[1]][i];
    886         Tubevector[axis[1]][i] = (double)chiral[0] * OrthoVector[axis[0]][i] - (double)chiral[1] * OrthoVector[axis[1]][i];
     897//        Tubevector[axis[1]][i] = (double)chiral[0] * OrthoVector[axis[0]][i] - (double)chiral[1] * OrthoVector[axis[1]][i];
     898        Tubevector[axis[1]][i] = (2.*chiral[0]+chiral[1])/(double)ggT * Vector[axis[0]][i] + (-chiral[0]-2.*chiral[1])/(double)ggT * Vector[axis[1]][i];
    887899        //Tubevector[axis[1]][i] = (-chiral[0]-2.*chiral[1])/(double)ggT * Vector[axis[0]][i] + (2.*chiral[0]+chiral[1])/(double)ggT * Vector[axis[1]][i];
    888900//        fprintf(stderr, "Tubevector[axis[0]][i] = (double)chiral[0] * Vector[axis[0]][i] + (double)chiral[1] * Vector[axis[1]][i]\n = %lg * %lg + %lg * %lg = %lg + %lg = %lg\n\n",
     
    924936        x1 = gsl_vector_get(u,0)*(double)i;
    925937        x2 = gsl_vector_get(u,1)*(double)i;
    926         x3 =
    927938        fprintf(stdout, "%d: %d\t%d vs. %lg\t%lg\n",i, ((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5)), (x1), (x2));
    928939        if (( fabs( ((int)(x1+x1/fabs(x1)*.5)) - (x1) ) < 1e-6) && ( fabs( ((int)(x2+x2/fabs(x2)*.5)) - (x2) ) < 1e-6 )) {
     
    931942        }
    932943      }
    933       fprintf(stdout, "(c,d) = (%lg,%lg)\n",gsl_vector_get(u,0), gsl_vector_get(u,1));
    934 
    935       // get length
     944      x1 = fabs(gsl_vector_get(u,0));
     945      x2 = fabs(gsl_vector_get(u,1));
     946      fprintf(stdout, "(c,d) = (%d,%d).\n",((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5)));
     947      j = GCD(((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5)));
     948      fprintf(stdout, "GCD(%d,%d) = %i.\n", ((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5)), j);
     949      for (i=0;i<2;i++)
     950        gsl_vector_set(u,i, gsl_vector_get(u,i)/(double)j);
     951        // get length
    936952      double x[NDIM];
    937953      for (i=0;i<NDIM;i++)
    938954        x[i] = gsl_vector_get(u,0) * Vector[axis[0]][i] + gsl_vector_get(u,1) * Vector[axis[1]][i];
    939955      angle = Norm(x)/Norm(Tubevector[axis[1]]) ;//ScalarProduct(x,Tubevector[axis[1]])/Norm(Tubevector[axis[1]]);
    940       fprintf(stdout, "angle is %lg\n", angle);
     956      fprintf(stdout, "Angle is %lg.\n", angle);
    941957      for (i=0;i<NDIM;i++) {
    942958        Tubevector[axis[1]][i] = gsl_vector_get(u,0) * Vector[axis[0]][i] + gsl_vector_get(u,1) * Vector[axis[1]][i];
     
    9941010        );
    9951011      fprintf(stdout, "\nGive integer factors for length and radius of tube (multiple of %d suggested) : ", ggT);
    996       fscanf(stdin, "%d %d", &factors[1], &factors[0]);
     1012      fscanf(stdin, "%lg %lg", &dfactors[1], &dfactors[0]);
     1013      for(i=0;i<2;i++)
     1014        factors[i] = (int)(dfactors[i]);
     1015      fprintf(stdout, "\nI got %d and %d.\n", factors[1], factors[0]);
    9971016      fprintf(stdout, "\nThe chiral angle then is %5.5f degrees with tube radius %5.5f A and length %5.5f A, i.e. torus radius of %5.5f A.\n",
    9981017        acos(Projection(Vector[axis[0]], Tubevector[axis[0]]))/M_PI*180.,
     
    13231342              fprintf(SheetFile, "%s\t%5.5lg\t%5.5lg\t%5.5lg\n", atombuffer[nr].name, coord[0], coord[1], coord[2]);
    13241343              // rotate to align the sheet in xy plane
    1325               x1 = coord[0]*cos(-angle) + coord[1] * sin(-angle);
    1326               x2 = coord[0]*(-sin(-angle)) + coord[1] * cos(-angle);
     1344              x1 = coord[0]*cos(angle) + coord[1] * sin(angle);
     1345              x2 = coord[0]*(-sin(angle)) + coord[1] * cos(angle);
    13271346              x3 = coord[2];
    13281347              fprintf(SheetFileAligned, "%s\t%5.5lg\t%5.5lg\t%5.5lg\n", atombuffer[nr].name, x1, x2, x3);
     
    14241443      fprintf(TubeFile, "%s\t%lg\t%lg\t%lg\n", name, atom_transformed[0], atom_transformed[1], atom_transformed[2]);
    14251444      // rotate and flip to align tube in z-direction
    1426       x1 = atom_transformed[0]*cos(-angle) + atom_transformed[1] * sin(-angle);
    1427       x2 = atom_transformed[0]*(-sin(-angle)) + atom_transformed[1] * cos(-angle);
     1445      x1 = atom_transformed[0]*cos(angle) + atom_transformed[1] * sin(angle);
     1446      x2 = atom_transformed[0]*(-sin(angle)) + atom_transformed[1] * cos(angle);
    14281447      x3 = atom_transformed[2];
    14291448      fprintf(TubeFileAligned, "%s\t%lg\t%lg\t%lg\n", name, x3, x2, x1);  // order so that symmetry is along z axis
     
    15371556  if (TubeBuffer != NULL) Free(TubeBuffer, "Main: end of stages - TubeBuffer");
    15381557
    1539   Free(CellFilename, "Main: end of stafes - CellFilename");
    1540   Free(SheetFilename, "Main: end of stafes - CellFilename");
    1541   Free(TubeFilename, "Main: end of stafes - CellFilename");
    1542   Free(TorusFilename, "Main: end of stafes - CellFilename");
    1543   Free(SheetFilenameAligned, "Main: end of stafes - CellFilename");
    1544   Free(TubeFilenameAligned, "Main: end of stafes - CellFilename");
     1558  Free(CellFilename, "Main: end of stages - CellFilename");
     1559  Free(SheetFilename, "Main: end of stages - CellFilename");
     1560  Free(TubeFilename, "Main: end of stages - CellFilename");
     1561  Free(TorusFilename, "Main: end of stages - CellFilename");
     1562  Free(SheetFilenameAligned, "Main: end of stages - CellFilename");
     1563  Free(TubeFilenameAligned, "Main: end of stages - CellFilename");
     1564  Free(filename, "Main: end of stages - filename");
     1565  Free(stage, "Main: end of stages - stage");
    15451566
    15461567  // exit
  • util/src/NanoCreator.h

    radcdf8 r4bb871a  
    22#define NANOCREATOR_H_
    33
    4 #define MYEPSILON 1e-13
     4#define MYEPSILON 2e-1
    55
    66struct Atoms
Note: See TracChangeset for help on using the changeset viewer.