program test use bmad implicit none type (lat_struct) lat type (ele_struct) ele_inf, ele_start type(coord_struct) start_orb, end_orb integer nargs, ix,i,j,k, ix_ele character*60 lat_file, line logical err_flag real(rp) max_beta, min_max_beta,dist nargs = cesr_iargc() if(nargs == 1)then call cesr_getarg(1,lat_file) print *, 'Using ', trim(lat_file) else lat_file = 'bmad.' print '(a,$)',' Lattice file name ? (default= bmad.) ' read(5,'(a)') line call string_trim(line, line, ix) lat_file = line if(ix == 0) lat_file = 'bmad.' print *, ' lat_file = ', lat_file endif call tester ! if(1<0)then call bmad_parser (lat_file, lat) start_orb%vec(1:6)=0 start_orb%vec(1) = 0.0 start_orb%vec(2) = 0.0 start_orb%vec(3) = 0.0 start_orb%vec(4) = 0.0000 call track1(start_orb,lat%ele(1),lat%param, end_orb) print '(a,1x,6es12.4)',' start_orb ', start_orb%vec print '(a,1x,6es12.4)',' end_orb ', end_orb%vec if(1<0)then print *,' Just before make_mat6' call make_mat6 (lat%ele(1), lat%param, start_orb, err_flag=err_flag) print *,' Just after make_mat6' call type_ele (lat%ele(1), type_floor_coords=.true.) ele_start = lat%ele(0) min_max_beta = 100. ! do j = -10,10,1 ! lat%ele(0)%x%etap = ele_start%x%etap + j*0.02 ! do k=-10,10,1 ! lat%ele(0)%x%eta = ele_start%x%eta + k*0.02 call twiss_propagate_all(lat) call element_locator('INCOMING',lat,ix_ele) dist = lat%ele(ix_ele)%s - 1.72 call twiss_and_track_at_s(lat,dist,ele_inf) print '(a16,2i4,7es12.4)',ele_inf%name, j,k,ele_inf%s, ele_inf%a%beta, ele_inf%b%beta, ele_inf%a%alpha, ele_inf%b%alpha, & ele_inf%x%eta, ele_inf%x%etap ! if(1 < 2)goto 10 max_beta = 0. ! if(lat%ele(1)%b%beta < 20.0 .and. ele_inf%b%beta < 20.0)then write(16,'(/,a,/)')'#' do i = 0,lat%n_ele_track if(index(lat%ele(i)%name, 'INCOMING')/= 0)then print '(a,7es12.4)',ele_inf%name, ele_inf%s, ele_inf%a%beta, ele_inf%b%beta, ele_inf%a%alpha, ele_inf%b%alpha, & ele_inf%x%eta, ele_inf%x%etap write(16, '(a16,7es12.4)')ele_inf%name,ele_inf%s, ele_inf%a%beta, ele_inf%b%beta, ele_inf%a%alpha, ele_inf%b%alpha, & ele_inf%x%eta, ele_inf%x%etap endif print '(a,7es12.4)',lat%ele(i)%name, lat%ele(i)%s, lat%ele(i)%a%beta, lat%ele(i)%b%beta, lat%ele(i)%a%alpha, lat%ele(i)%b%alpha, & lat%ele(i)%x%eta, lat%ele(i)%x%etap write(16, '(a16,7es12.4)')lat%ele(i)%name,lat%ele(i)%s, lat%ele(i)%a%beta, lat%ele(i)%b%beta, lat%ele(i)%a%alpha, lat%ele(i)%b%alpha, & lat%ele(i)%x%eta, lat%ele(i)%x%etap max_beta = max(lat%ele(i)%x%eta, max_beta) end do write(16,'(a,es12.4,2i4)')'Max beta = ',max_beta, j,k print '(a,es12.4)','Max beta = ',max_beta min_max_beta = min(max_beta,min_max_beta) ! endif ! end do ! end do endif 10 print *,' min_max_beta = ',min_max_beta end