X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=moldyn.c;h=dae975cedcd6a0b0b4baf41e26ff572a1046ab87;hb=296a35b943e922173ce648ec76a4472e287af108;hp=1ab88eb98a4a02c91ac7ef367c99bab2b2f7407a;hpb=caa3bc828974c35df2462fde737c31c0a618ee4e;p=physik%2Fposic.git diff --git a/moldyn.c b/moldyn.c index 1ab88eb..dae975c 100644 --- 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(air),&(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 */