16 #ifndef INCLUDED_core_scoring_interpolation_util_hh
17 #define INCLUDED_core_scoring_interpolation_util_hh
20 #include <ObjexxFCL/FArray1D.hh>
32 ObjexxFCL::FArray1D <Real>
const & potential,
33 Real const & bin_width,
39 Size const & NUM_BINS( potential.size() );
41 Size r_bin_lo =
Size( r/bin_width + 0.5 );
42 Size r_bin_hi = r_bin_lo + 1;
47 if (r_bin_lo > NUM_BINS )
return;
49 if (r_bin_hi > NUM_BINS ){
50 value = potential( NUM_BINS );
51 }
else if (r_bin_lo < 1 ) {
52 value = potential( 1 );
54 Real const fraction = (r/bin_width + 0.5) - r_bin_lo;
55 value = ( (1 - fraction ) * potential( r_bin_lo ) +
56 fraction * potential( r_bin_hi ) );
57 deriv = ( potential( r_bin_hi ) - potential( r_bin_lo ) ) / bin_width;