X-Git-Url: https://www.hackdaworld.org/gitweb/?a=blobdiff_plain;f=moldyn.h;h=1e9db2a3ae3527e17b33b37dd03b641c5ddceeb9;hb=787848dc9bf3daa2ccb76296de904688cc504a45;hp=0f37a35cb15d6796663b12a8fb20b271fde13981;hpb=0d1dfb1e5027d215fced8ca306dd658f692a2a44;p=physik%2Fposic.git diff --git a/moldyn.h b/moldyn.h index 0f37a35..1e9db2a 100644 --- a/moldyn.h +++ b/moldyn.h @@ -58,6 +58,12 @@ typedef struct s_atom { #define DEFAULT_ATOM_ATTR 0x74 // 1,2,3 body interaction + visualize +/* special list structure for low mem approach */ +typedef struct s_lowmem_list { + int *head; + int *list; +} t_lowmem_list; + /* cell lists */ typedef struct s_linkcell { int nx,ny,nz; /* amount of cells in x, y and z direction */ @@ -66,6 +72,8 @@ typedef struct s_linkcell { double x,y,z; /* the actual cell lengthes */ #ifdef STATIC_LISTS int **subcell; /* pointer to the cell lists */ +#elif LOWMEM_LISTS + t_lowmem_list *subcell; /* low mem approach list */ #else t_list *subcell; /* pointer to the cell lists */ #endif @@ -145,6 +153,7 @@ typedef struct s_moldyn { double p_ref; /* reference pressure */ double p; /* actual pressure (computed by virial) */ + double px,py,pz; /* components of pressure */ double p_sum; /* sum over all p */ double p_avg; /* average value of p */ @@ -241,6 +250,15 @@ typedef struct s_vb { int fd; } t_vb; +typedef struct s_part_vals { + double r; + t_3dvec p; + t_3dvec d; +} t_part_vals; + +#define PART_INSIDE_R 1 +#define PART_OUTSIDE_R 2 + /* * * defines @@ -351,6 +369,13 @@ typedef struct s_vb { #define FCC 0x02 #define DIAMOND 0x04 #define ZINCBLENDE 0x08 +#define NONE 0x80 + +/* + * more includes + */ + +//#include "pse.h" /* * @@ -381,13 +406,17 @@ int moldyn_set_log(t_moldyn *moldyn,u8 type,int timer); int moldyn_log_shutdown(t_moldyn *moldyn); int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass, - u8 attr,u8 brand,int a,int b,int c,t_3dvec *origin); + u8 attr,u8 brand,int a,int b,int c,t_3dvec *origin, + u8 p_type,t_part_vals *p_vals); int add_atom(t_moldyn *moldyn,int element,double mass,u8 brand,u8 attr, t_3dvec *r,t_3dvec *v); int del_atom(t_moldyn *moldyn,int tag); -int cubic_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin); -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); +int cubic_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin, + u8 p_type,t_part_vals *p_vals); +int fcc_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin, + u8 p_type,t_part_vals *p_vals); +int diamond_init(int a,int b,int c,double lc,t_atom *atom,t_3dvec *origin, + u8 p_type,t_part_vals *p_vals); int destroy_atoms(t_moldyn *moldyn); int thermal_init(t_moldyn *moldyn,u8 equi_init); @@ -416,6 +445,8 @@ int link_cell_init(t_moldyn *moldyn,u8 vol); int link_cell_update(t_moldyn *moldyn); #ifdef STATIC_LISTS int link_cell_neighbour_index(t_moldyn *moldyn,int i,int j,int k,int **cell); +#elif LOWMEM_LISTS +int link_cell_neighbour_index(t_moldyn *moldyn,int i,int j,int k,int *cell); #else int link_cell_neighbour_index(t_moldyn *moldyn,int i,int j,int k,t_list *cell); #endif @@ -445,6 +476,10 @@ int moldyn_load(t_moldyn *moldyn); int process_2b_bonds(t_moldyn *moldyn,void *data, int (*process)(t_moldyn *moldyn,t_atom *itom,t_atom *jtom, void *data,u8 bc)); +int process_neighbours(t_moldyn *moldyn,void *data,t_atom *atom, + int (*process)(t_moldyn *moldyn,t_atom *atom,t_atom *natom, + void *data,u8 bc)); + int get_line(int fd,char *line,int max); int pair_correlation_init(t_moldyn *moldyn,double dr); @@ -459,7 +494,13 @@ int bond_analyze(t_moldyn *moldyn,double *quality); int visual_init(t_moldyn *moldyn,char *filebase); int visual_bonds_process(t_moldyn *moldyn,t_atom *itom,t_atom *jtom, void *data,u8 bc); +#ifdef VISUAL_THREAD +void *visual_atoms(void *ptr); +#else int visual_atoms(t_moldyn *moldyn); +#endif + +int fpu_set_rtd(void); #endif