X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=blobdiff_plain;f=potentials%2Fharmonic_oscillator.c;h=b203453598ae34a149a85dc1b79827d4f8402b01;hp=e2a80e4f3401e3d7562fa5152b99e7537a515336;hb=20409ee0c545235c9246edde2d3cda5de0ddabde;hpb=5db010c4414a56e61298c7a42c7b7ca7ca46d40e diff --git a/potentials/harmonic_oscillator.c b/potentials/harmonic_oscillator.c index e2a80e4..b203453 100644 --- a/potentials/harmonic_oscillator.c +++ b/potentials/harmonic_oscillator.c @@ -25,6 +25,7 @@ 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->pot_params; sc=params->spring_constant; @@ -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);