2e4f2429a17494319d18bbef95830fcb1ffce540
[physik/posic.git] / potentials / tersoff.h
1 /*
2  * tersoff.h - tersoff potential header file
3  *
4  * author: Frank Zirkelbach <frank.zirkelbach@physik.uni-augsburg.de>
5  *
6  */
7
8 #ifndef TERSOFF_H
9 #define TERSOFF_H
10
11 #define TERSOFF_MAXN    16*27
12
13 /* tersoff exchange type */
14 typedef struct s_tersoff_echange {
15
16         t_3dvec dist_ij;
17         double d_ij2;
18         double d_ij;
19
20         t_3dvec dist_ik[TERSOFF_MAXN];
21         double d_ik2[TERSOFF_MAXN];
22         double d_ik[TERSOFF_MAXN];
23
24         double f_c_ik[TERSOFF_MAXN];
25         double df_c_ik[TERSOFF_MAXN];
26
27         double g[TERSOFF_MAXN];
28         double dg[TERSOFF_MAXN];
29         double cos_theta[TERSOFF_MAXN];
30
31         double zeta_ij;
32         double pre_dzeta;
33
34         int kcount;
35 } t_tersoff_exchange;
36
37 /* tersoff mult (2!) potential parameters */
38 typedef struct s_tersoff_mult_params {
39         double S[2];            /* tersoff cutoff radii */
40         double S2[2];           /* tersoff cutoff radii squared */
41         double R[2];            /* tersoff cutoff radii */
42         double Smixed;          /* mixed S radius */
43         double S2mixed;         /* mixed S radius squared */
44         double Rmixed;          /* mixed R radius */
45         double A[2];            /* factor of tersoff attractive part */
46         double B[2];            /* factor of tersoff repulsive part */
47         double Amixed;          /* mixed A factor */
48         double Bmixed;          /* mixed B factor */
49         double lambda[2];       /* tersoff lambda */
50         double lambda_m;        /* mixed lambda */
51         double mu[2];           /* tersoff mu */
52         double mu_m;            /* mixed mu */
53
54         double chi;
55
56         double beta[2];
57         double n[2];
58         double c[2];
59         double d[2];
60         double h[2];
61
62         double ci2[2];
63         double di2[2];
64         double ci2di2[2];
65         double betaini[2];
66
67         t_tersoff_exchange exchange;    /* exchange between 2bp and 3bp calc */
68 } t_tersoff_mult_params;
69
70 /* function prototypes */
71 int tersoff_mult_set_params(t_moldyn *moldyn,int element1,int element2);
72 //int tersoff_mult_1bp(t_moldyn *moldyn,t_atom *ai);
73 int tersoff_mult_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
74 int tersoff_mult_3bp_j1(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
75 int tersoff_mult_3bp_k1(t_moldyn *moldyn,
76                         t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
77 int tersoff_mult_3bp_j2(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
78 int tersoff_mult_3bp_k2(t_moldyn *moldyn,
79                         t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
80 int tersoff_mult_check_2b_bond(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
81
82 /* tersoff potential paramter defines */
83
84 // silicon
85 #define TM_R_SI                 2.7                             /* A */
86 #define TM_S_SI                 3.0                             /* A */
87 #define TM_A_SI                 (1830.8*EV)                     /* NA */
88 #define TM_B_SI                 (471.18*EV)                     /* NA */
89 #define TM_LAMBDA_SI            2.4799                          /* 1/A */
90 #define TM_MU_SI                1.7322                          /* 1/A */
91 #define TM_BETA_SI              1.1000e-6
92 #define TM_N_SI                 0.78734
93 #define TM_C_SI                 1.0039e5
94 #define TM_D_SI                 16.217
95 #define TM_H_SI                 -0.59825
96
97 // carbon
98 #define TM_R_C                  1.8                             /* A */
99 #define TM_S_C                  2.1                             /* A */
100 #define TM_A_C                  (1393.6*EV)                     /* NA */
101 #define TM_B_C                  (346.7*EV)                      /* NA */
102 #define TM_LAMBDA_C             3.4879                          /* 1/A */
103 #define TM_MU_C                 2.2119                          /* 1/A */
104 #define TM_BETA_C               1.5724e-7
105 #define TM_N_C                  0.72751
106 #define TM_C_C                  3.8049e4
107 #define TM_D_C                  4.384
108 #define TM_H_C                  -0.57058
109
110 // mixed: silicon carbide
111 #define TM_CHI_SIC              0.9776
112 #define TM_LC_SIC               4.32                            /* A */
113
114 #endif