supply c2, d2, c2/d2
[physik/posic.git] / potentials / albe.c
index ddfb3c6..08ce4fa 100644 (file)
@@ -24,6 +24,12 @@ int albe_mult_set_params(t_moldyn *moldyn,int element1,int element2) {
 
        t_albe_mult_params *p;
 
+       // set cutoff before parameters (actually only necessary for some pots)
+       if(moldyn->cutoff==0.0) {
+               printf("[albe] WARNING: no cutoff!\n");
+               return -1;
+       }
+
        /* alloc mem for potential parameters */
        moldyn->pot_params=malloc(sizeof(t_albe_mult_params));
        if(moldyn->pot_params==NULL) {
@@ -90,6 +96,15 @@ int albe_mult_set_params(t_moldyn *moldyn,int element1,int element2) {
        p->S2[0]=p->S[0]*p->S[0];
        p->S2[1]=p->S[1]*p->S[1];
        p->S2mixed=p->Smixed*p->Smixed;
+       p->c2[0]=p->c[0]*p->c[0];
+       p->c2[1]=p->c[1]*p->c[1];
+       p->c2_mixed=p->c_mixed*p->c_mixed;
+       p->d2[0]=p->d[0]*p->d[0];
+       p->d2[1]=p->d[1]*p->d[1];
+       p->d2_mixed=p->d_mixed*p->d_mixed;
+       p->c2d2[0]=p->c2[0]/p->d2[0];
+       p->c2d2[1]=p->c2[1]/p->d2[1];
+       p->c2d2_m=p->c2_mixed/p->d2_mixed;
 
        printf("[albe] mult parameter info:\n");
        printf("  S (A)  | %f | %f | %f\n",p->S[0],p->S[1],p->Smixed);
@@ -349,7 +364,7 @@ int albe_mult_3bp_j2(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc) {
        v3_add(&(aj->f),&(aj->f),&force);
 
        /* virial */
-       virial_calc(aj,&force,&(exchange->dist_ij));
+       virial_calc(ai,&force,&(exchange->dist_ij));
 
 #ifdef DEBUG
 if(moldyn->time>DSTART&&moldyn->time<DEND) {
@@ -473,13 +488,13 @@ if(moldyn->time>DSTART&&moldyn->time<DEND) {
 }
 #endif
 
+       /* virial */
+       virial_calc(ai,&force,&dist_ij);
+
        /* force contribution to atom i */
        v3_scale(&force,&force,-1.0);
        v3_add(&(ai->f),&(ai->f),&force);
 
-       /* virial */
-       virial_calc(ai,&force,&dist_ij);
-
        /* derivative wrt k */
        v3_scale(&force,&dist_ik,-1.0*dfcg); // dri rik = - drk rik
        v3_scale(&tmp,&dcosdrk,fcdg);
@@ -501,13 +516,13 @@ if(moldyn->time>DSTART&&moldyn->time<DEND) {
 }
 #endif
 
+       /* virial */
+       virial_calc(ai,&force,&dist_ik);
+       
        /* force contribution to atom i */
        v3_scale(&force,&force,-1.0);
        v3_add(&(ai->f),&(ai->f),&force);
 
-       /* virial */
-       virial_calc(ai,&force,&dist_ik);
-       
        /* increase k counter */
        exchange->kcount++;