]> www.hackdaworld.org Git - physik/posic.git/blob - potentials/albe.h
added msd calc + 11x constraints as ifdef
[physik/posic.git] / potentials / albe.h
1 /*
2  * albe.h - albe potential header file
3  *
4  * author: Frank Zirkelbach <frank.zirkelbach@physik.uni-augsburg.de>
5  *
6  */
7
8 #ifndef ALBE_H
9 #define ALBE_H
10
11 #define ALBE_MAXN       16*27
12
13 /* albe exchange type */
14 typedef struct s_albe_exchange {
15
16         t_3dvec dist_ij;
17         double d_ij2;
18         double d_ij;
19
20         t_3dvec dist_ik[ALBE_MAXN];
21         double d_ik2[ALBE_MAXN];
22         double d_ik[ALBE_MAXN];
23
24         double f_c_ik[ALBE_MAXN];
25         double df_c_ik[ALBE_MAXN];
26
27         double g[ALBE_MAXN];
28         double dg[ALBE_MAXN];
29         double cos_theta[ALBE_MAXN];
30
31         double *gamma_i;
32         double *c_i;
33         double *d_i;
34         double *h_i;
35
36         double ci2;
37         double di2;
38         double ci2di2;
39
40         double zeta_ij;
41         double pre_dzeta;
42
43         int kcount;
44 } t_albe_exchange;
45
46 /* albe mult (2!) potential parameters */
47 typedef struct s_albe_mult_params {
48         double S[2];            /* albe cutoff radii */
49         double S2[2];           /* albe cutoff radii squared */
50         double R[2];            /* albe cutoff radii */
51         double Smixed;          /* mixed S radius */
52         double S2mixed;         /* mixed S radius squared */
53         double Rmixed;          /* mixed R radius */
54         double A[2];            /* factor of albe attractive part */
55         double B[2];            /* factor of albe repulsive part */
56         double r0[2];           /* r_0 */
57         double Amixed;          /* mixed A factor */
58         double Bmixed;          /* mixed B factor */
59         double r0_mixed;        /* mixed r_0 */
60         double lambda[2];       /* albe lambda */
61         double lambda_m;        /* mixed lambda */
62         double mu[2];           /* albe mu */
63         double mu_m;            /* mixed mu */
64
65         double gamma[2];
66         double gamma_m;
67         double c[2];
68         double c_mixed;
69         double c2[2];
70         double c2_mixed;
71         double d[2];
72         double d_mixed;
73         double d2[2];
74         double d2_mixed;
75         double h[2];
76         double h_mixed;
77         double c2d2[2];
78         double c2d2_m;
79
80         t_albe_exchange exchange;       /* exchange between 2bp and 3bp calc */
81 } t_albe_mult_params;
82
83 /* function prototypes */
84 int albe_mult_set_params(t_moldyn *moldyn,int element1,int elemnt2);
85 int albe_mult_3bp_j1(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
86 int albe_mult_3bp_k1(t_moldyn *moldyn,
87                      t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
88 int albe_mult_3bp_j2(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
89 int albe_mult_3bp_k2(t_moldyn *moldyn,
90                      t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
91 int albe_mult_check_2b_bond(t_moldyn *moldyn,t_atom *itom,t_atom *jtom,u8 bc);
92 /* fast */
93 int albe_potential_force_calc(t_moldyn *moldyn);
94
95 /* albe potential parameter defines */
96
97 // silicon
98 #define ALBE_R_SI               (2.82-0.14)
99 #define ALBE_S_SI               (2.82+0.14)
100 #define ALBE_A_SI               (3.24*EV/0.842)
101 #define ALBE_B_SI               (-1.842*3.24*EV/0.842)
102 #define ALBE_R0_SI              2.232
103 #define ALBE_LAMBDA_SI          (1.4761*sqrt(2.0*1.842))
104 #define ALBE_MU_SI              (1.4761*sqrt(2.0/1.842))
105 #define ALBE_GAMMA_SI           0.114354
106 #define ALBE_C_SI               2.00494
107 #define ALBE_D_SI               0.814719
108 #define ALBE_H_SI               0.259
109 #define ALBE_LC_SI              5.429
110
111 // carbon
112 #define ALBE_R_C                (2.00-0.15)
113 #define ALBE_S_C                (2.00+0.15)
114 #define ALBE_A_C                (6.00*EV/1.1671419)
115 #define ALBE_B_C                (-2.1671419*6.00*EV/1.1671419)
116 #define ALBE_R0_C               1.4276442
117 #define ALBE_LAMBDA_C           (2.0099457*sqrt(2.0*2.1671419))
118 #define ALBE_MU_C               (2.0099457*sqrt(2.0/2.1671419))
119 #define ALBE_GAMMA_C            0.1123327
120 #define ALBE_C_C                181.9100526
121 #define ALBE_D_C                6.2843249
122 #define ALBE_H_C                0.5556181
123 #define ALBE_LC_C               3.566
124
125 // mixed: silicon carbide
126 #define ALBE_R_SIC              (2.40-0.20)
127 #define ALBE_S_SIC              (2.40+0.20)
128 #define ALBE_A_SIC              (4.36*EV/0.8474739)
129 #define ALBE_B_SIC              (-1.8474739*4.36*EV/0.8474739)
130 #define ALBE_R0_SIC             1.79
131 #define ALBE_LAMBDA_SIC         (1.6990751*sqrt(2.0*1.8474739))
132 #define ALBE_MU_SIC             (1.6990751*sqrt(2.0/1.8474739))
133 #define ALBE_GAMMA_SIC          0.0118769
134 #define ALBE_C_SIC              273986.61
135 #define ALBE_D_SIC              180.31411
136 #define ALBE_H_SIC              0.68
137 #define ALBE_LC_SIC             4.359
138
139 #endif