#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 */
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