X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fmorpheus.git;a=blobdiff_plain;f=main.c;h=d171490c9286ba63af063212c3ca7db0ea01db66;hp=2e9cc0c46f0f06189e32fd4719a5de44af903a40;hb=81759e39f6f84b5e1e31c5a680dec75e4299849b;hpb=4dc55f36080bc8cc78c07efe25bf3f222c3d0a9a diff --git a/main.c b/main.c index 2e9cc0c..d171490 100644 --- a/main.c +++ b/main.c @@ -26,6 +26,8 @@ #include "display.h" /* global variables */ +u32 *rand_buf,*rand_current; +char random_file[MAX_CHARS_RANDOM_FILE]; u32 gr; int random_fd; /* /dev/urandom file descriptor */ @@ -48,6 +50,7 @@ int usage() printf("-p \t p0 for probability of cell getting amorph (default %f)\n",DEFAULT_A_P_P0); printf("-C \t C start concentration (default %d)\n",DEFAULT_C_DIST_START_CONC); printf("-S \t slope of linear C distribution (default %d)\n",DEFAULT_C_DIST_SLOPE); + puts("-R \t read random datat from file (default not used)"); return -23; } @@ -65,10 +68,8 @@ int make_cryst(cell *cell) int distrib_c_conc(cell *cell_p,int c_c0,int c_slope,u32 c_conc,u32 x_max,u32 y_max,u32 z_max) { - /* cryst. c to distribute */ - int i,j; - u32 area,c_area,total; + u32 area,c_area,total,count; u32 x,y,z,sum_c_z; total=0; @@ -77,17 +78,22 @@ int distrib_c_conc(cell *cell_p,int c_c0,int c_slope,u32 c_conc,u32 x_max,u32 y_ for(i=0;istatus&AMORPH) count++; + } + for(j=0;jstatus&AMORPH) { - (cell_p+j+i*area)->conc=c_area/area; - total+=c_area/area; + (cell_p+j+i*area)->conc=c_area/count; + total+=c_area/count; } } j=0; - while(jstatus&AMORPH) pressure+=(cell_p+((x+x_max+i)%x_max)+((y+j+y_max)%y_max)*x_max+((z+k+z_max)%z_max)*x_max*y_max)->conc*faktor*URAND_2BYTE_MAX/(i*i+j*j+k*k); - if((cell_p+((x+x_max+i)%x_max)+((y+j+y_max)%y_max)*x_max+((z+k+z_max)%z_max)*x_max*y_max)->status&AMORPH) pressure+=faktor*URAND_2BYTE_MAX/(i*i+j*j+k*k); + // if((cell_p+((x+x_max+i)%x_max)+((y+j+y_max)%y_max)*x_max+((z+k+z_max)%z_max)*x_max*y_max)->status&AMORPH) pressure+=faktor*URAND_2BYTE_MAX/(i*i+j*j+k*k); + if((cell_p+((x+x_max+i)%x_max)+((y+j+y_max)%y_max)*x_max+z*x_max*y_max)->status&AMORPH) pressure+=faktor*URAND_2BYTE_MAX/(i*i+j*j); } - } + // } } } + pressure*=this_cell->conc; if(this_cell->status&AMORPH) { /* wrong probability! just test by now ...*/ @@ -192,6 +202,7 @@ int main(int argc,char **argv) display_y=y_cell/2; display_z=z_cell/2; display_refresh_rate=DEFAULT_DISPLAY_REF_RATE; + strcpy(random_file,""); /* parse command args */ for(i=1;i