X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=moldyn.h;h=53a22fdd0d0d3e2e3eb09caa451ea63383c89173;hb=877139ec35cf357c96fdb314f690fd6075554c47;hp=cbfc17302fb04806d21d4b68085b27bb9309a79c;hpb=792f14f95b47989f7f12df0ea70b54619be016ee;p=physik%2Fposic.git diff --git a/moldyn.h b/moldyn.h index cbfc173..53a22fd 100644 --- a/moldyn.h +++ b/moldyn.h @@ -10,7 +10,7 @@ #include "math/math.h" #include "random/random.h" -//#include "visual/visual.h" +#include "list/list.h" /* datatypes */ @@ -18,11 +18,20 @@ typedef struct s_atom { t_3dvec r; /* positions */ t_3dvec v; /* velocities */ t_3dvec f; /* forces */ + t_3dvec dr; /* delta r for verlet list updates */ int element; /* number of element in pse */ double mass; /* atom mass */ - //t_list vicinity /* verlet neighbour list */ + t_list verlet; /* verlet neighbour list */ } t_atom; +typedef struct s_linkcell { + int nx,ny,nz; + double x,y,z; + t_list *subcell; +} t_linkcell; + +#include "visual/visual.h" + typedef struct s_moldyn { /* atoms, amount, dimensions */ int count; @@ -32,8 +41,14 @@ typedef struct s_moldyn { double (*potential)(struct s_moldyn *moldyn); int (*force)(struct s_moldyn *moldyn); void *pot_params; + /* cut off radius, verlet list & co */ double cutoff; double cutoff_square; + double r_verlet; + double dr_max1; + double dr_max2; + /* linked list / cell method */ + t_linkcell lc; /* temperature */ double t; /* integration of newtons equations */ @@ -55,6 +70,7 @@ typedef struct s_moldyn { char dfb[64]; int dfd; unsigned int vwrite; + char vfb[64]; void *visual; /* moldyn general status */ unsigned char status; @@ -68,7 +84,7 @@ typedef struct s_ho_params { typedef struct s_lj_params { double sigma6; double sigma12; - double epsilon; + double epsilon4; } t_lj_params; /* @@ -112,7 +128,8 @@ typedef struct s_lj_params { int moldyn_usage(char **argv); int moldyn_parse_argv(t_moldyn *moldyn,int argc,char **argv); -int moldyn_log_init(t_moldyn *moldyn); +int moldyn_log_init(t_moldyn *moldyn,void *v); +int moldyn_shutdown(t_moldyn *moldyn); int create_lattice(unsigned char type,int element,double mass,double lc, int a,int b,int c,t_atom **atom); @@ -126,6 +143,13 @@ t_3dvec get_total_p(t_atom *atom,int count); double estimate_time_step(t_moldyn *moldyn,double nn_dist,double t); +int verlet_list_init(t_moldyn *moldyn); +int link_cell_init(t_moldyn *moldyn); +int verlet_list_update(t_moldyn *moldyn); +int link_cell_update(t_moldyn *moldyn); +int verlet_list_shutdown(t_moldyn *moldyn); +int link_cell_shutdown(t_moldyn *moldyn); + int moldyn_integrate(t_moldyn *moldyn); int velocity_verlet(t_moldyn *moldyn);