X-Git-Url: https://www.hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=blobdiff_plain;f=postproc.c;h=18834afc68f4c428285e5645ee80b0f5b6d86e53;hp=68e0918e55dba20e214c8af8f1fee036eaf439c5;hb=HEAD;hpb=80506020969de4de6961607079fca74a538fcaeb diff --git a/postproc.c b/postproc.c index 68e0918..18834af 100644 --- a/postproc.c +++ b/postproc.c @@ -5,15 +5,181 @@ * */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + #include #include "moldyn.h" +#include "math/math.h" + +#define FILEMAX 127 +#define BUFMAX 127 + +#define DISPLACEMENT (1<<0) +#define VELOCITY (1<<1) + +static char *pse[]={ + "*", + "H", + "He", + "Li", + "Be", + "B", + "C", + "N", + "O", + "F", + "Ne", + "Na", + "Mg", + "Al", + "Si", + "P", + "S", + "Cl", + "Ar", +}; + +int usage(void) { + printf("usage:\n"); + printf(" -i -o \n"); + printf(" -d/v (displacement,velocity)\n"); + printf(" \n"); + return 1; +} int main(int argc,char **argv) { t_moldyn md; + t_atom *atom; + char infile[FILEMAX+1]; + int infd; + char outfile[FILEMAX+1]; + int outfd; + int ret,size; + unsigned char mode; + char buf[BUFMAX+1]; + t_3dvec dist; + int i; + + memset(infile,0,FILEMAX+1); + memset(outfile,0,FILEMAX+1); + memset(buf,0,BUFMAX+1); + mode=0; + + /* parse argv */ + for(i=1;i %s\n",infile); + + infd=open(infile,O_RDONLY); + if(infd<3) { + perror("infile"); + return infd; + } + + /* open outfile */ + if(!strcmp(outfile,"")) { + printf("no outfile specified!\n"); + return -1; + } + printf("outfile -> %s\n",outfile); + + outfd=open(outfile,O_WRONLY|O_CREAT); + if(outfd<3) { + perror("outfile"); + return outfd; + } + + /* read in data */ + + size=sizeof(t_moldyn); + ret=0; + while(size-ret) + ret+=read(infd,&md,size-ret); + printf("read %d bytes moldyn struct data\n",size); + + /* allocate memory for atoms */ + size=md.count*sizeof(t_atom); + md.atom=malloc(size); + if(md.atom==NULL) { + perror("malloc"); + goto end; + } + + /* read in atom data */ + + ret=0; + atom=md.atom; + while(size-ret) + ret+=read(infd,atom,size-ret); + printf("read %d bytes atom data\n",size); + + /* postprocess ... */ + dprintf(outfd,"%d\n",md.count+8); + dprintf(outfd,"atoms at time %f\n",md.time); + for(i=0;i