!Mixed symmetry D1a2s3a4V1a2s3a4 (displacement quads 13 opposite 24 and Voltage 13 opposite 24) !all possibilities voltage and displacement for plates 1,2,3 &4. Quads 1&3 short and long are all the same displacement. Quads 1&3 short and long are the same voltage. !quads 2 & 4 short and long are all opposite quads 1&3. Total number = 2^4 X 2^4 = 256 program create_lattice_config use sim_utils implicit none type quad_error_struct real(rp) long_plate_offset_x(4) ! four plates real(rp) short_plate_offset_x(4) ! four plates real(rp) long_plate_offset_y(4) ! four plates real(rp) short_plate_offset_y(4) ! four plates real(rp) long_plate_volt(4) ! four plates real(rp) short_plate_volt(4) ! four plates end type type (quad_error_struct) quad(4) integer i integer k1_1,k2_1,k3_1,k4_1,k1_2,k2_2,k3_2,k4_2,k1_3,k2_3,k3_3,k4_3,k1_4,k2_4,k3_4,k4_4 integer n1,n2,n3,n4,p,n integer n1_1,n2_1,n3_1,n4_1,n1_2,n2_2,n3_2,n4_2,n1_3,n2_3,n3_3,n4_3,n1_4,n2_4,n3_4,n4_4 integer iquad, quad_ind integer lun, lun1 integer status/0/ integer system integer n_start, n_end character*40 directory character*3 c character*1 iquad_word real(rp) radial real(rp) volt(4)/4*0.1058/ print '(a,$)',' Start at configuration n =? ' read(5,*)n_start print '(a,$)',' End with configuration n =? ' read(5,*)n_end do i=1,4 quad(i)%long_plate_offset_x(1:4) =0.001 quad(i)%short_plate_offset_x(1:4) =0.001 quad(i)%long_plate_offset_y(1:4) =0.001 quad(i)%short_plate_offset_y(1:4) =0.001 quad(i)%long_plate_volt(1:4) =0.05 *volt(i) quad(i)%short_plate_volt(1:4) =0.05 *volt(i) end do radial = 30.e-6*1.45 n=0 n1=0 n2=0 n3=0 n4=0 ! Voltage and positions same on all quads ! do p = -1,1,2 !radial bfiield do k1_1=-1,1,2 !horizontal-vertical 1 ! k1_1=0 ! do k1_3=-1,1,2 !horizontal-vertical 1 k1_2=-k1_1 k1_3= k1_1 k1_4=-k1_1 do k2_1 =-1,1,2 !vertical 2 ! k2_1=0 ! do k2_3 =-1,1,2 !vertical 2 k2_2= -k2_1 k2_3= k2_1 k2_4= -k2_1 do k3_1 =-1,1,2 !horizontal 3 ! k3_1=0 ! do k3_3 =-1,1,2 !horizontal 3 k3_2=-k3_1 k3_3= k3_1 k3_4=-k3_1 do k4_1=-1,1,2 !vertical 4 ! k4_1=0 ! do k4_3=-1,1,2 !vertical 4 k4_2= -k4_1 k4_3= k4_1 k4_4= -k4_1 do n1_1 = -1,1,2 !voltage plate 1 n1_2 = -n1_1 n1_3 = n1_1 n1_4 = -n1_1 ! do n1_3 = -1,1,2 !voltage plate 1 do n2_1 = -1,1,2 !voltage plate 2 n2_2 = -n2_1 n2_3 = n2_1 n2_4 = -n2_1 ! do n2_3 = -1,1,2 !voltage plate 2 do n3_1 = -1,1,2 !voltage plate 3 n3_2 = -n3_1 n3_3 = n3_1 n3_4 = -n3_1 ! do n3_3 = -1,1,2 !voltage plate 3 do n4_1 = -1,1,2 !voltage plate 4 n4_2 = -n4_1 n4_3 = n4_1 n4_4 = -n4_1 ! do n4_3 = -1,1,2 !voltage plate 4 n=n+1 if(n n_end)goto 99 write(c,'(i3.3)')n ! if(n < 10)c(3:3)=char(n) ! if(n >= 10 .and. n <100)c(2:3)=char(n) ! if(n >= 100)c(1:3)=char(n) directory = 'config_d1a2s3a4V1a2s3a4'//'_'//c status= system('mkdir ' // directory) lun = lunget() open(unit=lun, file = trim(directory)//'/quad_plate_misalign.bmad') lun1 = lunget() open(unit = lun1,file=trim(directory)//'/quad_input.dat') write(lun1,'(a6)')'&input' do iquad = 1,4 write(iquad_word,'(i1)')iquad ! print *,' quad_word = ', iquad_word if(iquad ==1)then write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(3)%r0(1)]=', k1_1 * quad(iquad)%long_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(4)%r0(2)]=', k2_1 * quad(iquad)%long_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(5)%r0(1)]=', k3_1 * quad(iquad)%long_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(6)%r0(2)]=', k4_1 * quad(iquad)%long_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%long_quad_plate_index('//iquad_word//') = ', volt(iquad)+n1_1* quad(iquad)%long_plate_volt(1),volt(iquad)+n2_1*quad(iquad)%long_plate_volt(2), & volt(iquad)+n3_1* quad(iquad)%long_plate_volt(3),volt(iquad)+n4_1*quad(iquad)%long_plate_volt(4) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(3)%r0(1)]=', k1_1 * quad(iquad)%short_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(4)%r0(2)]=', k2_1 * quad(iquad)%short_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(5)%r0(1)]=', k3_1 * quad(iquad)%short_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(6)%r0(2)]=', k4_1 * quad(iquad)%short_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%short_quad_plate_index('//iquad_word//')= ', volt(iquad)+n1_1* quad(iquad)%short_plate_volt(1),volt(iquad)+n2_1*quad(iquad)%short_plate_volt(2), & volt(iquad)+n3_1* quad(iquad)%short_plate_volt(3),volt(iquad)+n4_1*quad(iquad)%short_plate_volt(4) endif if(iquad ==2)then write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(3)%r0(1)]=', k1_2 * quad(iquad)%long_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(4)%r0(2)]=', k2_2 * quad(iquad)%long_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(5)%r0(1)]=', k3_2 * quad(iquad)%long_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(6)%r0(2)]=', k4_2 * quad(iquad)%long_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%long_quad_plate_index('//iquad_word//') = ', volt(iquad)+n1_2* quad(iquad)%long_plate_volt(1),volt(iquad)+n2_2*quad(iquad)%long_plate_volt(2), & volt(iquad)+n3_2* quad(iquad)%long_plate_volt(3),volt(iquad)+n4_2*quad(iquad)%long_plate_volt(4) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(3)%r0(1)]=', k1_2 * quad(iquad)%short_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(4)%r0(2)]=', k2_2 * quad(iquad)%short_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(5)%r0(1)]=', k3_2 * quad(iquad)%short_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(6)%r0(2)]=', k4_2 * quad(iquad)%short_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%short_quad_plate_index('//iquad_word//')= ', volt(iquad)+n1_2* quad(iquad)%short_plate_volt(1),volt(iquad)+n2_2*quad(iquad)%short_plate_volt(2), & volt(iquad)+n3_2* quad(iquad)%short_plate_volt(3),volt(iquad)+n4_2*quad(iquad)%short_plate_volt(4) endif if(iquad == 3)then write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(3)%r0(1)]=', k1_3 * quad(iquad)%long_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(4)%r0(2)]=', k2_3 * quad(iquad)%long_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(5)%r0(1)]=', k3_3 * quad(iquad)%long_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(6)%r0(2)]=', k4_3 * quad(iquad)%long_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%long_quad_plate_index('//iquad_word//') = ', volt(iquad)+n1_3* quad(iquad)%long_plate_volt(1),volt(iquad)+n2_3*quad(iquad)%long_plate_volt(2), & volt(iquad)+n3_3* quad(iquad)%long_plate_volt(3),volt(iquad)+n4_3*quad(iquad)%long_plate_volt(4) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(3)%r0(1)]=', k1_3 * quad(iquad)%short_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(4)%r0(2)]=', k2_3 * quad(iquad)%short_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(5)%r0(1)]=', k3_3 * quad(iquad)%short_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(6)%r0(2)]=', k4_3 * quad(iquad)%short_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%short_quad_plate_index('//iquad_word//')= ', volt(iquad)+n1_3* quad(iquad)%short_plate_volt(1),volt(iquad)+n2_3*quad(iquad)%short_plate_volt(2), & volt(iquad)+n3_3* quad(iquad)%short_plate_volt(3),volt(iquad)+n4_3*quad(iquad)%short_plate_volt(4) endif if(iquad == 4)then write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(3)%r0(1)]=', k1_4 * quad(iquad)%long_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(4)%r0(2)]=', k2_4 * quad(iquad)%long_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(5)%r0(1)]=', k3_4 * quad(iquad)%long_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_long[grid_field(6)%r0(2)]=', k4_4 * quad(iquad)%long_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%long_quad_plate_index('//iquad_word//') = ', volt(iquad)+n1_4* quad(iquad)%long_plate_volt(1),volt(iquad)+n2_4*quad(iquad)%long_plate_volt(2), & volt(iquad)+n3_4* quad(iquad)%long_plate_volt(3),volt(iquad)+n4_4*quad(iquad)%long_plate_volt(4) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(3)%r0(1)]=', k1_4 * quad(iquad)%short_plate_offset_x(1) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(4)%r0(2)]=', k2_4 * quad(iquad)%short_plate_offset_y(2) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(5)%r0(1)]=', k3_4 * quad(iquad)%short_plate_offset_x(3) write(lun, '(a,f14.6)' )'quad'//iquad_word//'_short[grid_field(6)%r0(2)]=', k4_4 * quad(iquad)%short_plate_offset_y(4) write(lun1, '(a,4f14.6)' )'quad_params%short_quad_plate_index('//iquad_word//')= ', volt(iquad)+n1_4* quad(iquad)%short_plate_volt(1),volt(iquad)+n2_4*quad(iquad)%short_plate_volt(2), & volt(iquad)+n3_4* quad(iquad)%short_plate_volt(3),volt(iquad)+n4_4*quad(iquad)%short_plate_volt(4) endif end do !iquad 1,4 ! write(lun, '(a,es14.6)' )'radial_field =', p*radial write(lun1, '(a,es14.6)' )'b_radial = ', p*radial write(lun1, '(a1)')'\' close(lun1) close(lun) lun = lunget() open (lun,file = trim(directory)//'/g2.sh') write(lun,'(a)')'#!/bin/bash' write(lun,'(a)')'cd /nfs/gm2/data2/dlr10/g-2/mytest/efield_pitch_d1a2s3a4V1a2s3a4/'//trim(directory) write(lun,'(a)')'DESTINATION_DIR=${JOB_ID}' write(lun,'(a)')'mkdir -p ${DESTINATION_DIR}' write(lun,'(a)')'/nfs/acc/user/dlr/development9_linux/g-2/softlink_lnx' write(lun,'(a)')'ln -s /nfs/gm2/data2/dlr10/g-2/mytest/efield_pitch_d1a2s3a4V1a2s3a4/input.dat' write(lun,'(a)')'ln -s /nfs/gm2/data2/dlr10/g-2/mytest/efield_pitch_d1a2s3a4V1a2s3a4/bmad_esquad_grid.' ! write(lun,'(a)')'ln -s /nfs/gm2/data2/dlr10/g-2/mytest/efield_pitch__d1a2s3a4V1a2s3a4/INJ_TO_RING_phase_space.dat' write(lun,'(a)')'/nfs/acc/user/dlr/development9_linux/production/bin/g2_tracking > ${DESTINATION_DIR}/log.dat' close(lun) end do !horizontal 1 end do ! end do !voltage plate 4 ! end do !voltage plate 3 ! end do !voltage plate 2 ! end do !voltage plate 1 end do !vertical 4 end do end do ! horizontal 3 end do end do !vertical 2 end do ! end do ! p radial bield 99 continue end program create_lattice_config