90 SUBROUTINE ipxetas(IDIR, IGDTNUMI, IGDTLEN, IGDTMPLI, NPTS_INPUT, &
91 BITMAP_INPUT, DATA_INPUT, IGDTNUMO, IGDTMPLO, &
92 NPTS_OUTPUT, BITMAP_OUTPUT, DATA_OUTPUT, IRET)
96 INTEGER,
INTENT(IN ) :: IDIR
97 INTEGER,
INTENT(IN ) :: IGDTNUMI, IGDTLEN
98 INTEGER,
INTENT(IN ) :: IGDTMPLI(IGDTLEN)
99 INTEGER,
INTENT(IN ) :: NPTS_INPUT, NPTS_OUTPUT
100 INTEGER,
INTENT( OUT) :: IGDTNUMO
101 INTEGER,
INTENT( OUT) :: IGDTMPLO(IGDTLEN)
102 INTEGER,
INTENT( OUT) :: IRET
104 LOGICAL(KIND=1),
INTENT(IN ) :: BITMAP_INPUT(NPTS_INPUT)
105 LOGICAL(KIND=1),
INTENT( OUT) :: BITMAP_OUTPUT(NPTS_OUTPUT)
107 REAL,
INTENT(IN ) :: DATA_INPUT(NPTS_INPUT)
108 REAL,
INTENT( OUT) :: DATA_OUTPUT(NPTS_OUTPUT)
110 INTEGER :: SCAN_MODE, ISCALE, IP, IPOPT(20)
111 INTEGER :: IBI, IBO, J, KM, NO
114 REAL,
ALLOCATABLE :: OUTPUT_RLAT(:), OUTPUT_RLON(:)
119 IF (igdtnumi/=1)
THEN
124 scan_mode=igdtmpli(19)
125 IF((scan_mode==68.OR.scan_mode==72).AND.(idir<-2.OR.idir>-1))
THEN
129 igdtmplo(8)=igdtmplo(8)*2-1
130 IF((igdtmplo(8)*igdtmplo(9))/=npts_output)
THEN
134 iscale=igdtmplo(10)*igdtmplo(11)
135 IF(iscale==0) iscale=10**6
136 dlons=float(igdtmplo(17))/float(iscale)
138 igdtmplo(17)=nint(dlons*float(iscale))
139 ELSEIF(scan_mode==64.AND.idir==-1)
THEN
143 igdtmplo(8)=(igdtmplo(8)+1)/2
144 IF((igdtmplo(8)*igdtmplo(9))/=npts_output)
THEN
148 iscale=igdtmplo(10)*igdtmplo(11)
149 IF(iscale==0) iscale=10**6
150 dlons=float(igdtmplo(17))/float(iscale)
152 igdtmplo(17)=nint(dlons*float(iscale))
153 ELSEIF(scan_mode==64.AND.idir==-2)
THEN
157 igdtmplo(8)=(igdtmplo(8)+1)/2
158 IF((igdtmplo(8)*igdtmplo(9))/=npts_output)
THEN
162 iscale=igdtmplo(10)*igdtmplo(11)
163 IF(iscale==0) iscale=10**6
164 dlons=float(igdtmplo(17))/float(iscale)
166 igdtmplo(17)=nint(dlons*float(iscale))
178 ALLOCATE(output_rlat(npts_output))
179 ALLOCATE(output_rlon(npts_output))
181 CALL ipolates(ip, ipopt, igdtnumi, igdtmpli, igdtlen, &
182 igdtnumo, igdtmplo, igdtlen, &
183 npts_input, npts_output, km, ibi, bitmap_input, data_input, &
184 no, output_rlat, output_rlon, ibo, bitmap_output, data_output, iret)
186 DEALLOCATE(output_rlat, output_rlon)
189 print*,
'- PROBLEM IN IPOLATES: ', iret
196 bitmap_output(j*igdtmplo(8))=bitmap_output(j*igdtmplo(8)-1)
197 data_output(j*igdtmplo(8))=data_output(j*igdtmplo(8)-1)
198 bitmap_output((j-1)*igdtmplo(8)+1)=bitmap_output((j-1)*igdtmplo(8)+2)
199 data_output((j-1)*igdtmplo(8)+1)=data_output((j-1)*igdtmplo(8)+2)
subroutine ipxetas(idir, igdtnumi, igdtlen, igdtmpli, npts_input, bitmap_input, data_input, igdtnumo, igdtmplo, npts_output, bitmap_output, data_output, iret)
Expand or contract eta grids using linear interpolation.