X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=nlsop.c;h=5b160bc0bad5da00dad9e4b25817688c9f5a2e3b;hb=27d07bd7fc4b8166dfcfc6177101b778e6b1048c;hp=ec8e4d32946cc5219f526237d73b7797dd93c3fa;hpb=385dd1d28c455f57ecdbdc61766607123a0c5063;p=physik%2Fnlsop.git diff --git a/nlsop.c b/nlsop.c index ec8e4d3..5b160bc 100644 --- a/nlsop.c +++ b/nlsop.c @@ -55,6 +55,7 @@ int usage(void) printf("-D \t diffusion rate from cryst to amorph cells (default %f)\n",DR_AC); printf("-c \t diffusion rate in cryst cells (default %f)\n",DR_CC); printf("-e \t do diffusion every steps (default %d)\n",DIFF_RATE); + puts("-g \t continue simulation from file and step (step > 0)!"); printf("-W \t write every steps to save file (default %d)\n",RESAVE); puts("-C \t convert file to gnuplot format"); puts("-L \t load from file"); @@ -386,7 +387,7 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) { for(i=0;imax_x;i++) { - if(*(d3_l->status+i+y*d3_l->max_x+(d3_l->max_z-j)*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); + if(*(d3_l->status+i+y*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); else memset(buf,0,3); if(write(fd,buf,3)<3) { @@ -411,7 +412,7 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) { for(i=0;imax_y;i++) { - if(*(d3_l->status+x+i*d3_l->max_x+(d3_l->max_z-j)*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); + if(*(d3_l->status+x+i*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); else memset(buf,0,3); if(write(fd,buf,3)<3) { @@ -436,7 +437,7 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) { for(i=0;imax_x;i++) { - if(*(d3_l->status+i+(d3_l->max_y-j)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); + if(*(d3_l->status+i+(d3_l->max_y-j-1)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)&RED) memset(buf,0xff,3); else memset(buf,0,3); if(write(fd,buf,3)<3) { @@ -612,6 +613,7 @@ int main(int argc,char **argv) u32 x,y,z,x_c,y_c,z_c; int i,quit,escape,switchmode,nowait,bmp; int refresh,resave; + int c_step; char s_file[MAX_CHARS]; char s_file_tmp[MAX_CHARS]; char l_file[MAX_CHARS]; @@ -671,6 +673,7 @@ int main(int argc,char **argv) quit=0; escape=0; switchmode=0; + c_step=0; strcpy(s_file,""); strcpy(l_file,""); strcpy(c_file,""); @@ -765,6 +768,10 @@ int main(int argc,char **argv) case 'P': strcpy(p_file,argv[++i]); break; + case 'g': + strcpy(l_file,argv[++i]); + if(i