From: hackbard Date: Tue, 4 Apr 2006 15:08:24 +0000 (+0000) Subject: more testing X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=commitdiff_plain;h=512390ceb93a2dd630943165b35bba683e0ffcfc more testing --- diff --git a/clean b/clean index 34c2b3c..fc5f86d 100755 --- a/clean +++ b/clean @@ -1 +1 @@ -rm -f saves/* video/* +rm -f saves/* video/*.ppm video/*.png diff --git a/doit b/doit deleted file mode 100755 index b9bfa91..0000000 --- a/doit +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -./clean -gcc -o posic posic.c -Wall -./posic -./perms -rasmol -nodisplay -./ppm2avi -mplayer video/md.avi diff --git a/moldyn.c b/moldyn.c index f2ac637..0fd1aca 100644 --- a/moldyn.c +++ b/moldyn.c @@ -30,6 +30,7 @@ int moldyn_usage(char **argv) { printf("-M (log total momentum)\n"); printf("-D (dump total information)\n"); printf("-S (single save file)\n"); + printf("-V (rasmol file)\n"); printf("--- physics options ---\n"); printf("-T [K] (%f)\n",MOLDYN_TEMP); printf("-t [s] (%f)\n",MOLDYN_TAU); @@ -70,9 +71,13 @@ int moldyn_parse_argv(t_moldyn *moldyn,int argc,char **argv) { moldyn->swrite=atoi(argv[++i]); strncpy(moldyn->sfb,argv[++i],64); break; - case 'T': + case 'V': + moldyn->vwrite=atoi(argv[++i]); + strncpy(moldyn->vfb,argv[++i],64); break; + case 'T': moldyn->t=atof(argv[++i]); + break; case 't': moldyn->tau=atof(argv[++i]); break; @@ -93,9 +98,12 @@ int moldyn_parse_argv(t_moldyn *moldyn,int argc,char **argv) { return 0; } -int moldyn_log_init(t_moldyn *moldyn) { +int moldyn_log_init(t_moldyn *moldyn,void *v) { moldyn->lvstat=0; + t_visual *vis; + + vis=v; if(moldyn->ewrite) { moldyn->efd=open(moldyn->efb,O_WRONLY|O_CREAT|O_TRUNC); @@ -130,8 +138,23 @@ int moldyn_log_init(t_moldyn *moldyn) { moldyn->lvstat|=MOLDYN_LVSTAT_DUMP; } - if(moldyn->dwrite) + if((moldyn->vwrite)&&(vis)) { + moldyn->visual=vis; + visual_init(vis,moldyn->vfb); moldyn->lvstat|=MOLDYN_LVSTAT_VISUAL; + } + + moldyn->lvstat|=MOLDYN_LVSTAT_INITIALIZED; + + return 0; +} + +int moldyn_shutdown(t_moldyn *moldyn) { + + if(moldyn->efd) close(moldyn->efd); + if(moldyn->mfd) close(moldyn->efd); + if(moldyn->dfd) close(moldyn->efd); + if(moldyn->visual) visual_tini(moldyn->visual); return 0; } @@ -328,7 +351,6 @@ int moldyn_integrate(t_moldyn *moldyn) { int i; unsigned int e,m,s,d,v; - unsigned char lvstat; t_3dvec p; int fd; @@ -340,7 +362,7 @@ int moldyn_integrate(t_moldyn *moldyn) { d=moldyn->dwrite; v=moldyn->vwrite; - if(!(lvstat&MOLDYN_LVSTAT_INITIALIZED)) { + if(!(moldyn->lvstat&MOLDYN_LVSTAT_INITIALIZED)) { printf("[moldyn] warning, lv system not initialized\n"); return -1; } diff --git a/moldyn.h b/moldyn.h index cbfc173..42764c5 100644 --- a/moldyn.h +++ b/moldyn.h @@ -10,7 +10,6 @@ #include "math/math.h" #include "random/random.h" -//#include "visual/visual.h" /* datatypes */ @@ -55,6 +54,7 @@ typedef struct s_moldyn { char dfb[64]; int dfd; unsigned int vwrite; + char vfb[64]; void *visual; /* moldyn general status */ unsigned char status; @@ -112,7 +112,8 @@ typedef struct s_lj_params { int moldyn_usage(char **argv); int moldyn_parse_argv(t_moldyn *moldyn,int argc,char **argv); -int moldyn_log_init(t_moldyn *moldyn); +int moldyn_log_init(t_moldyn *moldyn,void *v); +int moldyn_shutdown(t_moldyn *moldyn); int create_lattice(unsigned char type,int element,double mass,double lc, int a,int b,int c,t_atom **atom); diff --git a/posic.c b/posic.c index 7c1c418..f026abe 100644 --- a/posic.c +++ b/posic.c @@ -17,25 +17,25 @@ 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 e,u; double help; t_3dvec p; int count; t_lj_params lj; + t_ho_params ho; - char fb[32]="saves/lj_test"; + /* 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; @@ -44,40 +44,54 @@ int main(int argc,char **argv) { // 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; /* set for 'bounding atoms' */ - //vis.dim.x=a*LC_SI; - //vis.dim.y=b*LC_SI; - //vis.dim.z=c*LC_SI; - - t=TEMPERATURE; + vis.dim.x=a*LC_SI; + vis.dim.y=b*LC_SI; + vis.dim.z=c*LC_SI; + /* init lattice printf("placing silicon atoms ... "); count=create_lattice(DIAMOND,SI,M_SI,LC_SI,a,b,c,&si); - printf("(%d) ok!\n",count); - - /* testing purpose + printf("(%d) ok!\n",count); */ + /* testing purpose */ count=2; si=malloc(2*sizeof(t_atom)); - si[0].r.x=0.16e-9; + si[0].r.x=0.35*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=-0.16e-9; + 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.count=count; + md.atom=si; + md.potential=potential_lennard_jones; + md.force=force_lennard_jones; + //md.potential=potential_harmonic_oscillator; + //md.force=force_harmonic_oscillator; + md.cutoff=R_CUTOFF; + md.cutoff_square=(R_CUTOFF*R_CUTOFF); + md.pot_params=&lj; + //md.pot_params=&ho; + md.integrate=velocity_verlet; + //md.time_steps=RUNS; + //md.tau=TAU; + md.status=0; + md.visual=&vis; - printf("setting thermal fluctuations\n"); - thermal_init(si,&random,count,t); + printf("setting thermal fluctuations (T=%f K)\n",md.t); + //thermal_init(&md,&random,count); + for(a=0;a