!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
!                     version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
!

      SUBROUTINE SENSORS 1,3
#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.
*
*          007:   S. Macpherson  *ARMA  Jul 2010
*                 - add SSMIS satellites DMSP17-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,        19,            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