X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=potentials%2Fharmonic_oscillator.c;h=b203453598ae34a149a85dc1b79827d4f8402b01;hb=20409ee0c545235c9246edde2d3cda5de0ddabde;hp=0d933b682719062a51d374f1c22ca62fdf9d1841;hpb=caa3bc828974c35df2462fde737c31c0a618ee4e;p=physik%2Fposic.git diff --git a/potentials/harmonic_oscillator.c b/potentials/harmonic_oscillator.c index 0d933b6..b203453 100644 --- a/potentials/harmonic_oscillator.c +++ b/potentials/harmonic_oscillator.c @@ -17,7 +17,7 @@ #include "../moldyn.h" #include "../math/math.h" -//#include "harmonic_oscillator.h" +#include "harmonic_oscillator.h" int harmonic_oscillator(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc) { @@ -25,8 +25,9 @@ int harmonic_oscillator(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc) { t_3dvec force,distance; double d,f; double sc,equi_dist; + double energy; - params=moldyn->pot2b_params; + params=moldyn->pot_params; sc=params->spring_constant; equi_dist=params->equilibrium_distance; @@ -37,7 +38,10 @@ int harmonic_oscillator(t_moldyn *moldyn,t_atom *ai,t_atom *aj,u8 bc) { 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)); + energy=(0.5*sc*(d-equi_dist)*(d-equi_dist)); + moldyn->energy+=energy; + ai->e+=0.5*energy; + aj->e+=0.5*energy; /* f = -grad E; grad r_ij = -1 1/r_ij distance */ f=sc*(1.0-equi_dist/d); v3_scale(&force,&distance,f);