+ if(!strcmp(l_file,""))
+ {
+ i=max_x*max_y*max_z;
+ d3_lattice_init(&argc,argv,&d3_l,max_x,max_y,max_z);
+ if((d3_l.status=(unsigned char *)malloc(i*sizeof(unsigned char)))==NULL)
+ {
+ puts("failed allocating status buffer");
+ return -1;
+ }
+ memset(d3_l.status,0,i*sizeof(unsigned char));
+ if((d3_l.extra=(int *)malloc(i*sizeof(int)))==NULL)
+ {
+ puts("failed allocating concentration buffer");
+ return -1;
+ }
+ memset(d3_l.extra,0,i*sizeof(int));
+ } else
+ {
+ load_from_file(l_file,&d3_l,&my_info);
+ d3_lattice_init(&argc,argv,&d3_l,d3_l.max_x,d3_l.max_y,d3_l.max_z);
+ }
+
+ d3_event_init(&d3_l);
+
+ strcpy(a_txt,"args:");
+ sprintf(s_txt,"steps: %d",my_info.steps);
+ sprintf(r_txt,"pressure range: %d",my_info.range);
+ sprintf(ap_txt,"pressure faktor: %.2f",my_info.a_ap);
+ sprintf(ap2_txt,"pressure offset: %.2f",my_info.b_ap);
+ sprintf(el_txt,"energy loss slope: %.2f",my_info.a_el);
+ sprintf(el2_txt,"energy loss offset: %.2f",my_info.b_el);
+ sprintf(cd_txt,"c distrib slope: %.2f",my_info.a_cd);
+ sprintf(cd2_txt,"c distrib offset: %.2f",my_info.b_cd);
+ sprintf(dr_txt,"diffusion rate: %.2f",my_info.d_r);
+ arg_v[1]=x_txt;
+ arg_v[2]=y_txt;
+ arg_v[3]=z_txt;
+ arg_v[4]=NULL;
+ arg_v[5]=status_txt;
+ arg_v[6]=conc_txt;
+ arg_v[7]=NULL;
+ arg_v[8]=NULL;
+ arg_v[9]=NULL;
+ arg_v[10]=steps_txt;;
+ arg_v[11]=cc_txt;
+ arg_v[12]=NULL;
+ arg_v[13]=NULL;
+ arg_v[14]=a_txt;
+ arg_v[15]=NULL;
+ arg_v[16]=s_txt;
+ arg_v[17]=r_txt;
+ arg_v[18]=ap_txt;
+ arg_v[19]=ap2_txt;
+ arg_v[20]=el_txt;
+ arg_v[21]=el2_txt;
+ arg_v[22]=cd_txt;
+ arg_v[23]=cd2_txt;
+ arg_v[24]=dr_txt;
+
+ if(!strcmp(l_file,""))
+ {
+ i=0;
+ while((i<my_info.steps) && (quit==0) && (escape==0))
+ {
+ x_c=get_rand(d3_l.max_x);
+ y_c=get_rand(d3_l.max_y);
+ z_c=get_rand_lgp(d3_l.max_z,my_info.a_el,my_info.b_el);
+ distrib_c(&d3_l,my_info.d_r,my_info.a_cd,my_info.b_cd);
+ process_cell(&d3_l,x_c,y_c,z_c,my_info.range,my_info.a_ap,my_info.b_ap,&(my_info.cc));
+ if(i%refresh==0)
+ {
+ sprintf(x_txt,"x: %d",x+1);
+ sprintf(y_txt,"y: %d",y+1);
+ sprintf(z_txt,"z: %d",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');
+ 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,24,arg_v);
+ // scan_event(&d3_l,&x,&y,&z,&quit,&escape);
+ }
+ i++;
+ }
+ }
+
+ if(strcmp(s_file,"")) save_to_file(s_file,&d3_l,&my_info);
+
+ while((quit==0) && (escape==0) && (nowait==0))
+ {
+ sprintf(x_txt,"x: %d",x+1);
+ sprintf(y_txt,"y: %d",y+1);
+ sprintf(z_txt,"z: %d",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');
+ sprintf(conc_txt,"conc: %d",*(d3_l.extra+x+y*d3_l.max_x+z*d3_l.max_x*d3_l.max_y));
+ strcpy(steps_txt,"step: end!");
+ sprintf(cc_txt,"total c: %d",my_info.cc);
+ d3_lattice_draw(&d3_l,x,y,z,24,arg_v);
+ scan_event(&d3_l,&x,&y,&z,&quit,&escape);
+ }