X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=posic.c;h=2b18c79155caf6e2282eaf5bdb6101b6ffdb65d5;hb=177cf8b5cb5a3c59e2330327b628937540f123ac;hp=236e208bcce0bea5516bbe1a70d5efe1decda416;hpb=c1a1e7ec0bdad968f7dbf80329740ec8843e3477;p=physik%2Fposic.git diff --git a/posic.c b/posic.c index 236e208..2b18c79 100644 --- a/posic.c +++ b/posic.c @@ -17,9 +17,6 @@ int main(int argc,char **argv) { t_moldyn md; - t_atom *si; - t_visual vis; - t_random random; int a,b,c; double e; @@ -29,90 +26,115 @@ int main(int argc,char **argv) { t_lj_params lj; t_ho_params ho; - /* parse arguments */ - a=moldyn_parse_argv(&md,argc,argv); - if(a<0) return -1; - - /* init */ - moldyn_log_init(&md,&vis); - 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)); - - a=LEN_X; - b=LEN_Y; - c=LEN_Z; + /* + * moldyn init + * + * - parsing argv + * - log init + * - random init + * + */ + moldyn_init(&md,argc,argv); - /* set for 'bounding atoms' */ - vis.dim.x=a*LC_SI; - vis.dim.y=b*LC_SI; - vis.dim.z=c*LC_SI; + /* + * the following overrides possibly set interaction methods by argv !! + */ - /* init lattice - printf("placing silicon atoms ... "); - md.count=create_lattice(DIAMOND,SI,M_SI,LC_SI,a,b,c,&si); - printf("(%d) ok!\n",md.count); - testing purpose */ - md.count=2; - si=malloc(2*sizeof(t_atom)); - si[0].r.x=0.13*sqrt(3.0)*LC_SI/2.0; - si[0].r.y=0; - si[0].r.z=0; - si[0].element=SI; - si[0].mass=M_SI; - si[1].r.x=-si[0].r.x; - si[1].r.y=0; - si[1].r.z=0; - si[1].element=SI; - si[1].mass=M_SI; - /* */ - - /* moldyn init (now si is a valid address) */ - md.atom=si; + /* 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.0; + /* assignement */ md.potential_force_function=lennard_jones; //md.potential_force_function=harmonic_oscillator; - md.cutoff=R_CUTOFF*LC_SI; md.pot_params=&lj; //md.pot_params=&ho; - md.status=0; - md.visual=&vis; - /* dimensions of the simulation cell */ + /* cutoff radius */ + md.cutoff=R_CUTOFF*LC_SI; + + /* + * testing random numbers + */ + +#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 + + /* + * geometry & particles + */ + + /* 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; + /* (un)set to (not) get visualized 'bounding atoms' */ + md.vis.dim.x=a*LC_SI; + md.vis.dim.y=b*LC_SI; + md.vis.dim.z=c*LC_SI; + + /* + * particles + */ + + /* lattice init */ + +#ifndef SIMPLE_TESTING + md.count=create_lattice(DIAMOND,SI,M_SI,LC_SI,a,b,c,&(md.atom)); + printf("created silicon lattice (#atoms = %d)\n",md.count); +#else + md.count=2; + moldyn->atom=malloc(2*sizeof(t_atom)); + moldyn->atom[0].r.x=0.13*sqrt(3.0)*LC_SI/2.0; + moldyn->atom[0].r.y=0; + moldyn->atom[0].r.z=0; + moldyn->atom[0].element=SI; + moldyn->atom[0].mass=M_SI; + moldyn->atom[1].r.x=-si[0].r.x; + moldyn->atom[1].r.y=0; + moldyn->atom[1].r.z=0; + moldyn->atom[1].element=SI; + moldyn->atom[1].mass=M_SI; +#endif + + /* initial thermal fluctuations of particles */ + +#ifndef SIMPLE_TESTING printf("setting thermal fluctuations (T=%f K)\n",md.t); - // thermal_init(&md,&random); + thermal_init(&md); +#else for(a=0;a