scale_luts_io.f90 Source File


This file depends on

sourcefile~~scale_luts_io.f90~~EfferentGraph sourcefile~scale_luts_io.f90 scale_luts_io.f90 sourcefile~radar_simulator_types.f90 radar_simulator_types.f90 sourcefile~scale_luts_io.f90->sourcefile~radar_simulator_types.f90

Files dependent on this one

sourcefile~~scale_luts_io.f90~~AfferentGraph sourcefile~scale_luts_io.f90 scale_luts_io.f90 sourcefile~mod_cosp_types.f90 mod_cosp_types.f90 sourcefile~mod_cosp_types.f90->sourcefile~scale_luts_io.f90 sourcefile~radar_simulator.f90~2 radar_simulator.f90 sourcefile~radar_simulator.f90~2->sourcefile~scale_luts_io.f90 sourcefile~mod_cosp_types.f90~2 mod_cosp_types.f90 sourcefile~mod_cosp_types.f90~2->sourcefile~scale_luts_io.f90 sourcefile~radar_simulator.f90 radar_simulator.f90 sourcefile~radar_simulator.f90->sourcefile~scale_luts_io.f90 sourcefile~mod_modis_sim.f90 mod_modis_sim.f90 sourcefile~mod_modis_sim.f90->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_modis_simulator.f90~2 mod_cosp_modis_simulator.f90 sourcefile~mod_cosp_modis_simulator.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_modis_simulator.f90~2->sourcefile~mod_modis_sim.f90 sourcefile~mod_modis_sim.f90~2 mod_modis_sim.f90 sourcefile~mod_modis_sim.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_radar.f90 mod_cosp_radar.f90 sourcefile~mod_cosp_radar.f90->sourcefile~mod_cosp_types.f90 sourcefile~cosp_read_otputkeys.f90 cosp_read_otputkeys.f90 sourcefile~cosp_read_otputkeys.f90->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_isccp_simulator.f90~2 mod_cosp_isccp_simulator.f90 sourcefile~mod_cosp_isccp_simulator.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~cosp_output_mod.f90 cosp_output_mod.F90 sourcefile~cosp_output_mod.f90->sourcefile~mod_cosp_types.f90 sourcefile~cosp_output_mod.f90->sourcefile~mod_modis_sim.f90 sourcefile~mod_cosp_modis_simulator.f90 mod_cosp_modis_simulator.f90 sourcefile~cosp_output_mod.f90->sourcefile~mod_cosp_modis_simulator.f90 sourcefile~mod_cosp_modis_simulator.f90->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_modis_simulator.f90->sourcefile~mod_modis_sim.f90 sourcefile~mod_cosp_misr_simulator.f90 mod_cosp_misr_simulator.f90 sourcefile~mod_cosp_misr_simulator.f90->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_lidar.f90 mod_cosp_lidar.f90 sourcefile~mod_cosp_lidar.f90->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_isccp_simulator.f90 mod_cosp_isccp_simulator.f90 sourcefile~mod_cosp_isccp_simulator.f90->sourcefile~mod_cosp_types.f90 sourcefile~cosp_read_otputkeys.f90~2 cosp_read_otputkeys.f90 sourcefile~cosp_read_otputkeys.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_misr_simulator.f90~2 mod_cosp_misr_simulator.f90 sourcefile~mod_cosp_misr_simulator.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_lidar.f90~2 mod_cosp_lidar.f90 sourcefile~mod_cosp_lidar.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~mod_cosp_radar.f90~2 mod_cosp_radar.f90 sourcefile~mod_cosp_radar.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~cosp_output_mod.f90~2 cosp_output_mod.F90 sourcefile~cosp_output_mod.f90~2->sourcefile~mod_cosp_types.f90 sourcefile~cosp_output_mod.f90~2->sourcefile~mod_modis_sim.f90 sourcefile~cosp_output_mod.f90~2->sourcefile~mod_cosp_modis_simulator.f90 sourcefile~cosp_output_write_mod.f90~2 cosp_output_write_mod.F90 sourcefile~cosp_output_write_mod.f90~2->sourcefile~cosp_output_mod.f90 sourcefile~cosp.f90 cosp.f90 sourcefile~cosp.f90->sourcefile~mod_modis_sim.f90 sourcefile~cosp_modis_interface.f90 cosp_modis_interface.f90 sourcefile~cosp.f90->sourcefile~cosp_modis_interface.f90 sourcefile~cosp_optics.f90~2 cosp_optics.f90 sourcefile~cosp_optics.f90~2->sourcefile~mod_modis_sim.f90 sourcefile~cosp_modis_interface.f90~2 cosp_modis_interface.f90 sourcefile~cosp_modis_interface.f90~2->sourcefile~mod_modis_sim.f90 sourcefile~cosp_optics.f90 cosp_optics.f90 sourcefile~cosp_optics.f90->sourcefile~mod_modis_sim.f90 sourcefile~cosp.f90~2 cosp.f90 sourcefile~cosp.f90~2->sourcefile~mod_modis_sim.f90 sourcefile~cosp.f90~2->sourcefile~cosp_modis_interface.f90 sourcefile~cosp_output_write_mod.f90 cosp_output_write_mod.F90 sourcefile~cosp_output_write_mod.f90->sourcefile~cosp_output_mod.f90 sourcefile~cosp_modis_interface.f90->sourcefile~mod_modis_sim.f90 sourcefile~lmdz_cosp_construct_destroy_mod.f90~2 lmdz_cosp_construct_destroy_mod.f90 sourcefile~lmdz_cosp_construct_destroy_mod.f90~2->sourcefile~cosp.f90 sourcefile~lmdz_cosp_subsample_and_optics_mod.f90~2 lmdz_cosp_subsample_and_optics_mod.f90 sourcefile~lmdz_cosp_subsample_and_optics_mod.f90~2->sourcefile~cosp.f90 sourcefile~lmdz_cosp_subsample_and_optics_mod.f90~2->sourcefile~cosp_optics.f90 sourcefile~lmdz_cosp_construct_destroy_mod.f90 lmdz_cosp_construct_destroy_mod.f90 sourcefile~lmdz_cosp_construct_destroy_mod.f90->sourcefile~cosp.f90 sourcefile~lmdz_cosp_interface.f90~2 lmdz_cosp_interface.f90 sourcefile~lmdz_cosp_interface.f90~2->sourcefile~cosp.f90 sourcefile~lmdz_cosp_interface.f90~2->sourcefile~lmdz_cosp_construct_destroy_mod.f90 sourcefile~lmdz_cosp_output_write_mod.f90 lmdz_cosp_output_write_mod.f90 sourcefile~lmdz_cosp_interface.f90~2->sourcefile~lmdz_cosp_output_write_mod.f90 sourcefile~lmdz_cosp_subsample_and_optics_mod.f90 lmdz_cosp_subsample_and_optics_mod.f90 sourcefile~lmdz_cosp_interface.f90~2->sourcefile~lmdz_cosp_subsample_and_optics_mod.f90 sourcefile~lmdz_cosp_output_write_mod.f90->sourcefile~cosp.f90 sourcefile~lmdz_cosp_subsample_and_optics_mod.f90->sourcefile~cosp.f90 sourcefile~lmdz_cosp_subsample_and_optics_mod.f90->sourcefile~cosp_optics.f90 sourcefile~lmdz_cosp_interface.f90 lmdz_cosp_interface.f90 sourcefile~lmdz_cosp_interface.f90->sourcefile~cosp.f90 sourcefile~lmdz_cosp_interface.f90->sourcefile~lmdz_cosp_construct_destroy_mod.f90 sourcefile~lmdz_cosp_interface.f90->sourcefile~lmdz_cosp_output_write_mod.f90 sourcefile~lmdz_cosp_interface.f90->sourcefile~lmdz_cosp_subsample_and_optics_mod.f90 sourcefile~lmdz_cosp_output_write_mod.f90~2 lmdz_cosp_output_write_mod.f90 sourcefile~lmdz_cosp_output_write_mod.f90~2->sourcefile~cosp.f90

Contents

Source Code


Source Code

  ! 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