new albe potential + new force calc routine (old potentials need to be
[physik/posic.git] / moldyn.h
index 9d49dfa..066ad36 100644 (file)
--- a/moldyn.h
+++ b/moldyn.h
@@ -56,6 +56,8 @@ typedef struct s_atom {
 #define ATOM_ATTR_2BP  0x20    /* pair potential */
 #define ATOM_ATTR_3BP  0x40    /* 3 body potential */ 
 
+#define DEFAULT_ATOM_ATTR      0x74    // 1,2,3 body interaction + visualize
+
 /* cell lists */
 typedef struct s_linkcell {
        int nx,ny,nz;           /* amount of cells in x, y and z direction */
@@ -102,15 +104,18 @@ typedef struct s_moldyn {
        double volume;          /* volume of sim cell (dim.x*dim.y*dim.z) */
 
        /* potential force function and parameter pointers */
-       int (*func1b)(struct s_moldyn *moldyn,t_atom *ai);
-       int (*func2b)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-       int (*func3b_j1)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-       int (*func3b_j2)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-       int (*func3b_j3)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-       int (*func3b_k1)(struct s_moldyn *moldyn,
-                        t_atom *ai,t_atom *aj,t_atom *ak,u8 bck);
-       int (*func3b_k2)(struct s_moldyn *moldyn,
-                        t_atom *ai,t_atom *aj,t_atom *ak,u8 bck);
+       int (*func_i0)(struct s_moldyn *moldyn,t_atom *ai);
+       int (*func_j0)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+       int (*func_j0_k0)(struct s_moldyn *moldyn,
+                         t_atom *ai,t_atom *aj,t_atom *ak,u8 bck);
+       int (*func_j0e)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+       int (*func_j1)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+       int (*func_j1_k0)(struct s_moldyn *moldyn,
+                         t_atom *ai,t_atom *aj,t_atom *ak,u8 bck);
+       int (*func_j1c)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+       int (*func_j1_k1)(struct s_moldyn *moldyn,
+                         t_atom *ai,t_atom *aj,t_atom *ak,u8 bck);
+       int (*func_j1e)(struct s_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
        void *pot_params;
        unsigned char run3bp;
 
@@ -143,6 +148,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 */
 
@@ -350,6 +356,12 @@ typedef struct s_vb {
 #define DIAMOND                        0x04
 #define ZINCBLENDE             0x08
 
+/*
+ * more includes
+ */
+
+#include "pse.h"
+
 /*
  *
  * function prototypes