! scale_LUT_io: Contains subroutines to load and save scaling Look Up Tables (LUTs) to a file ! June 2010 Written by Roj Marchand module scale_LUTs_io implicit none contains subroutine load_scale_LUTs(hp) use radar_simulator_types type(class_param), intent(inout) :: hp logical :: LUT_file_exists integer :: i,j,k,ind ! load scale LUT from file inquire(file=trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat', & exist=LUT_file_exists) if(.not.LUT_file_exists) then write(*,*) '*************************************************' write(*,*) 'Warning: Could NOT FIND radar LUT file: ', & trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat' write(*,*) 'Will calculated LUT values as needed' write(*,*) '*************************************************' return else OPEN(unit=12,file=trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat',& form='unformatted', & err= 89, & access='DIRECT',& recl=28) write(*,*) 'Loading radar LUT file: ', & trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat' DO i=1,maxhclass DO j=1,mt_ntt DO k=1,nRe_types ind = i+(j-1)*maxhclass+(k-1)*(nRe_types*mt_ntt) read(12,rec=ind) hp%Z_scale_flag(i,j,k), & hp%Ze_scaled(i,j,k), & hp%Zr_scaled(i,j,k), & hp%kr_scaled(i,j,k) ! if(ind==1482329) then ! write (*,*) ind, hp%Z_scale_flag(i,j,k), & ! hp%Ze_scaled(i,j,k), & ! hp%Zr_scaled(i,j,k), & ! hp%kr_scaled(i,j,k) !endif enddo enddo enddo close(unit=12) return endif 89 write(*,*) 'Error: Found but could NOT READ radar LUT file: ', & trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat' stop end subroutine load_scale_LUTs subroutine save_scale_LUTs(hp) use radar_simulator_types type(class_param), intent(inout) :: hp logical :: LUT_file_exists integer :: i,j,k,ind inquire(file=trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat', & exist=LUT_file_exists) OPEN(unit=12,file=trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat',& form='unformatted', & err= 99, & access='DIRECT',& recl=28) write(*,*) 'Creating or Updating radar LUT file: ', & trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat' DO i=1,maxhclass DO j=1,mt_ntt DO k=1,nRe_types ind = i+(j-1)*maxhclass+(k-1)*(nRe_types*mt_ntt) if(.not.LUT_file_exists .or. hp%Z_scale_added_flag(i,j,k)) then hp%Z_scale_added_flag(i,j,k)=.false. write(12,rec=ind) hp%Z_scale_flag(i,j,k), & hp%Ze_scaled(i,j,k), & hp%Zr_scaled(i,j,k), & hp%kr_scaled(i,j,k) ! 1482329 T 0.170626345026495 0.00000000000000 1.827402935860823E-003 !if(ind==1482329) then ! write (*,*) ind, hp%Z_scale_flag(i,j,k), & ! hp%Ze_scaled(i,j,k), & ! hp%Zr_scaled(i,j,k), & ! hp%kr_scaled(i,j,k) !endif endif enddo enddo enddo close(unit=12) return 99 write(*,*) 'Error: Unable to create/update radar LUT file: ', & trim(hp%scale_LUT_file_name) // '_radar_Z_scale_LUT.dat' return end subroutine save_scale_LUTs end module scale_LUTs_io