program read_kicker_grid use precision_def use cesr_utils use fieldMaps implicit none integer i,n, io integer j,k integer ix, ix2 integer nargs integer ixx, iyy, ixx_min/0/, ixx_max/0/, iyy_min/0/, iyy_max/0/ integer iz character*100 kicker_field_file, label character*100 new_file, new_file2, diff_file character*120 line real(rp), allocatable :: x1(:),y1(:),V1(:) real(rp), allocatable :: x2(:),y2(:),V2(:), delta_v(:) real(rp), allocatable :: DV(:,:) real(rp) a,b,c real(rp) deltax/0.001/,deltay/0.001/ real(rp) dv_dx, dv_dy real(rp) x0,y0,z0,dx,dy,dz real(rp) Ex,Ey,Ez,Bx,By,Bz nargs = command_argument_count() if (nargs == 1)then call get_command_argument(1, kicker_field_file) print *, 'Using ', trim(kicker_field_file) else kicker_field_file = 'KICKER_E989_NoRolledEdges.dat' print '(a,$)',' Lattice file name ? (default= KICKER_E989_NoRolledEdges.dat )' read(5,'(a)') line call string_trim(line, line, ix) kicker_field_file = line if(ix == 0) kicker_field_file = 'KICKER_E989_NoRolledEdges.dat' print *, ' kicker_field_file = ', kicker_field_file endif call readFieldMap2D(kicker_field_file, kicker%ngx,kicker%ngy,kicker%x,kicker%y,kicker%Bx,kicker%By,kicker%Bx2,kicker%By2) open(unit=12, file = 'kicker_field.bmad') dx=0.001d0 dy=0.001d0 x0=0.0d0 y0=0. z0=0. Ez=0. Bx=0. By=0. Bz=0. ! write(12,'(a)')'KICKER: sbend, rho=7.112, angle=dThetaK, field_calc=fieldmap, &' write(12, '(a1,a,a3,a)')'!', trim(kicker_field_file) write(12, '(a)')'grid_field= {' write(12, '(a)')'geometry= xyz,' write(12,'(a)')'field_type = magnetic, ' write(12,'(a)')'field_scale = -1., ' write(12,'(a)')'curved_ref_frame = .true.,' write(12, '(a6,es16.8,a1,es16.8,a1,es16.8,a2)')'r0 = (',x0,',',y0,',',z0,'),' write(12,'(a6,es16.8,a1,es16.8,a1,a16,a2)')'dr = (',dx,',',dy,',','dThetaK * x0','),' write(12,'(a)')'ele_anchor_pt = BEGINNING,' do iz=0,1 do j = 1,kicker%ngx do k = 1,kicker%ngy ixx = kicker%x(j)*10. !from cm to mm iyy = kicker%y(k)*10. Bx = kicker%Bx(j,k) By = kicker%By(j,k) Bz = 0. if(k==kicker%ngy .and. j == kicker%ngx .and. iz == 1)then write(12,'(a3,i5,a1,i5,a1,i5,a5,1x,2(es22.14,a1),es22.14,a2)') 'pt(',ixx,',',iyy,',',iz,') = (', Bx,',',By,',',Bz,')}' else write(12,'(a3,i5,a1,i5,a1,i5,a5,1x,2(es22.14,a1),es22.14,a2)') 'pt(',ixx,',',iyy,',',iz,') = (', Bx,',',By,',',Bz,'),' endif end do end do end do end