https://github.com/CFMIP/COSPv1
Tip revision: 08f4cce0cde8431403f71ff8fa2c8b5ba7232e29 authored by dustinswales on 17 September 2018, 18:01:01 UTC
Merge pull request #4 from CFMIP/modisLidarBugFix
Merge pull request #4 from CFMIP/modisLidarBugFix
Tip revision: 08f4cce
scale_LUTs_io.f90
! 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