new albe potential + new force calc routine (old potentials need to be
[physik/posic.git] / potentials / albe.h
index 15386e7..39c4df8 100644 (file)
@@ -8,39 +8,36 @@
 #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 */
@@ -65,9 +62,15 @@ typedef struct s_albe_mult_params {
        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;
 
@@ -76,12 +79,15 @@ typedef struct s_albe_mult_params {
 
 /* function prototypes */
 int albe_mult_set_params(t_moldyn *moldyn,int element1,int elemnt2);
-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_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 */