new linked list system, still a pain inthe ...
authorhackbard <hackbard>
Thu, 14 Dec 2006 00:06:18 +0000 (00:06 +0000)
committerhackbard <hackbard>
Thu, 14 Dec 2006 00:06:18 +0000 (00:06 +0000)
Makefile
init/init.c [deleted file]
init/init.h [deleted file]
moldyn.c
moldyn.h
sic.c

index 6f3e39e..0250883 100644 (file)
--- 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 (file)
index daeb3b1..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * init.c - create initial conditions
- *
- * author: Frank Zirkelbach <frank.zirkelbach@physik.uni-augsburg.de>
- *
- */
-
-#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<x) {
-               r.y=o.y;
-               while(r.y<y) {
-                       r.z=o.z;
-                       while(r.z<z) {
-                               v3_copy(&(atom[count].r),&r);
-                               atom[count].element=1;
-                               count+=1;
-                               for(i=0;i<3;i++) {
-                                       v3_add(&n,&r,&basis[i]);
-                                       if((n.x<x+o.x)&&(n.y<y+o.y)&&(n.z<z+o.z)) {
-                                               v3_copy(&(atom[count].r),&n);
-                                               count+=1;
-                                       }
-                               }
-                               r.z+=lc;        
-                       }
-                       r.y+=lc;
-               }
-               r.x+=lc;
-       }
-
-       /* coordinate transformation */
-       help[0]=x/2.0;
-       help[1]=y/2.0;
-       help[2]=z/2.0;
-       v3_set(&n,help);
-       for(i=0;i<count;i++)
-               v3_sub(&(atom[i].r),&(atom[i].r),&n);
-               
-       return count;
-}
-
-int diamond_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin) {
-
-       int count;
-       t_3dvec o;
-
-       count=fcc_init(a,b,c,lc,atom,origin);
-
-       o.x=0.25*lc;
-       o.y=0.25*lc;
-       o.z=0.25*lc;
-
-       if(origin) v3_add(&o,&o,origin);
-
-       count+=fcc_init(a,b,c,lc,&atom[count],&o);
-
-       return count;
-}
diff --git a/init/init.h b/init/init.h
deleted file mode 100644 (file)
index 8f4e93c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * init.h - create initial conditions
- *
- * author: Frank Zirkelbach <frank.zirkelbach@physik.uni-augsburg.de>
- *
- */
-
-#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
index b6fa8d3..7a77898 100644 (file)
--- a/moldyn.c
+++ b/moldyn.c
 
 #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;i<lc->cells;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;i<lc->cells;i++)
-               list_destroy(&(moldyn->lc.subcell[i]));
+               list_destroy_f(&(moldyn->lc.subcell[i]));
        
        for(count=0;count<moldyn->count;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;i<lc->nx*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<x) {
+               r.y=o.y;
+               while(r.y<y) {
+                       r.z=o.z;
+                       while(r.z<z) {
+                               v3_copy(&(atom[count].r),&r);
+                               atom[count].element=1;
+                               count+=1;
+                               for(i=0;i<3;i++) {
+                                       v3_add(&n,&r,&basis[i]);
+                                       if((n.x<x+o.x)&&
+                                          (n.y<y+o.y)&&
+                                          (n.z<z+o.z)) {
+                                               v3_copy(&(atom[count].r),&n);
+                                               count+=1;
+                                       }
+                               }
+                               r.z+=lc;        
+                       }
+                       r.y+=lc;
+               }
+               r.x+=lc;
+       }
+
+       /* coordinate transformation */
+       help[0]=x/2.0;
+       help[1]=y/2.0;
+       help[2]=z/2.0;
+       v3_set(&n,help);
+       for(i=0;i<count;i++)
+               v3_sub(&(atom[i].r),&(atom[i].r),&n);
+               
+       return count;
+}
+
+int diamond_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin) {
+
+       int count;
+       t_3dvec o;
+
+       count=fcc_init(a,b,c,lc,atom,origin);
+
+       o.x=0.25*lc;
+       o.y=0.25*lc;
+       o.z=0.25*lc;
+
+       if(origin) v3_add(&o,&o,origin);
+
+       count+=fcc_init(a,b,c,lc,&atom[count],&o);
+
+       return count;
+}
index 4203c79..af54cef 100644 (file)
--- a/moldyn.h
+++ b/moldyn.h
@@ -415,4 +415,7 @@ int tersoff_mult_3bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
 
 int moldyn_bc_check(t_moldyn *moldyn);
 
+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/sic.c b/sic.c
index 516ee01..45e671f 100644 (file)
--- a/sic.c
+++ b/sic.c
@@ -8,9 +8,6 @@
 #include <math.h>
  
 #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);