- Timestamp:
- Jan 31, 2010, 5:43:36 PM (16 years ago)
- Children:
- 4737be
- Parents:
- 09ed91
- Location:
- util/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
util/src/NanoCreator.c
r09ed91 r961e9c 520 520 { 521 521 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; 522 528 do { 523 529 c = a % b; /* Rest of integer divison */ … … 677 683 char *CellBuffer = NULL, *SheetBuffer = NULL, *TubeBuffer = NULL, *bufptr = NULL; 678 684 double *randomness = NULL, percentage; // array with percentages for presence in sheet and beyond 679 int i,j, ggT ;685 int i,j, ggT, ggTsmall; 680 686 int length; 681 687 … … 876 882 877 883 do { 878 fprintf(stdout, "\nNow specify the two natural numbers ( m n) defining the chiral angle, \nif the result is crap, try flipping to (m,n): ");884 fprintf(stdout, "\nNow specify the two natural numbers (n m) defining the chiral angle, \nif the result is crap, try flipping to (n,m): "); 879 885 fscanf(stdin, "%d %d", &chiral[0], &chiral[1]); 880 ggT = GCD(2*chiral[1]+chiral[0],2*chiral[0]+chiral[1]); 886 ggTsmall = GCD(chiral[0],chiral[1]); 887 ggT = GCD(2*chiral[0]+chiral[1],2*chiral[1]+chiral[0]); 888 fprintf(stdout, "Greatest Common Denominator of (n, m) is %d\n", ggTsmall); 881 889 fprintf(stdout, "Greatest Common Denominator of (2n+m, 2m+n) is %d\n", ggT); 882 890 fprintf(stdout, "chiral0: %d\tchiral1: %d\n", chiral[0], chiral[1]); 883 891 for (i=0;i<NDIM;i++) { 884 Tubevector[axis[0]][i] = (double)chiral[0] * Vector[axis[0]][i] + (double)chiral[1] * Vector[axis[1]][i];885 //Tubevector[axis[0]][i] = chiral[0] * Vector[axis[0]][i] + chiral[1] * Vector[axis[1]][i];892 // Tubevector[axis[0]][i] = (double)chiral[0] * Vector[axis[0]][i] + (double)chiral[1] * Vector[axis[1]][i]; 893 Tubevector[axis[0]][i] = chiral[0] * Vector[axis[0]][i] + chiral[1] * Vector[axis[1]][i]; 886 894 //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]; 887 895 //Tubevector[axis[1]][i] = -chiral[1] * Vector[axis[0]][i] + chiral[0] * Vector[axis[1]][i]; 888 Tubevector[axis[1]][i] = (double)chiral[0] * OrthoVector[axis[0]][i] - (double)chiral[1] * OrthoVector[axis[1]][i]; 896 // Tubevector[axis[1]][i] = (double)chiral[0] * OrthoVector[axis[0]][i] - (double)chiral[1] * OrthoVector[axis[1]][i]; 897 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]; 889 898 //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]; 890 899 // 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", … … 926 935 x1 = gsl_vector_get(u,0)*(double)i; 927 936 x2 = gsl_vector_get(u,1)*(double)i; 928 x3 =929 937 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)); 930 938 if (( fabs( ((int)(x1+x1/fabs(x1)*.5)) - (x1) ) < 1e-6) && ( fabs( ((int)(x2+x2/fabs(x2)*.5)) - (x2) ) < 1e-6 )) { … … 933 941 } 934 942 } 935 fprintf(stdout, "(c,d) = (%lg,%lg)\n",gsl_vector_get(u,0), gsl_vector_get(u,1)); 936 937 // get length 943 x1 = fabs(gsl_vector_get(u,0)); 944 x2 = fabs(gsl_vector_get(u,1)); 945 fprintf(stdout, "(c,d) = (%lg,%lg)\n",((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5))); 946 j = GCD(((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5))); 947 fprintf(stdout, "GCD(%d,%d) = %i", ((int)(x1+x1/fabs(x1)*.5)), ((int)(x2+x2/fabs(x2)*.5)), j); 948 for (i=0;i<2;i++) 949 gsl_vector_set(u,i, gsl_vector_get(u,i)/(double)j); 950 // get length 938 951 double x[NDIM]; 939 952 for (i=0;i<NDIM;i++) … … 1325 1338 fprintf(SheetFile, "%s\t%5.5lg\t%5.5lg\t%5.5lg\n", atombuffer[nr].name, coord[0], coord[1], coord[2]); 1326 1339 // rotate to align the sheet in xy plane 1327 x1 = coord[0]*cos( -angle) + coord[1] * sin(-angle);1328 x2 = coord[0]*(-sin( -angle)) + coord[1] * cos(-angle);1340 x1 = coord[0]*cos(angle) + coord[1] * sin(angle); 1341 x2 = coord[0]*(-sin(angle)) + coord[1] * cos(angle); 1329 1342 x3 = coord[2]; 1330 1343 fprintf(SheetFileAligned, "%s\t%5.5lg\t%5.5lg\t%5.5lg\n", atombuffer[nr].name, x1, x2, x3); -
util/src/NanoCreator.h
r09ed91 r961e9c 2 2 #define NANOCREATOR_H_ 3 3 4 #define MYEPSILON 1e-1 34 #define MYEPSILON 1e-1 5 5 6 6 struct Atoms
Note:
See TracChangeset
for help on using the changeset viewer.