unstable but might run ...
[physik/posic.git] / moldyn.h
index de6157c..0f37a35 100644 (file)
--- a/moldyn.h
+++ b/moldyn.h
@@ -49,12 +49,14 @@ typedef struct s_atom {
 
 #define ATOM_ATTR_FP   0x01    /* fixed position (bulk material) */
 #define ATOM_ATTR_HB   0x02    /* coupled to heat bath (velocity scaling) */
-#define ATOM_ATTR_VA   0x04    /* visualize this atom */
+#define ATOM_ATTR_VA   0x04    /* visualize this atom */ // TODO
 #define ATOM_ATTR_VB   0x08    /* visualize the bond of this atom */
 
-#define ATOM_ATTR_1BP          0x10    /* single paricle potential */
-#define ATOM_ATTR_2BP          0x20    /* pair potential */
-#define ATOM_ATTR_3BP          0x40    /* 3 body potential */ 
+#define ATOM_ATTR_1BP  0x10    /* single paricle potential */
+#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 {
@@ -117,7 +119,6 @@ typedef struct s_moldyn {
        double cutoff;          /* cutoff radius */
        double cutoff_square;   /* square of the cutoff radius */
        double nnd;             /* nearest neighbour distance (optional) */
-       double bondlen[3];      /* bond lengthes (only 2 atomic systems) */
 
        t_linkcell lc;          /* linked cell list interface */
 
@@ -236,6 +237,10 @@ typedef struct s_ba {
        int tcnt;
 } t_ba;
 
+typedef struct s_vb {
+       int fd;
+} t_vb;
+
 /*
  *
  *  defines
@@ -252,10 +257,15 @@ typedef struct s_ba {
 #define MOLDYN_2BP                     0x20    /* 2 body */
 #define MOLDYN_3BP                     0x40    /* and 3 body particle pots */
 
+#define T_SCALE_NONE                   0x00
 #define T_SCALE_BERENDSEN              0x01    /* berendsen t control */
 #define T_SCALE_DIRECT                 0x02    /* direct t control */
+#define T_SCALE_MASK                   0x03
+
+#define P_SCALE_NONE                   0x00
 #define P_SCALE_BERENDSEN              0x04    /* berendsen p control */
 #define P_SCALE_DIRECT                 0x08    /* direct p control */
+#define P_SCALE_MASK                   0x0c
 
 /*
  * default values & units
@@ -314,12 +324,15 @@ typedef struct s_ba {
 #define SCALE_DIRECT                   'D'
 
 /*
- * potential related phsical values / constants
- *
+ * usefull constants
  */
 
 #define ONE_THIRD              (1.0/3.0)
 
+/*
+ * element specific defines
+ */
+
 #define C                      0x06
 #define LC_C                   3.567                           /* A */
 #define M_C                    12.011                          /* amu */
@@ -330,11 +343,6 @@ typedef struct s_ba {
 
 #define LC_3C_SIC              4.3596                          /* A */
 
-#define LJ_SIGMA_SI            ((0.25*sqrt(3.0)*LC_SI)/1.122462)       /* A */
-//#define LJ_SIGMA_SI          (LC_SI/1.122462)                        /* A */
-//#define LJ_SIGMA_SI          (0.5*sqrt(2.0)*LC_SI/1.122462)          /* A */
-#define LJ_EPSILON_SI          (2.1678*EV)                             /* NA */
-
 /*
  * lattice types
  */
@@ -342,6 +350,7 @@ typedef struct s_ba {
 #define CUBIC                  0x01
 #define FCC                    0x02
 #define DIAMOND                        0x04
+#define ZINCBLENDE             0x08
 
 /*
  *
@@ -354,9 +363,10 @@ int moldyn_shutdown(t_moldyn *moldyn);
 
 int set_int_alg(t_moldyn *moldyn,u8 algo);
 int set_cutoff(t_moldyn *moldyn,double cutoff);
-int set_bondlen(t_moldyn *moldyn,double b0,double b1,double bm);
 int set_temperature(t_moldyn *moldyn,double t_ref);
 int set_pressure(t_moldyn *moldyn,double p_ref);
+int set_p_scale(t_moldyn *moldyn,u8 ptype,double ptc);
+int set_t_scale(t_moldyn *moldyn,u8 ttype,double ttc);
 int set_pt_scale(t_moldyn *moldyn,u8 ptype,double ptc,u8 ttype,double ttc);
 int set_dim(t_moldyn *moldyn,double x,double y,double z,u8 visualize);
 int set_nn_dist(t_moldyn *moldyn,double dist);
@@ -447,6 +457,8 @@ int bond_analyze_process(t_moldyn *moldyn,t_atom *itom,t_atom *jtom,
 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);
 int visual_atoms(t_moldyn *moldyn);
 
 #endif