SUBROUTINE SENSORS #if defined (DOC) * ***s/r SENSORS : Initialisation of the RTTOV-7 platform, satellite * and instrument ID's. Also set burp to RTTOV-7 channel * mapping offset. * *Author : J. Halle *CMDA/SMC May 2002 * *Revision 001: J. Halle *CMDA/SMC Dec 2003 * - ajouter les satellites TERRA et AQUA. * * 002: J. Halle *CMDA/SMC Jul 2005 * - ajouter le satellite NOAA-18. * * 003: J. Halle *CMDA/SMC Nov 2004 * - ajouter les satellites et instruments supportes par RTTOV-8. * * 004: J. Halle *CMDA/SMC Jul 2007 * - ajouter METOP. * * 005: R. Sarrazin CMDA April 2008 * - MSG nosathi=2 offset=3 * - GOES nosathi=13 * * 006: C. Cote, mars 2009 * - ajouter le satellite NOAA-19. * * ------------------- ** Purpose: to verify and transfom the sensor information contained in the * NAMTOV namelist into the variables required by RTTTOV-7: * platform, satellite and instrument ID's. * *Variables: * i : NSENSORS : number of sensors * i : CSATID : satellite ID (e.g. 'NOAA15') * i : CINSTRUMENTID : instrument ID (e.g. 'AMSUA') * o : PLATFORM : RTTOV-7 platform ID numbers (e.g. 1 for NOAA) * o : SATELLITE : RTTOV-7 satellite ID numbers (e.g. 15) * o : INSTRUMENT : RTTOV-7 instrument ID numbers (e.g. 3 for AMSUA) * o : CHANOFFSET : BURP to RTTOV-7 channel mapping offset * #endif IMPLICIT NONE *implicits #include "partov.cdk"
#include "comtov.cdk"
#include "comlun.cdk"
* INTEGER J, K, IPOS1, IPOS2 INTEGER NUMEROSAT, IERR, KINDEX * INTEGER MXPLATFORM, MXINSTRUMENT PARAMETER (MXPLATFORM = 16) PARAMETER (MXINSTRUMENT = 29) * CHARACTER*15 CPLATFORM (MXPLATFORM ) CHARACTER*15 CINSTRUMENT(MXINSTRUMENT) CHARACTER*15 TEMPOCSATID * INTEGER NOPLATFORM(MXPLATFORM) INTEGER NOSATLO (MXPLATFORM) INTEGER NOSATHI (MXPLATFORM) INTEGER NOINSTRUMENT(MXINSTRUMENT) INTEGER NOCHANLO (MXINSTRUMENT) INTEGER NOCHANHI (MXINSTRUMENT) INTEGER IOFFSET1D (MXINSTRUMENT) INTEGER IOFFSET1B (MXINSTRUMENT) * ** Tables for Platforms and Satellites ** ----------------------------------- * DATA CPLATFORM / 'NOAA', 'DMSP', 'METEOSAT', 'GOES', & 'GMS', 'FY2', 'TRMM', 'ERS', & 'EOS', 'METOP-', 'ENVISAT', 'MSG', & 'FY1', 'ADEOS', 'MTSAT','CORIOLIS' / * DATA NOPLATFORM / 1, 2, 3, 4, & 5, 6, 7, 8, & 9, 10, 11, 12, & 13, 14, 15, 16 / * DATA NOSATLO / 1, 8, 5, 8, & 5, 2, 1, 1, & 1, 1, 1, 1, & 3, 1, 1, 1 / * DATA NOSATHI / 19, 16, 7, 13, & 5, 2, 1, 2, & 2, 3, 1, 2, & 4, 2, 1, 1 / * ** Tables for Instruments and Channels ** ----------------------------------- * DATA CINSTRUMENT / 'HIRS', 'MSU', 'SSU', & 'AMSUA', 'AMSUB', 'AVHRR', & 'SSMI', 'VTPR1', 'VTPR2', & 'TMI', 'SSMIS', 'AIRS', & 'HSB', 'MODIS', 'ATSR', & 'MHS', 'IASI', 'AMSR', & 'MVIRI', 'SEVIRI', 'GOESIMAGER', & 'GOESSOUNDER', 'GMSMTSAT', 'FY2VISSR', & 'FY1MVISR', 'CRIS', 'CMISS', & 'VIIRS', 'WINDSAT' / * DATA NOINSTRUMENT / 0, 1, 2, & 3, 4, 5, & 6, 7, 8, & 9, 10, 11, & 12, 13, 14, & 15, 16, 17, & 20, 21, 22, & 23, 24, 25, & 26, 27, 28, & 29, 30 / * DATA NOCHANLO / 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1, 1, & 1, 1 / * DATA NOCHANHI / 19, 4, 3, & 15, 5, 3, & 4, 8, 8, & 9, 24, 2378, & 4, 17, 3, & 5, 8461, 7, & 2, 8, 4, & 18, 4, 2, & 3, 1, 1, & 1, 5 / * DATA IOFFSET1D / 0, 20, 24, & 20, 35, 0, & 0, 0, 0, & 0, 0, 0, & 0, 0, 0, & 0, 0, 0, & 0, 3, 18, & 0, 0, 0, & 0, 18, 0, & 0, 0 / * DATA IOFFSET1B / 0, 20, 24, & 27, 42, 0, & 0, 0, 0, & 0, 0, 0, & 0, 0, 0, & 42, 0, 0, & 0, 3, 18, & 0, 0, 0, & 0, 18, 0, & 0, 0 / C C* . 1.0 Go through sensors and set RTTOV-7 variables C . -------------------------------------------- 100 CONTINUE C DO J=1, NSENSORS PLATFORM (J) = -1 SATELLITE (J) = -1 INSTRUMENT(J) = -1 CHANOFFSET(J) = -1 ENDDO C C* . 1.1 Set platforms and satellites C . ---------------------------- C C** N.B.: Special cases for satellites TERRA and AQUA. C** For consistency with the RTTOV-7 nomenclature, rename: C** TERRA to EOS1 C** AQUA to EOS2 C DO J = 1, NSENSORS IF ( CSATID(J) .EQ. 'TERRA' ) THEN TEMPOCSATID = 'EOS1' ELSEIF ( CSATID(J) .EQ. 'AQUA' ) THEN TEMPOCSATID = 'EOS2' ELSE TEMPOCSATID = CSATID(J) ENDIF KINDEX = 0 DO K = 1, MXPLATFORM IPOS1=LEN_TRIM(CPLATFORM(K)) IPOS2 = INDEX(TEMPOCSATID,CPLATFORM(K)(1:IPOS1)) IF ( IPOS2 .EQ. 1 ) THEN PLATFORM(J) = NOPLATFORM(K) KINDEX = K ENDIF ENDDO IF ( PLATFORM(J) .LT. 0 ) THEN WRITE(NULOUT,FMT=9132) TEMPOCSATID 9132 FORMAT(' SENSORS: Satellite ',A,' not supported.') CALL ABORT3D(NULOUT,'SENSORS ') ELSE IPOS1=LEN_TRIM(CPLATFORM(KINDEX)) IPOS2=LEN_TRIM(TEMPOCSATID) READ(TEMPOCSATID(IPOS1+1:IPOS2),*,IOSTAT=IERR) NUMEROSAT IF ( IERR .NE. 0 .OR. & NUMEROSAT .LT. NOSATLO(KINDEX) .OR. & NUMEROSAT .GT. NOSATHI(KINDEX) ) THEN WRITE(NULOUT,FMT=9132) TEMPOCSATID CALL ABORT3D(NULOUT,'SENSORS ') ELSE SATELLITE(J) = NUMEROSAT ENDIF ENDIF ENDDO C C* . 1.2 Set instruments, C . also set channel offset, which is in fact a channel mapping between C . the channel number in BURP files and the channel number used in C . RTTOV-7. This mapping differs for level1d and level1b burp datasets. C . -------------------------------------------------------------------- C DO J = 1, NSENSORS KINDEX = 0 DO K = 1, MXINSTRUMENT IPOS1=LEN_TRIM(CINSTRUMENT(K)) IPOS2 = INDEX(CINSTRUMENTID(J),CINSTRUMENT(K)(1:IPOS1)) IF ( IPOS2 .EQ. 1 ) THEN KINDEX = K INSTRUMENT(J) = NOINSTRUMENT(KINDEX) IF (LEVEL1B) THEN CHANOFFSET(J) = IOFFSET1B(KINDEX) ELSE CHANOFFSET(J) = IOFFSET1D(KINDEX) ENDIF ENDIF ENDDO IF ( INSTRUMENT(J) .LT. 0 ) THEN WRITE(NULOUT,FMT=9133) CINSTRUMENTID(J) 9133 FORMAT(' SENSORS: INSTRUMENT ',A,' not supported.') CALL ABORT3D(NULOUT,'SENSORS ') ENDIF ENDDO C C* . 1.3 Print the RTTOV-7 related variables C . ----------------------------------- C 130 CONTINUE WRITE(NULOUT,FMT=9140) WRITE(NULOUT,FMT=9143) NSENSORS WRITE(NULOUT,FMT=9145) (PLATFORM(J), J=1,NSENSORS) WRITE(NULOUT,FMT=9146) (SATELLITE(J), J=1,NSENSORS) WRITE(NULOUT,FMT=9147) (INSTRUMENT(J), J=1,NSENSORS) WRITE(NULOUT,FMT=9148) (CHANOFFSET(J), J=1,NSENSORS) C C 9140 FORMAT(/,3X,'- SENSORS. Variables prepared for RTTOV-7:' S ,/,3X,' ----------------------------------------') C 9143 FORMAT(/,6X,"Number of sensors : ",I3) 9145 FORMAT( 6X,"Platform numbers : ",10I3) 9146 FORMAT( 6X,"Satellite numbers : ",10I3) 9147 FORMAT( 6X,"Instrument numbers : ",10I3) 9148 FORMAT( 6X,"Channel mapping offset : ",10I3) * RETURN END