X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=potentials%2Falbe.h;fp=potentials%2Falbe.h;h=35a0762a87a4f854ad8753c69c16ab8fdd363cfe;hb=a70de3dccbf0a01c39c2643818ec86c0b465caba;hp=0000000000000000000000000000000000000000;hpb=acdd9a6aa72f3692ccd03cc0df20e3d60555f555;p=physik%2Fposic.git diff --git a/potentials/albe.h b/potentials/albe.h new file mode 100644 index 0000000..35a0762 --- /dev/null +++ b/potentials/albe.h @@ -0,0 +1,84 @@ +/* + * albe.h - albe potential header file + * + * author: Frank Zirkelbach + * + */ + +#ifndef ALBE_H +#define ALBE_H + +#define ALBE_MAXN 16*27 + +/* albe exchange type */ +typedef struct s_albe_exchange { + + t_3dvec dist_ij; + double d_ij2; + double d_ij; + + t_3dvec dist_ik[ALBE_MAXN]; + double d_ik2[ALBE_MAXN]; + double d_ik[ALBE_MAXN]; + + double f_c_ik[ALBE_MAXN]; + double df_c_ik[ALBE_MAXN]; + + double g[ALBE_MAXN]; + double dg[ALBE_MAXN]; + double cos_theta[ALBE_MAXN]; + + double *gamma_i; + double *c_i; + double *d_i; + double *h_i; + + double ci2; + double di2; + double ci2di2; + + double zeta_ij; + double pre_dzeta; + + int kcount; +} t_albe_exchange; + +/* albe mult (2!) potential parameters */ +typedef struct s_albe_mult_params { + double S[2]; /* albe cutoff radii */ + double S2[2]; /* albe cutoff radii squared */ + double R[2]; /* albe cutoff radii */ + double Smixed; /* mixed S radius */ + double S2mixed; /* mixed S radius squared */ + double Rmixed; /* mixed R radius */ + double A[2]; /* factor of albe attractive part */ + double B[2]; /* factor of albe repulsive part */ + double r0[2]; /* r_0 */ + double Amixed; /* mixed A factor */ + double Bmixed; /* mixed B factor */ + double r0_mixed; /* mixed r_0 */ + double lambda[2]; /* albe lambda */ + double lambda_m; /* mixed lambda */ + double mu[2]; /* albe mu */ + double mu_m; /* mixed mu */ + + double gamma[2]; + double c[2]; + double d[2]; + double h[2]; + + t_albe_exchange exchange; /* exchange between 2bp and 3bp calc */ +} t_albe_mult_params; + +/* function prototypes */ +int albe_mult_complete_params(t_albe_mult_params *p); +int albe_mult_1bp(t_moldyn *moldyn,t_atom *ai); +int albe_mult_2bp(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc); +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); + +#endif