1 SUBROUTINE ipxetas(IDIR, IGDTNUMI, IGDTLEN, IGDTMPLI, NPTS_INPUT, &
2 BITMAP_INPUT, DATA_INPUT, IGDTNUMO, IGDTMPLO, &
3 NPTS_OUTPUT, BITMAP_OUTPUT, DATA_OUTPUT, IRET)
105 INTEGER,
INTENT(IN ) :: IDIR
106 INTEGER,
INTENT(IN ) :: IGDTNUMI, IGDTLEN
107 INTEGER,
INTENT(IN ) :: IGDTMPLI(IGDTLEN)
108 INTEGER,
INTENT(IN ) :: NPTS_INPUT, NPTS_OUTPUT
109 INTEGER,
INTENT( OUT) :: IGDTNUMO
110 INTEGER,
INTENT( OUT) :: IGDTMPLO(IGDTLEN)
111 INTEGER,
INTENT( OUT) :: IRET
113 LOGICAL(KIND=1),
INTENT(IN ) :: BITMAP_INPUT(NPTS_INPUT)
114 LOGICAL(KIND=1),
INTENT( OUT) :: BITMAP_OUTPUT(NPTS_OUTPUT)
116 REAL,
INTENT(IN ) :: DATA_INPUT(NPTS_INPUT)
117 REAL,
INTENT( OUT) :: DATA_OUTPUT(NPTS_OUTPUT)
119 INTEGER :: SCAN_MODE, ISCALE, IP, IPOPT(20)
120 INTEGER :: IBI(1), IBO(1), J, KM, NO
123 REAL,
ALLOCATABLE :: OUTPUT_RLAT(:), OUTPUT_RLON(:)
128 IF (igdtnumi/=1)
THEN
133 scan_mode=igdtmpli(19)
134 IF((scan_mode==68.OR.scan_mode==72).AND.(idir<-2.OR.idir>-1))
THEN
138 igdtmplo(8)=igdtmplo(8)*2-1
139 IF((igdtmplo(8)*igdtmplo(9))/=npts_output)
THEN
143 iscale=igdtmplo(10)*igdtmplo(11)
144 IF(iscale==0) iscale=10**6
145 dlons=float(igdtmplo(17))/float(iscale)
147 igdtmplo(17)=nint(dlons*float(iscale))
148 ELSEIF(scan_mode==64.AND.idir==-1)
THEN
152 igdtmplo(8)=(igdtmplo(8)+1)/2
153 IF((igdtmplo(8)*igdtmplo(9))/=npts_output)
THEN
157 iscale=igdtmplo(10)*igdtmplo(11)
158 IF(iscale==0) iscale=10**6
159 dlons=float(igdtmplo(17))/float(iscale)
161 igdtmplo(17)=nint(dlons*float(iscale))
162 ELSEIF(scan_mode==64.AND.idir==-2)
THEN
166 igdtmplo(8)=(igdtmplo(8)+1)/2
167 IF((igdtmplo(8)*igdtmplo(9))/=npts_output)
THEN
171 iscale=igdtmplo(10)*igdtmplo(11)
172 IF(iscale==0) iscale=10**6
173 dlons=float(igdtmplo(17))/float(iscale)
175 igdtmplo(17)=nint(dlons*float(iscale))
187 ALLOCATE(output_rlat(npts_output))
188 ALLOCATE(output_rlon(npts_output))
190 CALL ipolates(ip, ipopt, igdtnumi, igdtmpli, igdtlen, &
191 igdtnumo, igdtmplo, igdtlen, &
192 npts_input, npts_output, km, ibi, bitmap_input, data_input, &
193 no, output_rlat, output_rlon, ibo, bitmap_output, data_output, iret)
195 DEALLOCATE(output_rlat, output_rlon)
198 print*,
'- PROBLEM IN IPOLATES: ', iret
205 bitmap_output(j*igdtmplo(8))=bitmap_output(j*igdtmplo(8)-1)
206 data_output(j*igdtmplo(8))=data_output(j*igdtmplo(8)-1)
207 bitmap_output((j-1)*igdtmplo(8)+1)=bitmap_output((j-1)*igdtmplo(8)+2)
208 data_output((j-1)*igdtmplo(8)+1)=data_output((j-1)*igdtmplo(8)+2)
213 END SUBROUTINE ipxetas