| [a0bcf1] | 1 | /* | 
|---|
|  | 2 | Project: CP | 
|---|
|  | 3 | Jan Hamaekers | 
|---|
|  | 4 | 1999 | 
|---|
|  | 5 |  | 
|---|
|  | 6 | File: CreateGaAs.c | 
|---|
|  | 7 |  | 
|---|
|  | 8 | */ | 
|---|
|  | 9 | /*$Id: CreateGaAs.c,v 1.2 2007-09-03 16:28:58 heber Exp $*/ | 
|---|
|  | 10 |  | 
|---|
|  | 11 | #include<stdlib.h> | 
|---|
|  | 12 | #include<stdio.h> | 
|---|
|  | 13 | #include<math.h> | 
|---|
|  | 14 |  | 
|---|
|  | 15 | int main(int argc, char** argv) { | 
|---|
|  | 16 | int n[3], N[3]; | 
|---|
|  | 17 | double L[3], O[3]; | 
|---|
|  | 18 | double Fac; | 
|---|
|  | 19 | FILE *targetbox, *targetpsi, *targetion; | 
|---|
|  | 20 | char dummy[255]; | 
|---|
|  | 21 | L[0] = 10.47; | 
|---|
|  | 22 | L[1] = 10.47; | 
|---|
|  | 23 | L[2] = 10.47; | 
|---|
|  | 24 | if(argc < 6) { | 
|---|
|  | 25 | fprintf(stderr,"Not enough arguments\nUsage: CreateGaAs source target nmax\n"); | 
|---|
|  | 26 | exit(1); | 
|---|
|  | 27 | } | 
|---|
|  | 28 | sprintf(dummy, "%s.box", argv[1]); | 
|---|
|  | 29 | targetbox = fopen(dummy, "w"); | 
|---|
|  | 30 | if(targetbox == 0) { | 
|---|
|  | 31 | fprintf(stderr,"Could not open targetbox\n"); | 
|---|
|  | 32 | exit(1); | 
|---|
|  | 33 | } | 
|---|
|  | 34 | sprintf(dummy, "%s.psi", argv[1]); | 
|---|
|  | 35 | targetpsi = fopen(dummy, "w"); | 
|---|
|  | 36 | if(targetpsi == 0) { | 
|---|
|  | 37 | fprintf(stderr,"Could not open targetpsi\n"); | 
|---|
|  | 38 | exit(1); | 
|---|
|  | 39 | } | 
|---|
|  | 40 | sprintf(dummy, "%s.ion", argv[1]); | 
|---|
|  | 41 | targetion = fopen(dummy, "w"); | 
|---|
|  | 42 | if(targetion == 0) { | 
|---|
|  | 43 | fprintf(stderr,"Could not open targetion\n"); | 
|---|
|  | 44 | exit(1); | 
|---|
|  | 45 | } | 
|---|
|  | 46 | N[0] = atoi(argv[2]); | 
|---|
|  | 47 | N[1] = atoi(argv[3]); | 
|---|
|  | 48 | N[2] = atoi(argv[4]); | 
|---|
|  | 49 | Fac = atof(argv[5]); | 
|---|
|  | 50 | fprintf(targetbox, "%e\n0.0\t%e\n0.0\t0.0\t%e\n", N[0]*L[0], N[1]*L[1], N[2]*L[2]); | 
|---|
|  | 51 | fprintf(targetpsi, "MaxPsiDouble\t%i\n", 16*N[0]*N[1]*N[2]); | 
|---|
|  | 52 | fprintf(targetion, "%i 31 1.0 3 3 %e\n", 4*N[0]*N[1]*N[2],Fac); | 
|---|
|  | 53 | for (n[0]=0; n[0]<N[0];n[0]++) | 
|---|
|  | 54 | for (n[1]=0; n[1]<N[1];n[1]++) | 
|---|
|  | 55 | for (n[2]=0; n[2]<N[2];n[2]++) { | 
|---|
|  | 56 | O[0] = n[0]*L[0]; | 
|---|
|  | 57 | O[1] = n[1]*L[1]; | 
|---|
|  | 58 | O[2] = n[2]*L[2]; | 
|---|
|  | 59 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+0.0, O[1]+0.0, O[2]+0.0); | 
|---|
|  | 60 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+L[0]*0.5, O[1]+L[1]*0.5, O[2]+0.0); | 
|---|
|  | 61 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+L[0]*0.5, O[1]+0.0, O[2]+L[2]*0.5); | 
|---|
|  | 62 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+0.0, O[1]+L[1]*0.5, O[2]+L[2]*0.5); | 
|---|
|  | 63 | } | 
|---|
|  | 64 | fprintf(targetion, "%i 33 1.0 3 3 %e\n", 4*N[0]*N[1]*N[2],Fac); | 
|---|
|  | 65 | for (n[0]=0; n[0]<N[0];n[0]++) | 
|---|
|  | 66 | for (n[1]=0; n[1]<N[1];n[1]++) | 
|---|
|  | 67 | for (n[2]=0; n[2]<N[2];n[2]++) { | 
|---|
|  | 68 | O[0] = n[0]*L[0]+L[0]*0.25; | 
|---|
|  | 69 | O[1] = n[1]*L[1]+L[1]*0.25; | 
|---|
|  | 70 | O[2] = n[2]*L[2]+L[2]*0.25; | 
|---|
|  | 71 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+0.0, O[1]+0.0, O[2]+0.0); | 
|---|
|  | 72 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+L[0]*0.5, O[1]+L[1]*0.5, O[2]+0.0); | 
|---|
|  | 73 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+L[0]*0.5, O[1]+0.0, O[2]+L[2]*0.5); | 
|---|
|  | 74 | fprintf(targetion, "%e\t%e\t%e\t0\n", O[0]+0.0, O[1]+L[1]*0.5, O[2]+L[2]*0.5); | 
|---|
|  | 75 | } | 
|---|
|  | 76 | fclose(targetion); | 
|---|
|  | 77 | fclose(targetbox); | 
|---|
|  | 78 | fclose(targetpsi); | 
|---|
|  | 79 | return(0); | 
|---|
|  | 80 | } | 
|---|