53 PUBLIC :: odssu_taucoeff_type
63 '$Id: ODSSU_TauCoeff.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 70 TYPE(odssu_taucoeff_type),
SAVE,
ALLOCATABLE,
TARGET ::
tc(:)
178 File_Path , & ! Optional input
179 Quiet , & ! Optional input
180 Process_ID , & ! Optional input
181 Output_Process_ID, & ! Optional input
183 result( error_status )
185 CHARACTER(*),
DIMENSION(:),
OPTIONAL,
INTENT(IN) :: sensor_id
186 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: file_path
187 INTEGER,
OPTIONAL,
INTENT(IN) :: quiet
188 INTEGER,
OPTIONAL,
INTENT(IN) :: process_id
189 INTEGER,
OPTIONAL,
INTENT(IN) :: output_process_id
190 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
192 INTEGER :: error_status
194 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Load_TauCoeff' 196 CHARACTER(256) :: message
197 CHARACTER(256) :: process_id_tag
198 CHARACTER(256),
DIMENSION(MAX_N_SENSORS) :: taucoeff_file
199 INTEGER :: allocate_status
200 INTEGER :: n, n_sensors
206 IF (
PRESENT(process_id) )
THEN 207 WRITE( process_id_tag,
'("; MPI Process ID: ",i0)' ) process_id
213 IF (
PRESENT(sensor_id) )
THEN 215 n_sensors =
SIZE(sensor_id)
218 WRITE(message,
'("Too many sensors, ",i0," specified. Maximum of ",i0," sensors allowed.")') &
221 trim(message)//trim(process_id_tag), &
223 message_log=message_log)
227 taucoeff_file(n) = trim(adjustl(sensor_id(n)))//
'.TauCoeff.bin' 232 taucoeff_file(1) =
'TauCoeff.bin' 236 IF (
PRESENT(file_path) )
THEN 238 taucoeff_file(n) = trim(adjustl(file_path))//trim(taucoeff_file(n))
243 ALLOCATE(
tc(n_sensors), stat=allocate_status)
244 IF( allocate_status /= 0 )
THEN 245 WRITE(message,
'("TauCoeff structure array allocation failed. STAT=",i0)') allocate_status
248 trim(message)//trim(process_id_tag), &
250 message_log = message_log )
256 error_status = read_taucoeff_binary( trim(taucoeff_file(n)) , &
259 process_id =process_id , &
260 output_process_id=output_process_id, &
261 message_log =message_log )
262 IF ( error_status /=
success )
THEN 263 WRITE(message,
'("Error reading TauCoeff file #",i0,", ",a)') &
264 n, trim(taucoeff_file(n))
266 trim(message)//trim(process_id_tag), &
268 message_log=message_log )
328 result( error_status )
330 INTEGER,
OPTIONAL,
INTENT(IN) :: process_id
331 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
333 INTEGER :: error_status
335 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Destroy_TauCoeff' 337 CHARACTER(256) :: message
338 CHARACTER(256) :: process_id_tag
339 INTEGER :: n, destroy_status, allocate_status
345 IF (
PRESENT( process_id ) )
THEN 346 WRITE( process_id_tag,
'("; MPI Process ID: ",i0)' ) process_id
353 destroy_status = odssu_destroy_taucoeff(
tc(n), &
354 message_log=message_log )
355 IF ( destroy_status /=
success )
THEN 357 WRITE(message,
'("Error destroying TauCoeff structure array element #",i0)') n
359 trim(message)//trim(process_id_tag), &
361 message_log=message_log )
367 DEALLOCATE(
tc, stat=allocate_status)
368 IF( allocate_status /= 0 )
THEN 369 WRITE(message,
'("RTTOV TC structure deallocation failed. STAT=",i0)') allocate_status
372 trim(message)//trim(process_id_tag), &
374 message_log=message_log)
integer, parameter, public failure
integer, parameter, public warning
integer function, public crtm_get_max_nchannels()
subroutine, public crtm_reset_max_nchannels()
integer function, public read_odssu_binary(Filename, ODSSU, Quiet, Process_ID, Output_Process_ID, RCS_Id, Message_Log)
integer function, public load_taucoeff(Sensor_ID, File_Path, Quiet, Process_ID, Output_Process_ID, Message_Log)
integer function, public destroy_taucoeff(Process_ID, Message_Log)
logical function, public crtm_isset_max_nchannels()
recursive subroutine, public display_message(Routine_Name, Message, Error_State, Message_Log)
integer function, public destroy_odssu(ODSSU, No_Clear, RCS_Id, Message_Log)
subroutine, public crtm_set_max_nchannels(Value)
character(*), parameter, private module_rcs_id
type(odssu_taucoeff_type), dimension(:), allocatable, target, save, public tc
integer, parameter, public success
integer, parameter, public max_n_sensors