! run in efield_pitch dierctory to compile last line in compile_spin_data.dat files in directories ep_* program compile_all_efield_pitch use precision_def use sim_utils implicit none integer lun, reason logical itexists character*300 dir_file, new_string, string, dir string='ls -d */ > out.dat' call execute_command_line(string) lun=lunget() open(unit=lun,file='out.dat', status='old') do while(.true.) read(lun, '(a)', IOSTAT = reason)new_string if(reason < 0)exit if( index(new_string,'ep_')==0 .and. index(new_string,'config')==0 .and. index(new_string,'ref')==0)cycle dir=trim(new_string) dir_file = trim(dir)//'summary_efield_pitch_35us.dat' print '(a)',dir_file inquire (file=dir_file, exist=itexists) if (.not.itexists) cycle call get_data_from_summary(dir_file) end do end subroutine get_data_from_summary(dir_file) use precision_def use sim_utils implicit none integer, save :: lun, lun1 integer ix, word integer reason character*300 dir_file character*470 string logical first/.true./ real(rp) Cp_avg_all, Ce_avg_all, Cp_standard, Ce_standard,CCp_avg_all, CCe_avg_all, CCe_correct_avg_all, qx, qy, y_avg_all, x_avg_all, x2_avg_all, time_avg, y_last_avg_all real(rp) qy_fft, qx_fft if(first)then lun1 =lunget() open (unit=lun1, file = 'all_efield_pitch.dat') write(lun1,'(a50,18A16)')'directory', 'Cp_avg_all', 'Ce_avg_all', 'Cp_standard', 'Ce_standard','CCp_avg_all', 'CCe_avg_all','CCe_ced_avg_all','Qx','Qy','','', '','qy_fft','qx_fft','index-qx','index-qy','time_avg','y_last_avg_all' first = .false. endif lun=lunget() open(unit=lun, file = trim(dir_file) ) string = ' ' do while(.true.) read(lun,'(a)', IOSTAT = reason)string if(reason == 0)cycle if(index(string,'file')/=0)return ix=0 word=0 do while(.true.) call string_trim(string(ix+1:), string, ix) if(ix == 0)exit word =word + 1 if(word == 8)then read(string(1:ix),*)Cp_avg_all elseif(word == 10)then read(string(1:ix),*)Ce_avg_all elseif(word == 14)then read(string(1:ix),*)x2_avg_all elseif(word == 15)then read(string(1:ix),*)Ce_standard elseif(word == 16)then read(string(1:ix),*)Cp_standard elseif(word == 17)then read(string(1:ix),*)CCe_avg_all elseif(word == 18)then read(string(1:ix),*)CCp_avg_all elseif(word == 19)then read(string(1:ix),*)CCe_correct_avg_all elseif(word == 20)then read(string(1:ix),*)qx elseif(word == 21)then read(string(1:ix),*)qy elseif(word == 22)then read(string(1:ix),*)y_avg_all elseif(word == 23)then read(string(1:ix),*)x_avg_all elseif(word == 24)then read(string(1:ix),*)qy_fft elseif(word == 25)then read(string(1:ix),*)qx_fft elseif(word == 28)then read(string(1:ix),*)time_avg elseif(word == 29)then read(string(1:ix),*)y_last_avg_all endif end do if(reason <0) exit end do close(lun) write(lun1,'(a50,18es16.6)')dir_file, Cp_avg_all, Ce_avg_all, Cp_standard, Ce_standard,CCp_avg_all, CCe_avg_all, CCe_correct_avg_all, Qx, Qy, y_avg_all, x2_avg_all, x_avg_all, qy_fft, qx_fft, qy_fft**2, 1.-(1-qx_fft)**2, time_avg, y_last_avg_all return end subroutine get_data_from_summary