subroutine get_quad_locs(lat, zquad, xquad) !zquad is the position, and xquad is positive or negative 1 use bmad implicit none type(lat_struct) lat real(rp), allocatable :: zquad(:), xquad(:) integer i,n n=0 !print *,' lat%n_ele_track =', lat%n_ele_track do i=1, lat%n_ele_track ! print '(i10,a16,1x,es12.4)',i,lat%ele(i)%name, lat%ele(i)%s if(lat%ele(i)%key == quadrupole$)n=n+1 end do allocate(zquad(1:n), xquad(1:n)) n=0 do i=1,lat%n_ele_track if(lat%ele(i)%key == quadrupole$)then n=n+1 zquad(n) = lat%ele(i)%s - 0.5 * lat%ele(i)%value(l$) xquad(n) = sign(lat%ele(i)%value(l$), lat%ele(i)%value(k1$)) endif end do !do i=1,n ! print '(2es12.4)',zquad(i), xquad(i) !end do return end subroutine