55 '$Id: ODZeeman_TauCoeff.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 62 TYPE(odps_taucoeff_type),
SAVE,
ALLOCATABLE,
TARGET ::
tc(:)
161 File_Path , & ! Optional input
162 Quiet , & ! Optional input
163 Process_ID , & ! Optional input
164 Output_Process_ID, & ! Optional input
166 result( error_status )
168 CHARACTER(*),
DIMENSION(:),
INTENT(IN) :: filename
169 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: file_path
170 INTEGER,
OPTIONAL,
INTENT(IN) :: quiet
171 INTEGER,
OPTIONAL,
INTENT(IN) :: process_id
172 INTEGER,
OPTIONAL,
INTENT(IN) :: output_process_id
173 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
175 INTEGER :: error_status
177 CHARACTER(*),
PARAMETER :: routine_name =
'Load_TauCoeff' 179 CHARACTER(256) :: message
180 CHARACTER(256) :: process_id_tag
181 CHARACTER(256) :: taucoeff_file
182 INTEGER :: allocate_status
183 INTEGER :: n, n_sensors
189 IF (
PRESENT(process_id) )
THEN 190 WRITE( process_id_tag,
'("; MPI Process ID: ",i0)' ) process_id
195 n_sensors =
SIZE(filename)
198 ALLOCATE(
tc(n_sensors), stat=allocate_status)
199 IF( allocate_status /= 0 )
THEN 200 WRITE(message,
'("TauCoeff structure array allocation failed. STAT=",i0)') allocate_status
203 trim(message)//trim(process_id_tag), &
205 message_log = message_log )
213 IF (
PRESENT(file_path) )
THEN 214 taucoeff_file = trim(adjustl(file_path))//trim(filename(n))
216 taucoeff_file = trim(filename(n))
219 error_status = read_taucoeff_binary( trim(taucoeff_file) , &
222 process_id =process_id , &
223 output_process_id=output_process_id, &
224 message_log =message_log )
225 IF ( error_status /=
success )
THEN 226 WRITE(message,
'("Error reading TauCoeff file #",i0,", ",a)') &
227 n, trim(taucoeff_file)
229 trim(message)//trim(process_id_tag), &
231 message_log=message_log )
290 result( error_status )
292 INTEGER,
OPTIONAL,
INTENT(IN) :: process_id
293 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
295 INTEGER :: error_status
297 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Destroy_TauCoeff' 299 CHARACTER(256) :: message
300 CHARACTER(256) :: process_id_tag
301 INTEGER :: n, destroy_status, allocate_status
307 IF (
PRESENT( process_id ) )
THEN 308 WRITE( process_id_tag,
'("; MPI Process ID: ",i0)' ) process_id
315 destroy_status = odps_destroy_taucoeff(
tc(n), &
316 message_log=message_log )
317 IF ( destroy_status /=
success )
THEN 319 WRITE(message,
'("Error destroying TauCoeff structure array element #",i0)') n
321 trim(message)//trim(process_id_tag), &
323 message_log=message_log )
329 DEALLOCATE(
tc, stat=allocate_status)
330 IF( allocate_status /= 0 )
THEN 331 WRITE(message,
'("RTTOV TC structure deallocation failed. STAT=",i0)') allocate_status
334 trim(message)//trim(process_id_tag), &
336 message_log=message_log)
integer function, public destroy_taucoeff(Process_ID, Message_Log)
integer, parameter, public failure
integer, parameter, public warning
integer function, public destroy_odps(ODPS, No_Clear, RCS_Id, Message_Log)
integer function, public load_taucoeff(FileName, File_Path, Quiet, Process_ID, Output_Process_ID, Message_Log)
character(*), parameter, private module_rcs_id
integer function, public read_odps_binary(Filename, ODPS, Quiet, Process_ID, Output_Process_ID, RCS_Id, Message_Log)
recursive subroutine, public display_message(Routine_Name, Message, Error_State, Message_Log)
integer, parameter, public success
type(odps_taucoeff_type), dimension(:), allocatable, target, save, public tc