X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fnlsop.git;a=blobdiff_plain;f=nlsop.c;h=243cd9207ea90677c010cda6ebc9c7bfe6eb1a5b;hp=efd7f918d86aad01ed483d411ae98f8a36bb87ac;hb=14f4760167409b235fb1d03e1f12733c85037eb6;hpb=04b7788d3416aab2033f8f12943aace858d136c6 diff --git a/nlsop.c b/nlsop.c index efd7f91..243cd92 100644 --- a/nlsop.c +++ b/nlsop.c @@ -1,6 +1,8 @@ /* * nlsop.c * + * author: frank zirkelbach (frank.zirkelbach@physik.uni-augsburg.de) + * * this program tries helping to understand the amorphous depuration * and recrystallization of SiCx while ion implantation at temperatures * below 400 degree celsius. @@ -10,6 +12,23 @@ * refs: * - J. K. N. Lindner. Habilationsschrift, Universitaet Augsburg. * - Maik Haeberlen. Diplomarbeit, Universitaet Augsburg. + * + * Copyright (C) 2004 Frank Zirkelbach + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * */ #define _GNU_SOURCE @@ -63,7 +82,7 @@ int usage(void) puts("-L \t load from file"); puts("-S \t save to file"); puts("-R \t read from random file"); - puts("-P \t specify implantatin profile file"); + puts("-P \t specify implantation profile file"); return 1; } @@ -317,26 +336,51 @@ int calc_max_extra(d3_lattice *d3_l) int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) { - int fd,i,j,size=0,foo=0; + int fd,i,j,size=0,foo=0,end=0; int width=0,height=0; char bmpfile[MAX_CHARS]; char buf[128]; - if(window==1) + if(((window==4)||(window==5))&&(d3_l->max_zmax_x; - size=(foo+(4-foo%4))*d3_l->max_z; + if(window==1) + { + size=(foo+(4-foo%4))*d3_l->max_z; + height=d3_l->max_z; + } + else + { + size=(foo+(4-foo%4))*FFT_HEIGHT; + end=d3_l->max_z-FFT_HEIGHT; + height=FFT_HEIGHT; + } width=d3_l->max_x; - height=d3_l->max_z; } - if(window==2) + if(window%3==2) { sprintf(bmpfile,"y-z_%d.bmp",x); foo=3*d3_l->max_y; - size=(foo+(4-foo%4))*d3_l->max_z; + if(window==2) + { + size=(foo+(4-foo%4))*d3_l->max_z; + height=d3_l->max_z; + } + else + { + size=(foo+(4-foo%4))*FFT_HEIGHT; + end=d3_l->max_z-FFT_HEIGHT; + height=FFT_HEIGHT; + } width=d3_l->max_y; - height=d3_l->max_z; } if(window==3) { @@ -390,9 +434,9 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) puts("failed writing bmp header"); return -1; } - if(window==1) + if(window%3==1) { - for(j=0;jmax_z;j++) + for(j=0;jmax_z-end;j++) { for(i=0;imax_x;i++) { @@ -415,9 +459,9 @@ int write_bmp(d3_lattice *d3_l,int window,u32 x,u32 y,u32 z) } } } - if(window==2) + if(window%3==2) { - for(j=0;jmax_z;j++) + for(j=0;jmax_z-end;j++) { for(i=0;imax_y;i++) { @@ -727,6 +771,7 @@ int main(int argc,char **argv) break; case 'i': c_diff=0; + my_info.dr_cc=0; break; case 's': my_info.steps=atoi(argv[++i]); @@ -855,7 +900,8 @@ int main(int argc,char **argv) sprintf(cd_txt,"a_cd: %.3f b_cd: %.3f",my_info.a_cd,my_info.b_cd); sprintf(cp_txt,"a_cp: %.4f",my_info.a_cp); sprintf(dr_ac_txt,"a/c diffusion rate: %.4f",my_info.dr_ac); - sprintf(dr_cc_txt,"c/c diffusion rate: %.4f",my_info.dr_cc); + if(my_info.dr_cc!=0) sprintf(dr_cc_txt,"c/c diffusion rate: %.4f",my_info.dr_cc); + else sprintf(dr_cc_txt,"c/c diffusion rate: none"); sprintf(zdiff_txt,"diffusion in z direction: %c",my_info.z_diff?'y':'n'); sprintf(diff_txt,"diffusion every %d steps",my_info.diff_rate); strcpy(mode_txt,"view: a/c mode");