X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=blobdiff_plain;f=moldyn.c;h=0fd1aca88d3b7243ee58cbe2d219cf0e4e2190f9;hp=f2ac637e64dfeb99ba82946b70a6242175ade88f;hb=512390ceb93a2dd630943165b35bba683e0ffcfc;hpb=792f14f95b47989f7f12df0ea70b54619be016ee 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; }