From: hackbard Date: Thu, 14 Dec 2006 13:52:42 +0000 (+0000) Subject: safety ci X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=commitdiff_plain;h=785f05e0c0ddb57428dc71b0a3f7798673799871 safety ci --- diff --git a/Makefile b/Makefile index 0250883..42ff2bd 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,9 @@ CC=gcc-3.4 #CC=gcc -CFLAGS=-Wall# -O3 #-DSIMPLE_TESTING +CFLAGS=-Wall +CFLAGS+=-O3 +CFLAGS+=-g +CFLAGS+=-ffloat-store LDFLAGS=-lm OBJS=visual/visual.o random/random.o diff --git a/moldyn.c b/moldyn.c index 7a77898..c25fed3 100644 --- a/moldyn.c +++ b/moldyn.c @@ -19,11 +19,6 @@ int moldyn_init(t_moldyn *moldyn,int argc,char **argv) { - //int ret; - - //ret=moldyn_parse_argv(moldyn,argc,argv); - //if(ret<0) return ret; - memset(moldyn,0,sizeof(t_moldyn)); rand_init(&(moldyn->random),NULL,1); @@ -101,7 +96,7 @@ int set_dim(t_moldyn *moldyn,double x,double y,double z,u8 visualize) { moldyn->vis.dim.z=z; } - printf("[moldyn] dimensions in A and A^2 respectively:\n"); + printf("[moldyn] dimensions in A and A^3 respectively:\n"); printf(" x: %f\n",moldyn->dim.x); printf(" y: %f\n",moldyn->dim.y); printf(" z: %f\n",moldyn->dim.z); @@ -230,6 +225,10 @@ int moldyn_log_shutdown(t_moldyn *moldyn) { return 0; } +/* + * creating lattice functions + */ + int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass, u8 attr,u8 bnum,int a,int b,int c) { @@ -288,6 +287,90 @@ int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass, return ret; } +/* 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.xatom; lc=&(moldyn->lc); nx=lc->nx; ny=lc->ny; - nz=lc->nz; + + x=moldyn->dim.x/2; + y=moldyn->dim.y/2; + z=moldyn->dim.z/2; for(i=0;icells;i++) - list_destroy_f(&(moldyn->lc.subcell[i])); + list_destroy_f(&(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; + 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_f(&(moldyn->lc.subcell[i+j*nx+k*nx*ny]), &(atom[count])); } @@ -777,11 +864,7 @@ int moldyn_integrate(t_moldyn *moldyn) { if(moldyn->pt_scale&(T_SCALE_BERENDSEN|T_SCALE_DIRECT)) scale_velocity(moldyn,FALSE); if(moldyn->pt_scale&(P_SCALE_BERENDSEN|P_SCALE_DIRECT)) -{ -printf("going to do p scale ...\n"); scale_volume(moldyn); -printf("done\n"); -} /* check for log & visualization */ if(e) { @@ -860,16 +943,13 @@ int velocity_verlet(t_moldyn *moldyn) { v3_add(&(atom[i].r),&(atom[i].r),&delta); v3_scale(&delta,&(atom[i].f),0.5*tau_square/atom[i].mass); v3_add(&(atom[i].r),&(atom[i].r),&delta); -//if(i==5) printf("v: %f %f %f\n",atom[i].r.x,(atom[i].r.x+moldyn->dim.x/2)/moldyn->lc.x,2*atom[i].r.x/moldyn->dim.x); check_per_bound(moldyn,&(atom[i].r)); -//if(i==5) printf("n: %f %f %f\n",atom[i].r.x,(atom[i].r.x+moldyn->dim.x/2)/moldyn->lc.x,2*atom[i].r.x/moldyn->dim.x); /* velocities */ v3_scale(&delta,&(atom[i].f),0.5*tau/atom[i].mass); v3_add(&(atom[i].v),&(atom[i].v),&delta); } -//moldyn_bc_check(moldyn); /* neighbour list update */ link_cell_update(moldyn); @@ -1027,7 +1107,7 @@ int potential_force_calc(t_moldyn *moldyn) { * periodic boundayr checking */ -int check_per_bound(t_moldyn *moldyn,t_3dvec *a) { +inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) { double x,y,z; t_3dvec *dim; @@ -1746,91 +1826,3 @@ 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