38 PUBLIC ::
ASSIGNMENT(=)
39 PUBLIC ::
OPERATOR(.EQ.)
49 INTERFACE ASSIGNMENT(=)
53 INTERFACE OPERATOR(.EQ.)
63 '$Id: TauCoeff_Define.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 65 INTEGER ,
PARAMETER ::
ml = 256
67 INTEGER ,
PARAMETER ::
sl = 20
75 INTEGER :: n_sensors = 0
78 INTEGER :: n_odssu = 0
79 INTEGER :: n_odzeeman = 0
81 INTEGER,
ALLOCATABLE :: algorithm_id(:)
82 INTEGER,
ALLOCATABLE :: sensor_index(:)
83 INTEGER,
ALLOCATABLE :: sensor_loindex(:)
85 INTEGER,
ALLOCATABLE :: zsensor_loindex(:)
88 CHARACTER(SL),
ALLOCATABLE :: sensor_id(:)
89 INTEGER,
ALLOCATABLE :: wmo_satellite_id(:)
90 INTEGER,
ALLOCATABLE :: wmo_sensor_id(:)
91 INTEGER,
ALLOCATABLE :: sensor_type(:)
142 LOGICAL :: is_associated
146 ALLOCATED(self%Algorithm_ID ) .OR. &
147 ALLOCATED(self%Sensor_Index ) .OR. &
148 ALLOCATED(self%Sensor_LoIndex) .OR. &
149 ASSOCIATED(self%ODAS ) .OR. &
150 ASSOCIATED(self%ODPS ) .OR. &
151 ASSOCIATED(self%ODSSU ) .OR. &
152 ASSOCIATED(self%ODZeeman )
195 INTEGER,
INTENT(OUT) :: err_stat
197 CHARACTER(*),
PARAMETER :: routine_name =
'TauCoeff_Destroy' 200 INTEGER :: alloc_stat
211 DEALLOCATE( self%Algorithm_ID , &
212 self%Sensor_Index , &
213 self%Sensor_LoIndex , &
214 self%ZSensor_LoIndex , &
216 self%WMO_Satellite_ID, &
217 self%WMO_Sensor_ID , &
220 IF ( alloc_stat /= 0 )
THEN 222 WRITE( msg,
'( "Error deallocating. STAT = ", i0 )' ) alloc_stat
227 NULLIFY( self%ODAS, self%ODPS, self%ODSSU, self%ODZeeman )
279 INTEGER,
INTENT(IN) :: n_sensors
280 INTEGER,
INTENT(OUT) :: err_stat
282 CHARACTER(*),
PARAMETER :: routine_name =
'TauCoeff_Create' 285 INTEGER :: alloc_stat
292 IF ( err_stat /=
success )
THEN 293 msg =
'Error destroying TauCoeff prior to allocation.' 298 IF ( n_sensors < 1 )
THEN 300 msg =
'n_Sensors must be > 0.' 307 ALLOCATE( self%Algorithm_ID( n_sensors ) , &
308 self%Sensor_Index( n_sensors ) , &
309 self%Sensor_LoIndex( n_sensors ) , &
310 self%ZSensor_LoIndex( n_sensors ) , &
311 self%Sensor_ID( n_sensors ) , &
312 self%WMO_Satellite_ID( n_sensors ), &
313 self%WMO_Sensor_ID( n_sensors ) , &
314 self%Sensor_Type( n_sensors ) , &
316 IF ( alloc_stat /= 0 )
THEN 318 WRITE( msg,
'("Error allocating TauCoeff. STAT = ",i0)' ) alloc_stat
326 self%n_Sensors = n_sensors
328 self%Algorithm_ID = 0
329 self%Sensor_Index = 0
330 self%Sensor_LoIndex = 0
331 self%ZSensor_LoIndex = 0
333 self%WMO_Satellite_ID = 0
334 self%WMO_Sensor_ID = 0
337 NULLIFY( self%ODAS, self%ODPS, self%ODSSU, self%ODZeeman )
371 CHARACTER(*),
INTENT(OUT) :: info
373 INTEGER,
PARAMETER :: carriage_return = 13
374 INTEGER,
PARAMETER :: linefeed = 10
376 CHARACTER(2000) :: long_string
379 WRITE( long_string,
'( a, 2x, & 380 &"N_SENSORS=",i2,2x,& 384 &"N_ODZeeman=",i2 )' ) &
385 achar(carriage_return)//achar(linefeed), &
394 info = long_string(1:
min( len(info), len_trim( long_string ) ))
436 TYPE(TauCoeff_type),
INTENT(IN OUT) :: copy
437 TYPE(TauCoeff_type),
INTENT(IN) :: original
439 CHARACTER(*),
PARAMETER :: ROUTINE_NAME =
'TauCoeff_Assign' 445 IF ( err_stat /=
success )
THEN 446 CALL display_message( routine_name,
'Output TauCoeff re-init failed', err_stat )
455 IF ( err_stat /=
success )
THEN 456 CALL display_message( routine_name,
'Output TauCoeff allocation failed', err_stat )
461 copy%Algorithm_ID = original%Algorithm_ID
462 copy%Sensor_Index = original%Sensor_Index
463 copy%Sensor_LoIndex = original%Sensor_LoIndex
464 copy%ZSensor_LoIndex = original%ZSensor_LoIndex
465 copy%Sensor_ID = original%Sensor_ID
466 copy%WMO_Satellite_ID = original%WMO_Satellite_ID
467 copy%WMO_Sensor_ID = original%WMO_Sensor_ID
468 copy%Sensor_Type = original%Sensor_Type
471 IF (
ASSOCIATED(original%ODAS) ) copy%ODAS => original%ODAS
472 IF (
ASSOCIATED(original%ODPS) ) copy%ODPS => original%ODPS
473 IF (
ASSOCIATED(original%ODSSU) ) copy%ODSSU => original%ODSSU
474 IF (
ASSOCIATED(original%ODZeeman) ) copy%ODZeeman => original%ODZeeman
521 IF ( (x%n_Sensors /= y%n_Sensors) .OR. &
522 (x%n_ODAS /= y%n_ODAS ) .OR. &
523 (x%n_ODPS /= y%n_ODPS ) .OR. &
524 (x%n_ODSSU /= y%n_ODSSU ) .OR. &
525 (x%n_ODZeeman /= y%n_ODZeeman ) )
RETURN 528 IF ( any(x%Algorithm_ID /= y%Algorithm_ID ) .OR. &
529 any(x%Sensor_Index /= y%Sensor_Index ) .OR. &
530 any(x%Sensor_LoIndex /= y%Sensor_LoIndex) .OR. &
531 any(x%ZSensor_LoIndex /= y%ZSensor_LoIndex) .OR. &
532 any(x%Sensor_ID /= y%Sensor_ID) .OR. &
533 any(x%WMO_Satellite_ID /= y%WMO_Satellite_ID) .OR. &
534 any(x%WMO_Sensor_ID /= y%WMO_Sensor_ID) .OR. &
535 any(x%Sensor_Type /= y%Sensor_Type) )
RETURN integer, parameter, public failure
elemental logical function taucoeff_equal(x, y)
subroutine, public taucoeff_create(self, n_Sensors, err_stat)
integer, parameter, public long
elemental logical function, public taucoeff_associated(self)
subroutine, public taucoeff_destroy(self, err_stat)
integer, parameter, public double
character(*), parameter module_rcs_id
recursive subroutine, public display_message(Routine_Name, Message, Error_State, Message_Log)
subroutine, public taucoeff_info(self, info)
subroutine taucoeff_assign(copy, original)
integer, parameter, public success