X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=posic.c;h=79654cdb37403891a8ea285ced20e6cf3f75e949;hb=4e6604346459a4a8619bfc45f2a4b7dbd925ae86;hp=6d1256fbf6513d40b0ce32146c60b3a7bc5d9ed9;hpb=706aed2512544b99ff34308fdb673b19ee884ce0;p=physik%2Fposic.git diff --git a/posic.c b/posic.c index 6d1256f..79654cd 100644 --- a/posic.c +++ b/posic.c @@ -14,29 +14,102 @@ int main(int argc,char **argv) { + t_moldyn md; + t_atom *si; + + t_visual vis; + + t_random random; + int a,b,c; + double t,e,u; + double help; + t_3dvec p; + int count; + + t_lj_params lj; char fb[32]="saves/fcc_test"; - t_visual vis; + /* init */ - int count; + rand_init(&random,NULL,1); + random.status|=RAND_STAT_VERBOSE; + + /* testing random numbers */ + //for(a=0;a<1000000;a++) + // printf("%f %f\n",rand_get_gauss(&random), + // rand_get_gauss(&random)); + + visual_init(&vis,fb); a=LEN_X; b=LEN_Y; c=LEN_Z; - - visual_init(&vis,fb); - /* init */ - printf("placing silicon atoms\n"); - count=create_lattice(FCC,Si,M_SI,LC_SI,a,b,c,&si); + t=TEMPERATURE; + + printf("placing silicon atoms ... "); + count=create_lattice(DIAMOND,Si,M_SI,LC_SI,a,b,c,&si); + printf("(%d) ok!\n",count); + + printf("setting thermal fluctuations\n"); + thermal_init(si,&random,count,t); + + /* visualize */ visual_atoms(&vis,0.0,si,count); + /* check kinetic energy */ + + e=get_e_kin(si,count); + printf("kinetic energy: %f\n",e); + printf("3/2 N k T = %f\n",1.5*count*K_BOLTZMANN*t); + + /* check total momentum */ + p=get_total_p(si,count); + printf("total momentum: %f\n",v3_norm(&p)); + + /* check potential energy */ + md.count=count; + md.atom=si; + md.potential=potential_lennard_jones; + md.force=force_lennard_jones; + md.cutoff_square=((LC_SI/4.0)*(LC_SI/4.0)); + md.pot_params=&lj; + md.force=NULL; + md.status=0; + + lj.sigma6=3.0/16.0*LC_SI*LC_SI; + help=lj.sigma6*lj.sigma6; + lj.sigma6*=help; + lj.sigma12=lj.sigma6*lj.sigma6; + lj.epsilon=1; + + u=get_e_pot(&md); + + printf("potential energy: %f\n",u); + printf("total energy (1): %f\n",e+u); + printf("total energy (2): %f\n",get_total_energy(&md)); + + md.dim.x=a*LC_SI; + md.dim.y=b*LC_SI; + md.dim.z=c*LC_SI; + + /* + * let's do the actual md algorithm now + * + * integration of newtons equations + */ + + /* close */ + visual_tini(&vis); + rand_close(&random); + + //printf("starting velocity verlet: "); //fflush(stdout);