fixed bond analyze, introduced more comfortable set potential function,
[physik/posic.git] / potentials / tersoff.h
index a04ed02..4e12957 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 */
@@ -78,10 +74,46 @@ typedef struct s_tersoff_mult_params {
 } t_tersoff_mult_params;
 
 /* function prototypes */
-int tersoff_mult_complete_params(t_tersoff_mult_params *p);
+int tersoff_mult_set_params(t_moldyn *moldyn,int element1,int element2);
 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);
+
+/* tersoff potential paramter defines */
+
+// silicon
+#define TM_R_SI                        2.7                             /* A */
+#define TM_S_SI                        3.0                             /* A */
+#define TM_A_SI                        (1830.8*EV)                     /* NA */
+#define TM_B_SI                        (471.18*EV)                     /* NA */
+#define TM_LAMBDA_SI           2.4799                          /* 1/A */
+#define TM_MU_SI               1.7322                          /* 1/A */
+#define TM_BETA_SI             1.1000e-6
+#define TM_N_SI                        0.78734
+#define TM_C_SI                        1.0039e5
+#define TM_D_SI                        16.217
+#define TM_H_SI                        -0.59825
+
+// carbon
+#define TM_R_C                 1.8                             /* A */
+#define TM_S_C                 2.1                             /* A */
+#define TM_A_C                 (1393.6*EV)                     /* NA */
+#define TM_B_C                 (346.7*EV)                      /* NA */
+#define TM_LAMBDA_C            3.4879                          /* 1/A */
+#define TM_MU_C                        2.2119                          /* 1/A */
+#define TM_BETA_C              1.5724e-7
+#define TM_N_C                 0.72751
+#define TM_C_C                 3.8049e4
+#define TM_D_C                 4.384
+#define TM_H_C                 -0.57058
+
+// mixed: silicon carbide
+#define TM_CHI_SIC             0.9776
+#define TM_LC_SIC              4.32                            /* A */
 
 #endif