X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=nlsop.c;h=784b5dd0e3ebb3c81ed00d9a71503186495ff77a;hb=a3957b19b4696cb5f7e3204567dac942bf5b6a21;hp=5b160bc0bad5da00dad9e4b25817688c9f5a2e3b;hpb=27d07bd7fc4b8166dfcfc6177101b778e6b1048c;p=physik%2Fnlsop.git diff --git a/nlsop.c b/nlsop.c index 5b160bc..784b5dd 100644 --- a/nlsop.c +++ b/nlsop.c @@ -1,6 +1,8 @@ /* * nlsop.c * + * author: frank zirkelbach (frank@xeen.net) + * * 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 @@ -32,6 +51,7 @@ /* test globals - get removed or included in my_info struct later */ int amorph_count; int cryst_count; +unsigned char c_diff; int usage(void) { @@ -39,6 +59,7 @@ int usage(void) puts("-h \t\t help"); puts("-n \t\t no user interaction"); puts("-Z \t\t cryst -> amorph c diffusion in z direction"); + puts("-i \t\t no cryst to cryst diffusion"); printf("-a \t slope of nuclear energy loss (default %f)\n",A_EL); printf("-b \t nuclear energy loss offset (default %f)\n",B_EL); printf("-x \t # x cells (default %d)\n",X); @@ -55,13 +76,13 @@ 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)!"); + puts("-g 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"); 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; } @@ -136,7 +157,7 @@ int distrib_c(d3_lattice *d3_l,info *my_info,int step,double c_ratio) for(k=0;kmax_z;k++) { offset=i+j*d3_l->max_x+k*d3_l->max_x*d3_l->max_y; - /* case amorph - amorph <-> cryst diffusion */ + /* case amorph: amorph <- cryst diffusion */ if(*(d3_l->status+offset)&AMORPH) { for(c=-1;c<=1;c++) @@ -185,7 +206,11 @@ int distrib_c(d3_lattice *d3_l,info *my_info,int step,double c_ratio) } } } else - /* case not amorph - cryst <-> cryst diffusion */ + /* case not amorph: cryst <-> cryst diffusion */ + + /* test ! */ + if(c_diff) { + /* */ { for(c=-1;c<=1;c++) { @@ -222,6 +247,9 @@ int distrib_c(d3_lattice *d3_l,info *my_info,int step,double c_ratio) } } } + /* end test */ + } + /* */ } /* for z */ } /* for y */ } /* for x */ @@ -658,6 +686,7 @@ int main(int argc,char **argv) refresh=REFRESH; resave=RESAVE; my_info.z_diff=0; + c_diff=1; my_info.a_el=A_EL; my_info.b_el=B_EL; my_info.a_cd=A_CD; @@ -715,6 +744,10 @@ int main(int argc,char **argv) case 'Z': my_info.z_diff=1; break; + case 'i': + c_diff=0; + my_info.dr_cc=0; + break; case 's': my_info.steps=atoi(argv[++i]); break; @@ -842,7 +875,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");