!-------------------------------------- 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.
*
* -------------------
** 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