From: hackbard Date: Tue, 15 Jan 2008 16:54:24 +0000 (+0100) Subject: adding pair correlation function X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=799fb13ad0a987bacfd259bfc34ba3c4703dd402;p=physik%2Fposic.git adding pair correlation function --- diff --git a/moldyn.c b/moldyn.c index 997c32c..ad4f900 100644 --- a/moldyn.c +++ b/moldyn.c @@ -1580,7 +1580,7 @@ int moldyn_integrate(t_moldyn *moldyn) { } /* display progress */ - if(!(moldyn->total_steps%10)) { + //if(!(moldyn->total_steps%10)) { /* get current time */ gettimeofday(&t2,NULL); @@ -1594,7 +1594,7 @@ int moldyn_integrate(t_moldyn *moldyn) { /* copy over time */ t1=t2; - } + //} /* increase absolute time */ moldyn->time+=moldyn->tau; @@ -2038,6 +2038,36 @@ int moldyn_bc_check(t_moldyn *moldyn) { * restore function */ +int moldyn_read_save_file(t_moldyn *moldyn,char *file) { + + int fd; + int cnt,size; + + fd=open(file,O_RDONLY); + if(fd<0) { + perror("[moldyn] load save file open"); + return fd; + } + + size=sizeof(t_moldyn); + cnt=read(fd,moldyn,size); + if(cnt!=size) { + perror("[moldyn] load save file read (moldyn)"); + return cnt; + } + + size=moldyn->count*sizeof(t_atom); + cnt=read(fd,moldyn->atom,size); + if(cnt!=size) { + perror("[moldyn] load save file read (atoms)"); + return cnt; + } + + // hooks + + return 0; +} + int moldyn_load(t_moldyn *moldyn) { // later ... @@ -2067,6 +2097,60 @@ int get_line(int fd,char *line,int max) { } } +int pair_correlation_init(t_moldyn *moldyn,double dr) { + + + return 0; +} + +int calculate_pair_correlation(t_moldyn *moldyn,double dr) { + + int slots; + int *stat; + int i; + t_linkcell *lc; + t_list neighbour[27]; + t_atom *itom,*jtom; + t_list *this; + + lc=&(moldyn->lc); + + slots=(int)(moldyn->cutoff/dr); + + stat=(int *)malloc(3*slots*sizeof(int)); + if(stat==NULL) { + perror("[moldyn] pair correlation malloc"); + return -1; + } + + link_cell_init(moldyn,VERBOSE); + + for(i=0;icells;i++) { + /* check for atoms */ + itom=lc->subcell[i].current->data; + if(itom==NULL) + continue; + + /* pick first atom and do neighbour indexing */ + link_cell_neighbour_index(moldyn, + (itom->r.x+moldyn->dim.x/2)/lc->x, + (itom->r.y+moldyn->dim.y/2)/lc->x, + (itom->r.z+moldyn->dim.z/2)/lc->x, + neighbour); + + /* calculation of g(r) */ + do { + itom=lc->subcell[i].current->data; +// GO ON HERE ... + } while(list_next_f(this)!=L_NO_NEXT_ELEMENT);); + + } + + link_cell_shutdown(moldyn); + + return 0; +} + int analyze_bonds(t_moldyn *moldyn) {