fixed dose display
[physik/nlsop.git] / nlsop.c
diff --git a/nlsop.c b/nlsop.c
index d57cc04..712702b 100644 (file)
--- a/nlsop.c
+++ b/nlsop.c
 #define MAKE_AMORPH(N) *(N)|=AMORPH
 #define MAKE_CRYST(N) *(N)&=~AMORPH
 
+/* test globals - get removed or included in my_info struct later */
+int amorph_count;
+int cryst_count;
+
 int usage(void)
 {
  puts("usage:");
@@ -84,14 +88,21 @@ int process_cell(d3_lattice *d3_l,u32 x,u32 y,u32 z,info *my_info)
   }
  }
  p+=*conc*my_info->a_cp*URAND_MAX;
- printf("debug: %f - %u\n",p,URAND_MAX);
  if(!(*thiz&AMORPH))
  {
-  if(get_rand(URAND_MAX)<=p) MAKE_AMORPH(thiz);
+  if(get_rand(URAND_MAX)<=p)
+  {
+   MAKE_AMORPH(thiz);
+   amorph_count++;
+  }
  } else
  {
   /* assume 1-p probability */
-  if(get_rand(URAND_MAX)>p) MAKE_CRYST(thiz);
+  if(get_rand(URAND_MAX)>p)
+  {
+   MAKE_CRYST(thiz);
+   cryst_count++;
+  }
  }
  
  return 1;
@@ -393,6 +404,7 @@ int get_c_ratio(double *c_ratio,char *pfile,info *my_info,d3_lattice *d3_l)
   }
  }
  *c_ratio=d/all;
+ close(p_fd);
 
  return 1;
 }
@@ -426,6 +438,7 @@ int main(int argc,char **argv)
  char diff_txt[MAX_TXT];
  char dr_ac_txt[MAX_TXT];
  char dr_cc_txt[MAX_TXT];
+ char dose_txt[MAX_TXT];
  char mode_txt[MAX_TXT];
  char *arg_v[MAX_ARGV];
 #endif
@@ -465,6 +478,9 @@ int main(int argc,char **argv)
  strcpy(r_file,"");
  mode=0;
 
+ amorph_count=0;
+ cryst_count=0;
+
  for(i=1;i<argc;i++)
  {
   if(argv[i][0]=='-')
@@ -611,6 +627,7 @@ int main(int argc,char **argv)
 #ifdef USE_DFB_API
  strcpy(a_txt,"args:");
  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(ap_txt,"a_ap: %.2f  b_ap: %.3f",my_info.a_ap,my_info.b_ap);
  sprintf(el_txt,"a_el: %.2f  b_el: %.3f",my_info.a_el,my_info.b_el);
@@ -635,10 +652,10 @@ int main(int argc,char **argv)
  arg_v[12]=zdiff_txt;
  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]=NULL;
+ arg_v[15]=s_txt;
+ arg_v[16]=dose_txt;
+ arg_v[17]=NULL;
+ arg_v[18]=r_txt;
  arg_v[19]=ap_txt;
  arg_v[20]=el_txt;
  arg_v[21]=cd_txt;
@@ -669,9 +686,9 @@ int main(int argc,char **argv)
     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');
     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,mode);
+    sprintf(steps_txt,"step: %d  a_count: %d",i,amorph_count);
+    sprintf(cc_txt,"total c: %d  c_count: %d",my_info.cc,cryst_count);
+    d3_lattice_draw(&d3_l,x,y,z,25,arg_v,mode);
    }
 #endif
    if(i%resave==0 && strcmp(s_file,"") && resave!=0 && i!=0)
@@ -712,12 +729,12 @@ int main(int argc,char **argv)
   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');
   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);
+  sprintf(steps_txt,"step: end!  a_count: %d",amorph_count);
+  sprintf(cc_txt,"total c: %d  c_count: %d",my_info.cc,cryst_count);
   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,24,arg_v,mode);
+  d3_lattice_draw(&d3_l,x,y,z,25,arg_v,mode);
   scan_event(&d3_l,&x,&y,&z,&quit,&escape,&switchmode);
  }