subroutine interpolate_field(fringe_or_inflector,x,xgrid_point,B,b1,b2) use bmad use magfield use magfield_interface, dummy => interpolate_field use parameters_bmad implicit none real(rp) x(3), B(3),z, b1(3,3),b2(3,3) real(rp) xgrid(3), dx(3), xgrid_point(3) integer ind(3),i integer multiplier, fringe_or_inflector dx(1:3) = x(1:3) - xgrid_point(1:3) !distance from x to the nearest map grid point ! print '(a,6es12.4)',' dx, B ', dx,B forall(i=1:3) B(i) = B(i) + dot_product(b1(i,:),dx(:)) ! B(i) = grad(B(i)) . dx ! print '(a,3es12.4)', 'B(1:3) ', B(1:3) return end subroutine