54 PUBLIC :: odas_taucoeff_type
64 '$Id: ODAS_TauCoeff.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 71 TYPE(odas_taucoeff_type),
SAVE,
ALLOCATABLE,
TARGET ::
tc(:)
179 File_Path , & ! Optional input
180 Quiet , & ! Optional input
181 Process_ID , & ! Optional input
182 Output_Process_ID, & ! Optional input
184 result( error_status )
186 CHARACTER(*),
DIMENSION(:),
OPTIONAL,
INTENT(IN) :: sensor_id
187 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: file_path
188 INTEGER,
OPTIONAL,
INTENT(IN) :: quiet
189 INTEGER,
OPTIONAL,
INTENT(IN) :: process_id
190 INTEGER,
OPTIONAL,
INTENT(IN) :: output_process_id
191 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
193 INTEGER :: error_status
195 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Load_TauCoeff' 197 CHARACTER(256) :: message
198 CHARACTER(256) :: process_id_tag
199 CHARACTER(256),
DIMENSION(MAX_N_SENSORS) :: taucoeff_file
200 INTEGER :: allocate_status
201 INTEGER :: n, n_sensors
207 IF (
PRESENT(process_id) )
THEN 208 WRITE( process_id_tag,
'("; MPI Process ID: ",i0)' ) process_id
214 IF (
PRESENT(sensor_id) )
THEN 216 n_sensors =
SIZE(sensor_id)
219 WRITE(message,
'("Too many sensors, ",i0," specified. Maximum of ",i0," sensors allowed.")') &
222 trim(message)//trim(process_id_tag), &
224 message_log=message_log)
228 taucoeff_file(n) = trim(adjustl(sensor_id(n)))//
'.TauCoeff.bin' 233 taucoeff_file(1) =
'TauCoeff.bin' 237 IF (
PRESENT(file_path) )
THEN 239 taucoeff_file(n) = trim(adjustl(file_path))//trim(taucoeff_file(n))
244 ALLOCATE(
tc(n_sensors), stat=allocate_status)
245 IF( allocate_status /= 0 )
THEN 246 WRITE(message,
'("TauCoeff structure array allocation failed. STAT=",i0)') allocate_status
249 trim(message)//trim(process_id_tag), &
251 message_log = message_log )
257 error_status = read_taucoeff_binary( trim(taucoeff_file(n)) , &
260 process_id =process_id , &
261 output_process_id=output_process_id, &
262 message_log =message_log )
263 IF ( error_status /=
success )
THEN 264 WRITE(message,
'("Error reading TauCoeff file #",i0,", ",a)') &
265 n, trim(taucoeff_file(n))
267 trim(message)//trim(process_id_tag), &
269 message_log=message_log )
329 result( error_status )
331 INTEGER,
OPTIONAL,
INTENT(IN) :: process_id
332 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
334 INTEGER :: error_status
336 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Destroy_TauCoeff' 338 CHARACTER(256) :: message
339 CHARACTER(256) :: process_id_tag
340 INTEGER :: n, destroy_status, allocate_status
346 IF (
PRESENT( process_id ) )
THEN 347 WRITE( process_id_tag,
'("; MPI Process ID: ",i0)' ) process_id
354 destroy_status = odas_destroy_taucoeff(
tc(n), &
355 message_log=message_log )
356 IF ( destroy_status /=
success )
THEN 358 WRITE(message,
'("Error destroying TauCoeff structure array element #",i0)') n
360 trim(message)//trim(process_id_tag), &
362 message_log=message_log )
368 DEALLOCATE(
tc, stat=allocate_status)
369 IF( allocate_status /= 0 )
THEN 370 WRITE(message,
'("RTTOV TC structure deallocation failed. STAT=",i0)') allocate_status
373 trim(message)//trim(process_id_tag), &
375 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 load_taucoeff(Sensor_ID, File_Path, Quiet, Process_ID, Output_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_odas(ODAS, No_Clear, RCS_Id, Message_Log)
subroutine, public crtm_set_max_nchannels(Value)
type(odas_taucoeff_type), dimension(:), allocatable, target, save, public tc
integer function, public destroy_taucoeff(Process_ID, Message_Log)
character(*), parameter, private module_rcs_id
integer, parameter, public success
integer function, public read_odas_binary(Filename, ODAS, Quiet, Process_ID, Output_Process_ID, RCS_Id, Message_Log)
integer, parameter, public max_n_sensors