4 * this program tries helping to understand the amorphous depuration
5 * and recrystallization of SiCx while ion implanation. hopefully the program
6 * will simulate the stabilization of the selforganizing structure in the
10 * - J. K. N. Lindner. Habilationsschrift, Universitaet Augsburg.
11 * - Maik Haeberlen. Diplomarbeit, Universitaet Augsburg.
16 #include <sys/types.h>
22 /* global variables */
24 int random_fd; /* /dev/urandom file descriptor */
30 puts("-a <value> \t slope of nuclear energy loss (default 1)");
31 puts("-c <value> \t nuclear enery loss at depths 0 (default 0)");
32 puts("-x <value> \t # x segments (default 50)");
33 puts("-y <value> \t # y segments (default 50)");
34 puts("-z <value> \t # z segments (default 100)");
35 puts("-s <value> \t # steps to calculate (default 5000");
39 int make_amorph(u32 *segment)
41 *segment=*segment|AMORPH
45 /* look at segment ... */
46 int process_segment(u32 *segment)
48 /* tag it ... testing! */
54 int main(int argc,char **argv)
56 u32 x_seg,y_seg,z_seg; /* amount of segments */
57 u32 x,y,z; /* segments */
58 int i; /* for counting */
59 int slope_nel,start_nel; /* nuclear energy loss: slope, constant */
60 int steps; /* # steps */
67 slope_nel=DEFAULT_SLOPE_NEL;
68 start_nel=DEFAULT_START_NEL;
71 /* parse command args */
83 slope_nel=atoi(argv[++i]);
86 start_nel=atoi(argv[++i]);
89 x_seg=atoi(argv[++i]);
92 y_seg=atoi(argv[++i]);
95 z_seg=atoi(argv[++i]);
98 steps=atoi(argv[++i]);
108 if((random_fd=open("/dev/urandom",O_RDONLY))<0)
110 puts("cannot open /dev/urandom\n");
114 /* calculate sum_z_segments one time! */
116 for(i=1;i<=z_seg;i++) sum_z_segments+=(start_nel+i*slope_nel);
117 printfd("debug: sum z segments -> %d\n",sum_z_segments);
122 /* allocate segments */
123 if((segments_p=malloc(x_seg*y_seg*z_seg*sizeof(u32)))==NULL)
125 puts("failed allocating memory for segments\n");
128 memset(segments_p,0,x_seg*y_seg*z_seg*sizeof(u32));
135 z=rand_get_lgp(slope_nel,start_nel);
138 distrib_c_conc(segments_p);
139 process_segment((u32)(segments_p+x+y*(x_seg-1)+z*(x_seg-1)*(y_seg-1)));