X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fnlsop.git;a=blobdiff_plain;f=nlsop.c;h=2222fca666f3d1ae19afbf3fb9affdbce61335b2;hp=f0305616392cf5898b3dcba00ada74465c915746;hb=21bb2d2c6e2d1de0e1c4a75d114a87a94b39ba8c;hpb=00d21a74bbdcef8522ba629280353e84158dc7d1 diff --git a/nlsop.c b/nlsop.c index f030561..2222fca 100644 --- a/nlsop.c +++ b/nlsop.c @@ -283,7 +283,7 @@ int calc_pressure(d3_lattice *d3_l,int range) } } } - *(unsigned char *)(d3_l->v_ptr+x+y*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)=(unsigned char)(count*255/max); + *((unsigned int *)(d3_l->v_ptr)+x+y*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)=(count*500/max); } } } @@ -318,7 +318,6 @@ int write_ac_distr(d3_lattice *d3_l,int ac_distr) char file[32]; int si_count; - si_count=d3_l->max_x*d3_l->max_y*SI_PER_VOLUME; if(ac_distr==1) strcpy(file,"carbon_in_av.plot"); if(ac_distr==2) strcpy(file,"carbon_in_cv.plot"); if(ac_distr==3) strcpy(file,"carbon.plot"); @@ -333,23 +332,43 @@ int write_ac_distr(d3_lattice *d3_l,int ac_distr) for(z=0;zmax_z;z++) { count=0; + si_count=0; for(x=0;xmax_x;x++) { for(y=0;ymax_y;y++) { offset=x+y*d3_l->max_x+z*d3_l->max_x*d3_l->max_y; if(ac_distr==1) - if(*(d3_l->status+offset)&AMORPH) count+=*(d3_l->extra+offset); + if(*(d3_l->status+offset)&AMORPH) + { + count+=*(d3_l->extra+offset); + si_count+=1; + } if(ac_distr==2) - if(!(*(d3_l->status+offset)&AMORPH)) count+=*(d3_l->extra+offset); - if(ac_distr==3) count+=*(d3_l->extra+offset); + if(!(*(d3_l->status+offset)&AMORPH)) + { + count+=*(d3_l->extra+offset); + si_count+=1; + } + if(ac_distr==3) + { + count+=*(d3_l->extra+offset); + si_count+=1; + } if(ac_distr==4) if(*(d3_l->status+offset)&AMORPH) count+=1; } } + si_count*=SI_PER_VOLUME; if(ac_distr==4) dprintf(fd,"%d %d\n",z*CELL_LENGTH,count); #ifdef ATPROZ - else dprintf(fd,"%d %f\n",z*CELL_LENGTH,100.0*count/si_count); + else + { + if(si_count) + dprintf(fd,"%d %f\n",z*CELL_LENGTH,100.0*count/(si_count+count)); + else + dprintf(fd,"%d 0\n",z*CELL_LENGTH); + } #else else dprintf(fd,"%d %d\n",z*CELL_LENGTH,count/(d3_l->max_x*d3_l->max_y)); #endif @@ -416,7 +435,7 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) } if(window==7) { - sprintf(bmpfile,"x-z_a_cdistr_%d.bmp",y); + sprintf(bmpfile,"x-z_pressure_%d.bmp",y); foo=3*d3_l->max_x; size=(foo+(4-foo%4))*d3_l->max_z; height=d3_l->max_z; @@ -424,7 +443,7 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) } if(window==8) { - sprintf(bmpfile,"y-z_a_cdistr_%d.bmp",x); + sprintf(bmpfile,"y-z_pressure_%d.bmp",x); foo=3*d3_l->max_y; size=(foo+(4-foo%4))*d3_l->max_z; height=d3_l->max_z; @@ -432,7 +451,7 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) } if(window==9) { - sprintf(bmpfile,"x-y_a_cdistr_%d.bmp",z); + sprintf(bmpfile,"x-y_pressure_%d.bmp",z); foo=3*d3_l->max_x; size=(foo+(4-foo%4))*d3_l->max_y; height=d3_l->max_y; @@ -593,8 +612,15 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) for(i=0;imax_x;i++) { sum=*(d3_l->extra+i+y*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y); - sum=sum*255/max; - memset(buf,(unsigned char)sum,3); + sum=sum*500/max; + buf[2]=0; + if(sum<=255) { + buf[1]=0; + buf[0]=sum; + } else { + buf[1]=(sum-255); + buf[0]=0xff; + } if(write(fd,buf,3)<3) { puts("failed writing rgb values to bmp file"); @@ -619,8 +645,15 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) for(i=0;imax_x;i++) { sum=*(d3_l->extra+x+i*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y); - sum=sum*255/max; - memset(buf,(unsigned char)sum,3); + sum=sum*500/max; + buf[2]=0; + if(sum<=255) { + buf[1]=0; + buf[0]=sum; + } else { + buf[1]=(sum-255); + buf[0]=0xff; + } if(write(fd,buf,3)<3) { puts("failed writing rgb values to bmp file"); @@ -645,8 +678,15 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) for(i=0;imax_x;i++) { sum=*(d3_l->extra+i+(d3_l->max_y-j-1)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y); - sum=sum*255/max; - memset(buf,(unsigned char)sum,3); + sum=sum*500/max; + buf[2]=0; + if(sum<=255) { + buf[1]=0; + buf[0]=sum; + } else { + buf[1]=(sum-255); + buf[0]=0xff; + } if(write(fd,buf,3)<3) { puts("failed writing rgb values to bmp file"); @@ -670,10 +710,15 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) { for(i=0;imax_x;i++) { - 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) sum=*(d3_l->extra+i+y*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y); - else sum=0; - sum=sum*255/max; - memset(buf,(unsigned char)sum,3); + sum=*((unsigned int *)(d3_l->v_ptr)+i+y*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y); + buf[0]=0; + if(sum<=255) { + buf[1]=0; + buf[2]=sum; + } else { + buf[1]=(sum-255); + buf[2]=0xff; + } if(write(fd,buf,3)<3) { puts("failed writing rgb values to bmp file"); @@ -697,10 +742,15 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) { for(i=0;imax_x;i++) { - 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) sum=*(d3_l->extra+x+i*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y); - else sum=0; - sum=sum*255/max; - memset(buf,(unsigned char)sum,3); + sum=*((unsigned int *)(d3_l->v_ptr)+x+i*d3_l->max_x+(d3_l->max_z-j-1)*d3_l->max_x*d3_l->max_y); + buf[0]=0; + if(sum<=255) { + buf[1]=0; + buf[2]=sum; + } else { + buf[1]=(sum-255); + buf[2]=0xff; + } if(write(fd,buf,3)<3) { puts("failed writing rgb values to bmp file"); @@ -724,10 +774,16 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z,int max) { for(i=0;imax_x;i++) { - 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) sum=*(d3_l->extra+i+(d3_l->max_y-j-1)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y); - else sum=0; - sum=sum*255/max; - memset(buf,(unsigned char)sum,3); + sum=*((unsigned int *)(d3_l->v_ptr)+i+(d3_l->max_y-j-1)*d3_l->max_x+z*d3_l->max_x*d3_l->max_y); + buf[0]=0; + if(sum<=255) { + buf[1]=0; + buf[2]=sum; + } else { + buf[1]=(sum-255); + buf[2]=0xff; + } + printf("sum = %d => r: %02x g: %02x b: %02x\n",sum,buf[2],buf[1],buf[0]); if(write(fd,buf,3)<3) { puts("failed writing rgb values to bmp file"); @@ -1140,7 +1196,7 @@ int main(int argc,char **argv) d3_lattice d3_l; info my_info; unsigned char mode; - //double c_ratio; + double c_ratio; #ifdef USE_DFB_API int max_extra; #endif @@ -1148,6 +1204,7 @@ int main(int argc,char **argv) u32 *n_e_loss; u32 ne_max,ip_max; u32 nel_z; + unsigned char do_sputter; d3_l.max_x=_X; d3_l.max_y=_Y; @@ -1182,6 +1239,7 @@ int main(int argc,char **argv) sai=0; sacl=0; eacl=0; + do_sputter=1; #ifdef MORE_PRINTF printf("reading argv ..."); @@ -1407,14 +1465,14 @@ int main(int argc,char **argv) if(c_profile[d3_l.max_z-1]!=0) { printf("max_z (%d) too small - sputtering not possible\n",d3_l.max_z); - return -1; + do_sputter=0; } /* calculate ratio of c_simwindow / c_total */ - //if(get_c_ratio(&c_ratio,p_file,&my_info,&d3_l)!=1) - //{ - // puts("failed calculating ratio"); - // return -1; - //} + if(!do_sputter) + { + get_c_ratio(&c_ratio,p_file,&my_info,&d3_l); + printf("calculated c ratio: %f\n",c_ratio); + } /* sputtering realy possible ?*/ if(n_e_loss[d3_l.max_z-1]!=0) @@ -1432,6 +1490,9 @@ int main(int argc,char **argv) #endif #ifdef DEBUG_NORM printf("%d\n",get_rand(d3_l.max_z)); +#endif +#ifdef DEBUG_LINEAR + printf("%d\n",get_rand_lgp(d3_l.max_z,1,0)); #endif if(i==10000000) return 1; i++; @@ -1482,7 +1543,7 @@ int main(int argc,char **argv) #endif } i++; - if(i%my_info.s_rate==0) sputter(&d3_l); + if((do_sputter)&(i%my_info.s_rate==0)) sputter(&d3_l); } } @@ -1495,7 +1556,7 @@ int main(int argc,char **argv) #ifdef USE_DFB_API /* allocating buffer for pressure values */ printf("allocating buffer for preassure values ..."); - if((d3_l.v_ptr=malloc(d3_l.max_x*d3_l.max_y*d3_l.max_z*sizeof(unsigned char)))==NULL) + if((d3_l.v_ptr=malloc(d3_l.max_x*d3_l.max_y*d3_l.max_z*sizeof(unsigned int)))==NULL) { puts("cannot allocate buffer for pressure values"); return -1;