add another way of calculating tersoff + small moldyn mods
[physik/posic.git] / potentials / tersoff.h
index a04ed02..52e848f 100644 (file)
@@ -8,45 +8,41 @@
 #ifndef TERSOFF_H
 #define TERSOFF_H
 
+#define TERSOFF_MAXN   16*27
+
 /* tersoff exchange type */
 typedef struct s_tersoff_echange {
-       double f_c,df_c;
-       double f_a,df_a;
 
        t_3dvec dist_ij;
        double d_ij2;
        double d_ij;
 
-       double chi;
+       t_3dvec dist_ik[TERSOFF_MAXN];
+       double d_ik2[TERSOFF_MAXN];
+       double d_ik[TERSOFF_MAXN];
+
+       double f_c_ik[TERSOFF_MAXN];
+       double df_c_ik[TERSOFF_MAXN];
+
+       double g[TERSOFF_MAXN];
+       double dg[TERSOFF_MAXN];
+       double cos_theta[TERSOFF_MAXN];
 
        double *beta_i;
-       double *beta_j;
        double *n_i;
-       double *n_j;
        double *c_i;
-       double *c_j;
        double *d_i;
-       double *d_j;
        double *h_i;
-       double *h_j;
 
        double ci2;
-       double cj2;
        double di2;
-       double dj2;
        double ci2di2;
-       double cj2dj2;
        double betaini;
-       double betajnj;
-
-       u8 run3bp;
-       u8 run2bp_post;
-       u8 d_ij_between_rs;
 
        double zeta_ij;
-       double zeta_ji;
-       t_3dvec dzeta_ij;
-       t_3dvec dzeta_ji;
+       double pre_dzeta;
+
+       int kcount;
 } t_tersoff_exchange;
 
 /* tersoff mult (2!) potential parameters */
@@ -81,7 +77,11 @@ typedef struct s_tersoff_mult_params {
 int tersoff_mult_complete_params(t_tersoff_mult_params *p);
 int tersoff_mult_1bp(t_moldyn *moldyn,t_atom *ai);
 int tersoff_mult_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int tersoff_mult_post_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int tersoff_mult_3bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
+int tersoff_mult_3bp_j1(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+int tersoff_mult_3bp_k1(t_moldyn *moldyn,
+                        t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
+int tersoff_mult_3bp_j2(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+int tersoff_mult_3bp_k2(t_moldyn *moldyn,
+                        t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
 
 #endif