X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=posic.c;h=cd1a2e2bc1b616b75964546643a8bad9b604a873;hb=refs%2Fheads%2Forigin;hp=69732781b2136c235e452960b60df8e8271ea5ba;hpb=710717c4033bc5b8eb34644914e762a2834ae345;p=physik%2Fposic.git diff --git a/posic.c b/posic.c index 6973278..cd1a2e2 100644 --- a/posic.c +++ b/posic.c @@ -1,9 +1,11 @@ /* * posic.c - precipitation process of silicon carbide in silicon * - * author: Frank Zirkelbach + * author: Frank Zirkelbach * */ + +#include #include "moldyn.h" #include "math/math.h" @@ -14,155 +16,154 @@ int main(int argc,char **argv) { - t_atom *si; - t_3dvec dim; + t_moldyn md; - char fb[32]="saves/fcc_test"; + t_lj_params lj; + t_ho_params ho; + t_tersoff_mult_params tp; - t_visual vis; + int a,b,c; + double e; + double help; + t_3dvec p; - int count; + /* + * moldyn init + * + * - parsing argv + * - log init + * - random init + * + */ + a=moldyn_init(&md,argc,argv); + if(a<0) return a; - dim.x=LEN_X; - dim.y=LEN_Y; - dim.z=LEN_Z; - - visual_init(&vis,fb); + /* + * the following overrides possibly set interaction methods by argv !! + */ + + /* params */ + lj.sigma6=LJ_SIGMA_SI*LJ_SIGMA_SI; + help=lj.sigma6*lj.sigma6; + lj.sigma6*=help; + lj.sigma12=lj.sigma6*lj.sigma6; + lj.epsilon4=4.0*LJ_EPSILON_SI; + ho.equilibrium_distance=0.25*sqrt(3.0)*LC_SI; + ho.spring_constant=1; + /* assignement */ + md.potential_force_function=lennard_jones; + //md.potential_force_function=harmonic_oscillator; + md.pot_params=&lj; + //md.pot_params=&ho; + /* cutoff radius */ + md.cutoff=R_CUTOFF*LC_SI; - /* init */ - printf("placing silicon atoms\n"); - count=create_lattice(FCC,Si,M_SI,LC_SI,&dim,&si); + /* + * testing random numbers + */ - visual_atoms(&vis,0.0,si,count); +#ifdef DEBUG_RANDOM_NUMBER + for(a=0;a<1000000;a++) + printf("%f %f\n",rand_get_gauss(&(md.random)), + rand_get_gauss(&(md.random))); + return 0; +#endif - visual_tini(&vis); + /* + * geometry & particles + */ - //printf("starting velocity verlet: "); - //fflush(stdout); + /* simulation cell volume in lattice constants */ + a=LEN_X; + b=LEN_Y; + c=LEN_Z; + md.dim.x=a*LC_SI; + md.dim.y=b*LC_SI; + md.dim.z=c*LC_SI; - //for(runs=0;runsLX) si[i].x-=LEN_X; -// else if(si[i].x<-LX) si[i].x+=LEN_X; -// si[i].y+=(tau2*si[i].fy/m2); -// if(si[i].y>LY) si[i].y-=LEN_Y; -// else if(si[i].y<-LY) si[i].y+=LEN_Y; -// si[i].z+=(tau2*si[i].fz/m2); -// if(si[i].z>LZ) si[i].z-=LEN_Z; -// else if(si[i].z<-LZ) si[i].z+=LEN_Z; -// /* calculation of velocities v(t+h/2) */ -// si[i].vx+=(tau*si[i].fx/m2); -// si[i].vy+=(tau*si[i].fy/m2); -// si[i].vz+=(tau*si[i].fz/m2); -// /* reset of forces */ -// si[i].fx=.0; -// si[i].fy=.0; -// si[i].fz=.0; -// } -// for(i=0;iLX) deltax-=LEN_X; -// else if(-deltax>LX) deltax+=LEN_X; -// deltax2=deltax*deltax; -// deltay=si[i].y-si[j].y; -// if(deltay>LY) deltay-=LEN_Y; -// else if(-deltay>LY) deltay+=LEN_Y; -// deltay2=deltay*deltay; -// deltaz=si[i].z-si[j].z; -// if(deltaz>LZ) deltaz-=LEN_Z; -// else if(-deltaz>LZ) deltaz+=LEN_Z; -// deltaz2=deltaz*deltaz; -// distance=deltax2+deltay2+deltaz2; -// if(distance<=R2_CUTOFF) { -// tmp=1.0/distance; // 1/r^2 -// lj1=tmp; // 1/r^2 -// tmp*=tmp; // 1/r^4 -// lj1*=tmp; // 1/r^6 -// tmp*=tmp; // 1/r^8 -// lj2=tmp; // 1/r^8 -// lj1*=tmp; // 1/r^14 -// lj1*=LJ_SIGMA_12; -// lj2*=LJ_SIGMA_06; -// lj=-2*lj1+lj2; -// si[i].fx-=lj*deltax; -// si[i].fy-=lj*deltay; -// si[i].fz-=lj*deltaz; -// si[j].fx+=lj*deltax; -// si[j].fy+=lj*deltay; -// si[j].fz+=lj*deltaz; -// } -// } -// } -// for(i=0;i