From: hackbard Date: Thu, 14 Dec 2006 00:06:18 +0000 (+0000) Subject: new linked list system, still a pain inthe ... X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60f40345bc4fcd8448d724dc67bbb512ec081bd4;p=physik%2Fposic.git new linked list system, still a pain inthe ... --- diff --git a/Makefile b/Makefile index 6f3e39e..0250883 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ CC=gcc-3.4 #CC=gcc -CFLAGS=-Wall -O3 #-DSIMPLE_TESTING +CFLAGS=-Wall# -O3 #-DSIMPLE_TESTING LDFLAGS=-lm -OBJS=init/init.o visual/visual.o random/random.o list/list.o +OBJS=visual/visual.o random/random.o OBJS+=moldyn.o -all: sic +all: clean sic sic: $(OBJS) diff --git a/init/init.c b/init/init.c deleted file mode 100644 index daeb3b1..0000000 --- a/init/init.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * init.c - create initial conditions - * - * author: Frank Zirkelbach - * - */ - -#include "../math/math.h" -#include "../moldyn.h" - -/* fcc lattice init */ -int fcc_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin) { - - int count; - int i,j; - t_3dvec o,r,n; - t_3dvec basis[3]; - double help[3]; - double x,y,z; - - x=a*lc; - y=b*lc; - z=c*lc; - - if(origin) v3_copy(&o,origin); - else v3_zero(&o); - - /* construct the basis */ - for(i=0;i<3;i++) { - for(j=0;j<3;j++) { - if(i!=j) help[j]=0.5*lc; - else help[j]=.0; - } - v3_set(&basis[i],help); - } - - v3_zero(&r); - count=0; - - /* fill up the room */ - r.x=o.x; - while(r.x - * - */ - -#ifndef INIT_H -#define INIT_H - -#include "../moldyn.h" - -/* datattypes */ - -/* function prototypes */ - -int fcc_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin); -int diamond_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin); - -#endif diff --git a/moldyn.c b/moldyn.c index b6fa8d3..7a77898 100644 --- a/moldyn.c +++ b/moldyn.c @@ -17,13 +17,6 @@ #include "moldyn.h" -#include "math/math.h" -#include "init/init.h" -#include "random/random.h" -#include "visual/visual.h" -#include "list/list.h" - - int moldyn_init(t_moldyn *moldyn,int argc,char **argv) { //int ret; @@ -551,9 +544,6 @@ int link_cell_init(t_moldyn *moldyn) { t_linkcell *lc; int i; - int fd; - - fd=open("/dev/null",O_WRONLY); lc=&(moldyn->lc); @@ -571,8 +561,7 @@ int link_cell_init(t_moldyn *moldyn) { printf("[moldyn] initializing linked cells (%d)\n",lc->cells); for(i=0;icells;i++) - //list_init(&(lc->subcell[i]),1); - list_init(&(lc->subcell[i]),fd); + list_init_f(&(lc->subcell[i])); link_cell_update(moldyn); @@ -594,14 +583,14 @@ int link_cell_update(t_moldyn *moldyn) { nz=lc->nz; for(i=0;icells;i++) - list_destroy(&(moldyn->lc.subcell[i])); + list_destroy_f(&(moldyn->lc.subcell[i])); for(count=0;countcount;count++) { i=(atom[count].r.x+(moldyn->dim.x/2))/lc->x; j=(atom[count].r.y+(moldyn->dim.y/2))/lc->y; k=(atom[count].r.z+(moldyn->dim.z/2))/lc->z; - list_add_immediate_ptr(&(moldyn->lc.subcell[i+j*nx+k*nx*ny]), - &(atom[count])); + list_add_immediate_f(&(moldyn->lc.subcell[i+j*nx+k*nx*ny]), + &(atom[count])); } return 0; @@ -671,7 +660,9 @@ int link_cell_shutdown(t_moldyn *moldyn) { lc=&(moldyn->lc); for(i=0;inx*lc->ny*lc->nz;i++) - list_shutdown(&(moldyn->lc.subcell[i])); + list_destroy_f(&(moldyn->lc.subcell[i])); + + free(lc->subcell); return 0; } @@ -950,7 +941,7 @@ int potential_force_calc(t_moldyn *moldyn) { for(j=0;j<27;j++) { this=&(neighbour_i[j]); - list_reset(this); + list_reset_f(this); if(this->start==NULL) continue; @@ -985,7 +976,7 @@ int potential_force_calc(t_moldyn *moldyn) { for(k=0;k<27;k++) { that=&(neighbour_i2[k]); - list_reset(that); + list_reset_f(that); if(that->start==NULL) continue; @@ -1011,7 +1002,7 @@ int potential_force_calc(t_moldyn *moldyn) { ktom, bc_ik|bc_ij); - } while(list_next(that)!=\ + } while(list_next_f(that)!=\ L_NO_NEXT_ELEMENT); } @@ -1023,7 +1014,7 @@ int potential_force_calc(t_moldyn *moldyn) { jtom,bc_ij); } - } while(list_next(this)!=L_NO_NEXT_ELEMENT); + } while(list_next_f(this)!=L_NO_NEXT_ELEMENT); } @@ -1756,3 +1747,90 @@ x=dim->x/2; return 0; } +/* + * lattice creation functions + */ + +/* fcc lattice init */ +int fcc_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin) { + + int count; + int i,j; + t_3dvec o,r,n; + t_3dvec basis[3]; + double help[3]; + double x,y,z; + + x=a*lc; + y=b*lc; + z=c*lc; + + if(origin) v3_copy(&o,origin); + else v3_zero(&o); + + /* construct the basis */ + for(i=0;i<3;i++) { + for(j=0;j<3;j++) { + if(i!=j) help[j]=0.5*lc; + else help[j]=.0; + } + v3_set(&basis[i],help); + } + + v3_zero(&r); + count=0; + + /* fill up the room */ + r.x=o.x; + while(r.x #include "moldyn.h" -#include "math/math.h" -#include "init/init.h" -#include "visual/visual.h" #include "posic.h" @@ -157,7 +154,7 @@ int main(int argc,char **argv) { /* activate logging */ printf("[sic] activate logging\n"); - moldyn_set_log_dir(&md,"saves/test"); + moldyn_set_log_dir(&md,"saves/si_melting_point"); moldyn_set_log(&md,LOG_TOTAL_ENERGY,200); moldyn_set_log(&md,VISUAL_STEP,200);