new structure (skipped 2 inlines) same code!
[physik/posic.git] / moldyn.c
index 1ab88eb..dae975c 100644 (file)
--- a/moldyn.c
+++ b/moldyn.c
@@ -165,7 +165,6 @@ int set_pbc(t_moldyn *moldyn,u8 x,u8 y,u8 z) {
 int set_potential1b(t_moldyn *moldyn,pf_func1b func,void *params) {
 
        moldyn->func1b=func;
-       moldyn->pot1b_params=params;
 
        return 0;
 }
@@ -173,7 +172,6 @@ int set_potential1b(t_moldyn *moldyn,pf_func1b func,void *params) {
 int set_potential2b(t_moldyn *moldyn,pf_func2b func,void *params) {
 
        moldyn->func2b=func;
-       moldyn->pot2b_params=params;
 
        return 0;
 }
@@ -181,7 +179,6 @@ int set_potential2b(t_moldyn *moldyn,pf_func2b func,void *params) {
 int set_potential2b_post(t_moldyn *moldyn,pf_func2b_post func,void *params) {
 
        moldyn->func2b_post=func;
-       moldyn->pot2b_params=params;
 
        return 0;
 }
@@ -189,7 +186,13 @@ int set_potential2b_post(t_moldyn *moldyn,pf_func2b_post func,void *params) {
 int set_potential3b(t_moldyn *moldyn,pf_func3b func,void *params) {
 
        moldyn->func3b=func;
-       moldyn->pot3b_params=params;
+
+       return 0;
+}
+
+int set_potential_params(t_moldyn *moldyn,void *params) {
+
+       moldyn->pot_params=params;
 
        return 0;
 }
@@ -1449,7 +1452,8 @@ printf("\n\n");
  * virial calculation
  */
 
-inline int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d) {
+//inline int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d) {
+int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d) {
 
        a->virial.xx+=f->x*d->x;
        a->virial.yy+=f->y*d->y;
@@ -1465,7 +1469,8 @@ inline int virial_calc(t_atom *a,t_3dvec *f,t_3dvec *d) {
  * periodic boundayr checking
  */
 
-inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
+//inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
+int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
        
        double x,y,z;
        t_3dvec *dim;
@@ -1492,45 +1497,6 @@ inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {
        return 0;
 }
         
-
-/*
- * example potentials
- */
-
-/* harmonic oscillator potential and force */
-
-int harmonic_oscillator(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc) {
-
-       t_ho_params *params;
-       t_3dvec force,distance;
-       double d,f;
-       double sc,equi_dist;
-
-       params=moldyn->pot2b_params;
-       sc=params->spring_constant;
-       equi_dist=params->equilibrium_distance;
-
-       if(ai<aj) return 0;
-
-       v3_sub(&distance,&(aj->r),&(ai->r));
-       
-       if(bc) check_per_bound(moldyn,&distance);
-       d=v3_norm(&distance);
-       if(d<=moldyn->cutoff) {
-               moldyn->energy+=(0.5*sc*(d-equi_dist)*(d-equi_dist));
-               /* f = -grad E; grad r_ij = -1 1/r_ij distance */
-               f=sc*(1.0-equi_dist/d);
-               v3_scale(&force,&distance,f);
-               v3_add(&(ai->f),&(ai->f),&force);
-               virial_calc(ai,&force,&distance);
-               virial_calc(aj,&force,&distance); /* f and d signe switched */
-               v3_scale(&force,&distance,-f);
-               v3_add(&(aj->f),&(aj->f),&force);
-       }
-
-       return 0;
-}
-
 /*
  * debugging / critical check functions
  */