#ifndef ALBE_H
#define ALBE_H
-#define ALBE_MAXN 16*27
+#define ALBE_MAXN (4*27)
/* albe exchange type */
typedef struct s_albe_exchange {
- t_3dvec dist_ij;
- double d_ij2;
- double d_ij;
+ t_3dvec dist[ALBE_MAXN];
+ double d2[ALBE_MAXN];
+ double d[ALBE_MAXN];
- t_3dvec dist_ik[ALBE_MAXN];
- double d_ik2[ALBE_MAXN];
- double d_ik[ALBE_MAXN];
+ double f_c[ALBE_MAXN];
+ double df_c[ALBE_MAXN];
- double f_c_ik[ALBE_MAXN];
- double df_c_ik[ALBE_MAXN];
+ double zeta[ALBE_MAXN];
+ t_3dvec dzeta[ALBE_MAXN][ALBE_MAXN];
- double g[ALBE_MAXN];
- double dg[ALBE_MAXN];
- double cos_theta[ALBE_MAXN];
+ u8 skip[ALBE_MAXN];
- double *gamma_i;
- double *c_i;
- double *d_i;
- double *h_i;
+ double *gamma_[ALBE_MAXN];
+ double *c_[ALBE_MAXN];
+ double *d_[ALBE_MAXN];
+ double *c2_[ALBE_MAXN];
+ double *d2_[ALBE_MAXN];
+ double *c2d2_[ALBE_MAXN];
+ double *h_[ALBE_MAXN];
- double ci2;
- double di2;
- double ci2di2;
-
- double zeta_ij;
double pre_dzeta;
- int kcount;
+ int jcnt;
+ int j2cnt;
+ int kcnt;
} t_albe_exchange;
/* albe mult (2!) potential parameters */
double gamma[2];
double gamma_m;
double c[2];
+ double c2[2];
double c_mixed;
+ double c2_mixed;
double d[2];
+ double d2[2];
double d_mixed;
+ double d2_mixed;
+ double c2d2[2];
+ double c2d2_m;
double h[2];
double h_mixed;
} t_albe_mult_params;
/* function prototypes */
-int albe_mult_complete_params(t_albe_mult_params *p);
-int albe_mult_3bp_j1(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int albe_mult_3bp_k1(t_moldyn *moldyn,
- t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
-int albe_mult_3bp_j2(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
-int albe_mult_3bp_k2(t_moldyn *moldyn,
- t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
+int albe_mult_set_params(t_moldyn *moldyn,int element1,int elemnt2);
+int albe_mult_i0(t_moldyn *moldyn,t_atom *ai);
+int albe_mult_i0_j0(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+int albe_mult_i0_j0_k0(t_moldyn *moldyn,
+ t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
+int albe_mult_i0_j1(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+int albe_mult_i0_j2(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+int albe_mult_i0_j2_k0(t_moldyn *moldyn,
+ t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
+int albe_mult_i0_j3(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
+int albe_mult_check_2b_bond(t_moldyn *moldyn,t_atom *itom,t_atom *jtom,u8 bc);
+
+/* albe potential parameter defines */
+
+// silicon
+#define ALBE_R_SI (2.82-0.14)
+#define ALBE_S_SI (2.82+0.14)
+#define ALBE_A_SI (3.24*EV/0.842)
+#define ALBE_B_SI (-1.842*3.24*EV/0.842)
+#define ALBE_R0_SI 2.232
+#define ALBE_LAMBDA_SI (1.4761*sqrt(2.0*1.842))
+#define ALBE_MU_SI (1.4761*sqrt(2.0/1.842))
+#define ALBE_GAMMA_SI 0.114354
+#define ALBE_C_SI 2.00494
+#define ALBE_D_SI 0.81472
+#define ALBE_H_SI 0.259
+#define ALBE_LC_SI 5.429
+
+// carbon
+#define ALBE_R_C (2.00-0.15)
+#define ALBE_S_C (2.00+0.15)
+#define ALBE_A_C (6.00*EV/1.167)
+#define ALBE_B_C (-2.167*6.00*EV/1.167)
+#define ALBE_R0_C 1.4276
+#define ALBE_LAMBDA_C (2.0099*sqrt(2.0*2.167))
+#define ALBE_MU_C (2.0099*sqrt(2.0/2.167))
+#define ALBE_GAMMA_C 0.11233
+#define ALBE_C_C 181.910
+#define ALBE_D_C 6.28433
+#define ALBE_H_C 0.5556
+#define ALBE_LC_C 3.566
+
+// mixed: silicon carbide
+#define ALBE_R_SIC (2.40-0.20)
+#define ALBE_S_SIC (2.40+0.20)
+#define ALBE_A_SIC (4.36*EV/0.847)
+#define ALBE_B_SIC (-1.847*4.36*EV/0.847)
+#define ALBE_R0_SIC 1.79
+#define ALBE_LAMBDA_SIC (1.6991*sqrt(2.0*1.847))
+#define ALBE_MU_SIC (1.6991*sqrt(2.0/1.847))
+#define ALBE_GAMMA_SIC 0.011877
+#define ALBE_C_SIC 273987
+#define ALBE_D_SIC 180.314
+#define ALBE_H_SIC 0.68
+#define ALBE_LC_SIC 4.359
#endif