X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=moldyn.h;h=d98b4286268ce6dfaebace9bb1fb9d234d43630f;hb=020789bbba5881e2abf58c362d0ce733696de3b3;hp=717388abf58e080dd0ceab4539ee4fbbf3dc295d;hpb=06912ca45b46de412570a4bd5b5484aa9e8d6e6b;p=physik%2Fposic.git diff --git a/moldyn.h b/moldyn.h index 717388a..d98b428 100644 --- a/moldyn.h +++ b/moldyn.h @@ -15,6 +15,7 @@ /* datatypes */ +typedef unsigned char u8; /* the atom of the md simulation */ @@ -24,12 +25,17 @@ typedef struct s_atom { t_3dvec f; /* force */ int element; /* number of element in pse */ double mass; /* atom mass */ - unsigned char attr; /* attributes */ + u8 bnum; /* brand number */ + u8 attr; /* attributes */ } t_atom; #define ATOM_ATTR_FP 0x01 /* fixed position (bulk material) */ #define ATOM_ATTR_HB 0x02 /* coupled to heat bath (velocity scaling) */ +#define ATOM_ATTR_1BP 0x10 /* single paricle potential */ +#define ATOM_ATTR_2BP 0x20 /* pair potential */ +#define ATOM_ATTR_3BP 0x40 /* 3 body potential */ + /* cell lists */ typedef struct s_linkcell { @@ -53,12 +59,14 @@ typedef struct s_moldyn { t_3dvec dim; /* dimensions of the simulation volume */ - /* potential force function pointer and parameters */ + /* potential force function and parameter pointers */ int (*pf_func1b)(struct s_moldyn *,t_atom *); + void *pot1b_params; int (*pf_func2b)(struct s_moldyn *,t_atom *,t_atom *); + void *pot2b_params; int (*pf_func3b)(struct s_moldyn *,t_atom *,t_atom *,t_atom *); + void *pot3b_params; //int (*potential_force_function)(struct s_moldyn *moldyn); - void *pot_params; /* parameters describing the potential */ double cutoff; /* cutoff radius */ double cutoff_square; /* square of the cutoff radius */ @@ -76,7 +84,7 @@ typedef struct s_moldyn { double energy; /* energy */ t_visual vis; /* visualization/log/save interface structure */ - unsigned char lvstat; /* log & vis properties */ + u8 lvstat; /* log & vis properties */ unsigned int ewrite; /* how often to log energy */ char efb[64]; /* energy log filename */ int efd; /* fd for energy log */ @@ -88,7 +96,7 @@ typedef struct s_moldyn { void *visual; /* pointer (hack!) */ unsigned int swrite; /* how often to create a save file */ - unsigned char status; /* general moldyn properties */ + u8 status; /* general moldyn properties */ t_random random; /* random interface */ } t_moldyn; @@ -99,9 +107,6 @@ typedef struct s_moldyn { #define MOLDYN_LVSTAT_VISUAL 0x08 #define MOLDYN_LVSTAT_INITIALIZED 0x10 -#define MOLDYN_STAT_1BP 0x01 -#define MOLDYN_STAT_2BP 0x02 /* define for pair potentials */ -#define MOLDYN_STAT_3BP 0x04 /* define for 3 body pot */ #define MOLDYN_STAT_PBX 0x08 /* periodic boudaries in x */ #define MOLDYN_STAT_PBY 0x10 /* y */ #define MOLDYN_STAT_PBZ 0x20 /* and z direction */ @@ -118,6 +123,11 @@ typedef struct s_lj_params { } t_lj_params; typedef struct s_tersoff_params { + double S[2]; /* tersoff cutoff radii */ + double R[2]; /* tersoff cutoff radii */ + double Smixed /* mixed S radius */ + double Rmixed /* mixed R radius */ + double l_1,l_2; double m_1,m_2; double a_1,a_2; @@ -169,7 +179,7 @@ int moldyn_log_init(t_moldyn *moldyn); int moldyn_init(t_moldyn *moldyn,int argc,char **argv); int moldyn_shutdown(t_moldyn *moldyn); -int create_lattice(unsigned char type,int element,double mass,double lc, +int create_lattice(u8 type,int element,double mass,double lc, int a,int b,int c,t_atom **atom); int destroy_lattice(t_atom *atom); int thermal_init(t_moldyn *moldyn);