program create_bfield_grid use bmad implicit none real(rp) r,y,Br,By real(rp) Ex,Ey,Ez,Bz real(rp) x0,y0,z0,dx,dy,dz integer ix, iy, iz integer i,n,nall/0/ integer num(-250:250)/501*0./ integer num_ix(-50:30)/81*0./ character*120 string dx=0.01 dy=0.01 x0=7.112 dz=twopi*x0 y0=0. z0=0. Ex=0 Ey=0 Ez=0 write(12, '(a)') 'FULLRING: sbend, rho = 7.112, field_calc = grid, tracking_method = runge_kutta, num_steps=1000, mat6_calc_method = tracking, angle=twopi, &' write(12, '(a)')'field = {mode = {grid = {' write(12, '(a)')'type = xyz,' write(12, '(a)')'curved_coords = .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,es16.8,a2)')'dr = (',dx,',',dy,',',dz,'),' write(12,'(a)')'ele_anchor_pt = BEGINNING,' do iz = 0,1 open(unit=11, file='fringe_table_1cm_spacing.txt') read(11,'(a)')string print *,string n=0 do while(.true.) ! read(11,'(f5.1,f6.1,2es22.14)')r,y,Br,By ! read(11,*)r,y,Br,By read(11,'(a)', end=99)string call string_trim(string,string,i) read(string(1:i),*)r call string_trim(string(i+1:),string,i) read(string(1:i),*)y call string_trim(string(i+1:),string,i) read(string(1:i),*)Br call string_trim(string(i+1:),string,i) read(string(1:i),*)By ! print '(4es12.4)',r,y,Br,By if(r < 670. .or. r > 730.) cycle n=n+1 ix = (r/100.-x0)/dx + sign(0.5_rp,r/100.-x0) !cm to m iy = (y/100.-y0)/dy + sign(0.5_rp,y/100.-y0) num(iy) = num(iy) + 1 num_ix(ix) = num_ix(ix) + 1 ! write(*,'(a3,1x,3i10,a5,1x,6es22.14,a2)') 'pt(',ix,',',iy,',',iz,') = (', Ex,',',Ey,',',Ez,',',Br,',',By,',',Bz,'),' if(n == nall)then write(12,'(a3,i5,a1,i5,a1,i5,a5,1x,5(es22.14,a1),es22.14,a4)')'pt(',ix,',',iy,',',iz,') = (', Ex,',',Ey,',',Ez,',',Br,',',By,',',Bz,')}}}' else write(12,'(a3,i5,a1,i5,a1,i5,a5,1x,5(es22.14,a1),es22.14,a2)')'pt(',ix,',',iy,',',iz,') = (', Ex,',',Ey,',',Ez,',',Br,',',By,',',Bz,'),' endif end do 99 close(unit=11) nall=n print *,' nall = ', nall end do !write(12,'(2a)')'}}}' do i=-130,130 write(17,'(2i10)')i,num(i) end do do i=-50,30 write(17,'(20i10)')i,num_ix(i) end do end