!........................................................................ ! ! Subroutine : ! ! Description: propogate twiss to center of quad ! ! Arguments : ! ! Mod/Commons: ! ! Calls : ! ! Author : ! ! Modified : ! !........................................................................ ! ! ! $Log$ ! Revision 1.8 2007/03/21 16:02:21 dcs ! a%eta_lab -> x%eta, etc. ! ! Revision 1.7 2007/01/30 16:15:14 dcs ! merged with branch_bmad_1. ! ! Revision 1.4 2003/11/18 00:58:22 dcs ! volt to voltage ! ! Revision 1.3 2003/09/23 18:31:29 dlr ! with carriage return, uses lattice in constraint file ! ! Revision 1.2 2003/04/30 17:14:53 cesrulib ! dlr's changes since last import ! ! Revision 1.1.1.1 2002/12/13 19:23:29 cesrulib ! import bmadz ! ! !........................................................................ ! subroutine quad_twiss ( lat, quad) use bmad use bmadz_mod use zquad_lens_mod implicit none type (lat_struct) lat type (ele_struct) ele0, ele1, ele2 type (zquad_struct) quad integer i, j real(rp) b_ave call identify_quads (lat, quad) do j = 1, quad%n !get average beta and maximum beta in quads i=quad%lens(j)%ix if(lat%ele(i)%key == sbend$ .or. lat%ele(i)%key == rbend$)then quad%lens(j)%a%beta_ave = b_ave(lat%ele(i)%a%beta,-lat%ele(i)%a%alpha, lat%ele(i)%value(k1$), lat%ele(i)%value(l$)) quad%lens(j)%b%beta_ave = b_ave(lat%ele(i)%b%beta,-lat%ele(i)%b%alpha, -lat%ele(i)%value(k1$), lat%ele(i)%value(l$)) else call quad_beta_ave (lat%ele(i), quad%lens(j)%a%beta_ave, quad%lens(j)%b%beta_ave) endif ! propogate twiss to center of quad ele1 = lat%ele(i) if(ele1%mat6_calc_method /= taylor$)then ele1%value(k1$) = lat%ele(i)%value(k1$) ele1%value(l$) = 0.5 * lat%ele(i)%value(l$) call set_flags_for_changed_attribute(ele1, .true.) call make_mat6(ele1, lat%param) call twiss_propagate1 ( lat%ele(i-1), ele1) else ele1 = lat%ele(i) endif ele0 = lat%ele(i-1) ! Twiss at the start of the quad ele2 = lat%ele(i) ! Twiss at the end of the quad quad%lens(j)%a%beta_max = max(ele0%a%beta, ele1%a%beta, ele2%a%beta) quad%lens(j)%b%beta_max = max(ele0%b%beta, ele1%b%beta, ele2%b%beta) quad%lens(j)%x%eta_max = max(ele0%x%eta, ele1%x%eta, ele2%x%eta) quad%lens(j)%y%eta_max = max(ele0%y%eta, ele1%y%eta, ele2%y%eta) quad%lens(j)%a%eta_max = max(ele0%a%eta, ele1%a%eta, ele2%a%eta) quad%lens(j)%b%eta_max = max(ele0%b%eta, ele1%b%eta, ele2%b%eta) end do return end