printf("-s <value> \t steps (default %d)\n",STEPS);
printf("-d <value> \t refresh display (default %d)\n",REFRESH);
printf("-r <value> \t amorphous influence range (default %d)\n",RANGE);
- printf("-f <value> \t pressure = <value> * 1/distance^2 (default %f)\n",A_AP);
- printf("-p <value> \t pressure offset (default %f)\n",B_AP);
- printf("-F <value> \t proportionality constant between c conc and ability to get amorphous (default %f)\n",A_CP);
+ printf("-f <value> \t stress induced amorphization influence (default %f)\n",S_D);
+ printf("-p <value> \t ballistic amorphization influence (default %f)\n",B_D);
+ printf("-F <value> \t carbon induced amorphization influence (default %f)\n",C_D);
printf("-D <value> \t diffusion rate from cryst to amorph cells (default %f)\n",DR_AC);
printf("-c <value> \t diffusion rate in cryst cells (default %f)\n",DR_CC);
printf("-e <value> \t do diffusion every <value> steps (default %d)\n",DIFF_RATE);
thiz=d3_l->status+x+y*d3_l->max_x+z*d3_l->max_x*d3_l->max_y;
conc=d3_l->extra+x+y*d3_l->max_x+z*d3_l->max_x*d3_l->max_y;
- p=my_info->b_ap*nel_z;
+ p=my_info->b*nel_z;
for(i=-(my_info->range);i<=my_info->range;i++)
{
for(j=-(my_info->range);j<=my_info->range;j++)
if(!(i==0 && j==0))
{
off=((x+d3_l->max_x+i)%d3_l->max_x)+((y+d3_l->max_y+j)%d3_l->max_x)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y;
- if(*(d3_l->status+off)&AMORPH) p+=my_info->a_ap*(*(d3_l->extra+off))*URAND_MAX/(i*i+j*j);
+ if(*(d3_l->status+off)&AMORPH) p+=my_info->s*(*(d3_l->extra+off))*URAND_MAX/(i*i+j*j);
}
}
}
- p+=*conc*my_info->a_cp*URAND_MAX;
+ p+=*conc*my_info->c*URAND_MAX;
if(!(*thiz&AMORPH))
{
if(get_rand(URAND_MAX)<=p) MAKE_AMORPH(thiz);
free(flag);
#ifdef DEBUG_INTERPOL_PROFILE
- printf("debug: (interpolated profile)\n");
+ printf("debug: %s (interpolated profile)\n",file);
for(i=0;i<d3_l->max_z;i++) printf("%d %d\n",i,graph[i]);
#endif
resave=RESAVE;
my_info.z_diff=0;
my_info.c_diff=1;
- my_info.a_ap=A_AP;
- my_info.b_ap=B_AP;
- my_info.a_cp=A_CP;
+ my_info.s=S_D;
+ my_info.b=B_D;
+ my_info.c=C_D;
my_info.cc=CC;
my_info.dr_ac=DR_AC;
my_info.dr_cc=DR_CC;
my_info.range=atoi(argv[++i]);
break;
case 'f':
- my_info.a_ap=atof(argv[++i]);
+ my_info.s=atof(argv[++i]);
break;
case 'p':
- my_info.b_ap=atof(argv[++i]);
+ my_info.b=atof(argv[++i]);
break;
case 'F':
- my_info.a_cp=atof(argv[++i]);
+ my_info.c=atof(argv[++i]);
break;
case 'W':
resave=atoi(argv[++i]);
sprintf(s_txt,"steps: %d",my_info.steps);
sprintf(dose_txt,"dose: %.2fe+17 C/cm²",my_info.steps*1.0/(d3_l.max_x*d3_l.max_y*CELL_LENGTH*CELL_LENGTH*1000));
sprintf(r_txt,"pressure range: %d",my_info.range);
- sprintf(stress_txt,"stress term: %f",my_info.a_ap);
- sprintf(ballistic_txt,"ballistic term: %f",my_info.b_ap);
- sprintf(carbon_txt,"carbon term: %f",my_info.a_cp);
+ sprintf(stress_txt,"stress term: %f",my_info.s);
+ sprintf(ballistic_txt,"ballistic term: %f",my_info.b);
+ sprintf(carbon_txt,"carbon term: %f",my_info.c);
sprintf(dr_ac_txt,"a/c diffusion rate: %f",my_info.dr_ac);
if(my_info.c_diff!=0) sprintf(dr_cc_txt,"c/c diffusion rate: %f",my_info.dr_cc);
else sprintf(dr_cc_txt,"c/c diffusion rate: none");
arg_v[25]=NULL;
#endif
+ /* compute graphs for random number rejection method */
+ if((c_profile=(u32 *)malloc(d3_l.max_z*sizeof(unsigned int)))==NULL)
+ {
+ puts("failed allocating memory for carbon profile graph");
+ return -1;
+ }
+ if((n_e_loss=(u32 *)malloc(d3_l.max_z*sizeof(unsigned int)))==NULL)
+ {
+ puts("failed allocating memory for nuclear energy loss graph");
+ return -1;
+ }
+ ip_max=get_reject_graph(&my_info,&d3_l,p_file,c_profile);
+ ne_max=get_reject_graph(&my_info,&d3_l,n_e_file,n_e_loss);
+
if((!strcmp(l_file,""))||(c_step))
{
/* calculate ratio of c_simwindow / c_total */
puts("failed calculating ratio");
return -1;
}
- /* compute graphs for random number rejection method */
- if((c_profile=(u32 *)malloc(d3_l.max_z*sizeof(unsigned int)))==NULL)
- {
- puts("failed allocating memory for carbon profile graph");
- return -1;
- }
- if((n_e_loss=(u32 *)malloc(d3_l.max_z*sizeof(unsigned int)))==NULL)
- {
- puts("failed allocating memory for nuclear energy loss graph");
- return -1;
- }
- ip_max=get_reject_graph(&my_info,&d3_l,p_file,c_profile);
- ne_max=get_reject_graph(&my_info,&d3_l,n_e_file,n_e_loss);
#ifdef DEBUG_RAND
i=0;
sprintf(conc_txt,"conc: %d",*(d3_l.extra+x+y*d3_l.max_x+z*d3_l.max_x*d3_l.max_y));
sprintf(steps_txt,"step: %d",i);
sprintf(cc_txt,"total c: %d",my_info.cc);
- d3_lattice_draw(&d3_l,x,y,z,25,arg_v,mode,0);
+ d3_lattice_draw(&d3_l,x,y,z,25,arg_v,mode,0,NULL,0,NULL,0);
}
#endif
if(i%resave==0 && strcmp(s_file,"") && resave!=0 && i!=0)
if(switchmode==0) mode=0;
if(switchmode==1) mode=1;
if(switchmode==2) mode=2;
+ if(switchmode==3) mode=3;
/* end of bahh! */
sprintf(xyz_txt,"x: %d y: %d z: %d",x+1,y+1,z+1);
sprintf(status_txt,"status: %c",(*(d3_l.status+x+y*d3_l.max_x+z*d3_l.max_x*d3_l.max_y)&AMORPH)?'a':'c');
if(switchmode==0) strcpy(mode_txt,"view: a/c mode");
if(switchmode==1) strcpy(mode_txt,"view: c conc mode");
if(switchmode==2) strcpy(mode_txt,"view: a pressure mode");
- d3_lattice_draw(&d3_l,x,y,z,25,arg_v,mode,max_extra);
+ if(switchmode==3) strcpy(mode_txt,"view: a/c + profiles mode");
+ d3_lattice_draw(&d3_l,x,y,z,25,arg_v,mode,max_extra,c_profile,ip_max,n_e_loss,ne_max);
bmp=0;
ac_distr=0;
scan_event(&d3_l,&x,&y,&z,&quit,&escape,&switchmode,&bmp,&ac_distr);