small mods to support site energies and kinetic energies per atom
[physik/posic.git] / potentials / harmonic_oscillator.c
index e2a80e4..b203453 100644 (file)
@@ -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);