Merge branch 'leadoff'
[physik/posic.git] / potentials / tersoff_orig.h
1 /*
2  * tersoff_orig.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 /* tersoff exchange type */
12 typedef struct s_tersoff_echange {
13         double f_c,df_c;
14         double f_a,df_a;
15
16         t_3dvec dist_ij;
17         double d_ij2;
18         double d_ij;
19
20         double chi;
21
22         double *beta_i;
23         double *beta_j;
24         double *n_i;
25         double *n_j;
26         double *c_i;
27         double *c_j;
28         double *d_i;
29         double *d_j;
30         double *h_i;
31         double *h_j;
32
33         double ci2;
34         double cj2;
35         double di2;
36         double dj2;
37         double ci2di2;
38         double cj2dj2;
39         double betaini;
40         double betajnj;
41
42         u8 run3bp;
43         u8 run2bp_post;
44         u8 d_ij_between_rs;
45
46         double zeta_ij;
47         double zeta_ji;
48         t_3dvec dzeta_ij;
49         t_3dvec dzeta_ji;
50 } t_tersoff_exchange;
51
52 /* tersoff mult (2!) potential parameters */
53 typedef struct s_tersoff_mult_params {
54         double S[2];            /* tersoff cutoff radii */
55         double S2[2];           /* tersoff cutoff radii squared */
56         double R[2];            /* tersoff cutoff radii */
57         double Smixed;          /* mixed S radius */
58         double S2mixed;         /* mixed S radius squared */
59         double Rmixed;          /* mixed R radius */
60         double A[2];            /* factor of tersoff attractive part */
61         double B[2];            /* factor of tersoff repulsive part */
62         double Amixed;          /* mixed A factor */
63         double Bmixed;          /* mixed B factor */
64         double lambda[2];       /* tersoff lambda */
65         double lambda_m;        /* mixed lambda */
66         double mu[2];           /* tersoff mu */
67         double mu_m;            /* mixed mu */
68
69         double chi;
70
71         double beta[2];
72         double n[2];
73         double c[2];
74         double d[2];
75         double h[2];
76
77         t_tersoff_exchange exchange;    /* exchange between 2bp and 3bp calc */
78 } t_tersoff_mult_params;
79
80 /* function prototypes */
81 int tersoff_mult_complete_params(t_tersoff_mult_params *p);
82 int tersoff_mult_1bp(t_moldyn *moldyn,t_atom *ai);
83 int tersoff_mult_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
84 int tersoff_mult_post_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc);
85 int tersoff_mult_3bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,t_atom *ak,u8 bc);
86
87 #endif