I think your finite difference formula that's implemented here may have an error in it (line 351):
ra[m][n] += eps[m][n] * coeffs[j]/step_size * norm * vol/(4.0*pi)
When you're displace coordinates, the displacement is by a normalized, not mass-weighted eigenvector (line 314). You shouldn't need the norm of the vector in this equation, as the total displacement in either direction should simply be "step_size" (you already normalized the displacement effectively). Therefore, that line should be changed to:
ra[m][n] += eps[m][n] * coeffs[j]/step_size * vol/(4.0*pi)
I think your finite difference formula that's implemented here may have an error in it (line 351):
ra[m][n] += eps[m][n] * coeffs[j]/step_size * norm * vol/(4.0*pi)
When you're displace coordinates, the displacement is by a normalized, not mass-weighted eigenvector (line 314). You shouldn't need the norm of the vector in this equation, as the total displacement in either direction should simply be "step_size" (you already normalized the displacement effectively). Therefore, that line should be changed to:
ra[m][n] += eps[m][n] * coeffs[j]/step_size * vol/(4.0*pi)