nearly finished tersoff 2 body part and new api
[physik/posic.git] / moldyn.h
index 66f774e..d98b428 100644 (file)
--- a/moldyn.h
+++ b/moldyn.h
@@ -25,7 +25,8 @@ 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) */
@@ -58,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 */
@@ -81,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 */
@@ -93,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;
@@ -120,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;
@@ -171,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);