IBM XL Fortran for AIX, V12.1 (5724-U82) Version 12.01.0000.0001 --- ../obsprecips/cmap_0.5/interp_cmap.F 03/09/11 11:04:05 >>>>> OPTIONS SECTION <<<<< *** Options In Effect *** == On / Off Options == CR DBG ESCAPE FULLPATH I4 INLGLUE NOLIBESSL NOLIBPOSIX OBJECT SOURCE STRICT SWAPOMP THREADED UNWIND ZEROSIZE == Options Of Integer Type == ALIAS_SIZE(65536) MAXMEM(-1) OPTIMIZE(2) SPILLSIZE(2000) STACKTEMP(0) == Options Of Character Type == 64(LARGETYPE) ALIAS(STD,NOINTPTR) ALIGN(BINDC(POWER),STRUCT(NATURAL)) ARCH(PWR6) ATTR(FULL) AUTODBL(NONE) DESCRIPTOR(V1) DIRECTIVE(IBM*,IBMT) ENUM() FLAG(I,I) FLOAT(RNDSNGL,MAF,FOLD,RNGCHK,SINGLE) FREE(F90) HALT(S) IEEE(NEAR) INTSIZE(4) LANGLVL(EXTENDED) REALSIZE(4) NOSAVE() TUNE(PWR6) UNROLL(AUTO) XREF(FULL) XLF2003(NOPOLYMORPHIC,NOBOZLITARGS,NOSTOPEXCEPT,NOVOLATILE,NOAUTOREALLOC,OLDNANINF) XLF77(LEADZERO,BLANKPAD) XLF90(NOSIGNEDZERO,NOAUTODEALLOC,OLDPAD) >>>>> SOURCE SECTION <<<<< 1 |#line 1 "../obsprecips/cmap_0.5/interp_cmap.F" 1 |!------------------------------------------------------------------------- 2 |! NASA Goddard Space Flight Center Land Information System (LIS) V3.0 3 |! Released May 2004 4 |! 5 |! See SOFTWARE DISTRIBUTION POLICY for software distribution policies 6 |! 7 |! The LIS source code and documentation are in the public domain, 8 |! available without fee for educational, research, non-commercial and 9 |! commercial purposes. Users may distribute the binary or source 10 |! code to third parties provided this statement appears on all copies and 11 |! that no charge is made for such copies. 12 |! 13 |! NASA GSFC MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE 14 |! SOFTWARE FOR ANY PURPOSE. IT IS PROVIDED AS IS WITHOUT EXPRESS OR 15 |! IMPLIED WARRANTY. NEITHER NASA GSFC NOR THE US GOVERNMENT SHALL BE 16 |! LIABLE FOR ANY DAMAGES SUFFERED BY THE USER OF THIS SOFTWARE. 17 |! 18 |! See COPYRIGHT.TXT for copyright details. 19 |! 20 |!------------------------------------------------------------------------- 21 |!BOP 22 |! 23 |! !ROUTINE: interp_cmap.F90 24 |! 25 |! !DESCRIPTION: 26 |! 27 |! Interpolates CMAP observed precipitation forcing 28 |! 29 |! !INTERFACE: 30 |subroutine interp_cmap(kpds,ngdas,f,lb,lis_gds,nc,nr, & 31 | varfield) 32 |! !USES: 33 | use cmapdomain_module, only : mi,w11,w12,w21,w22,& 34 | n11,n12,n21,n22,rlat,rlon 35 | 36 | implicit none 37 |! !ARGUMENTS: 38 | integer :: nc, nr, ngdas 39 | integer :: kpds(200) 40 | real :: lis_gds(50) 41 | real :: f(ngdas) 42 | logical*1 :: lb(ngdas) 43 | real, dimension(nc,nr) :: varfield 44 |!EOP 45 | 46 | integer :: ip, ipopt(20),ibi,km,iret 47 | integer :: no, ibo, mo 48 | integer :: kgdsi(22), kgdso(22) 49 | integer :: count,i,j,v 50 | 51 | real :: ism, udef 52 |! real, dimension(nc,nr) :: geogtemp 53 |! real, dimension(nc*nr) :: lis1d 54 |! logical*1 :: geogmask(nc,nr) 55 |! logical*1 :: lo(nc*nr) 56 | 57 | real, allocatable :: lis1d(:) 58 | logical*1, allocatable :: lo(:) 59 | 60 |!=== End variable declarations 61 |!BOC 62 | print*, "interp_cmap() START" 63 | print*, "input ngrid = 720*360 =", ngdas 64 | print*, "output nc, nr =", nc, nr 65 | allocate(lis1d(nc*nr)) 66 | allocate( lo(nc*nr)) 67 |!-------------------------------------------------------------------- 68 |! Setting interpolation options (ip=0,bilinear) 69 |! (km=1, one parameter, ibi=1,use undefined bitmap 70 |! (needed for soil moisture and temperature only) 71 |! Use budget bilinear (ip=3) for precip forcing fields 72 |!-------------------------------------------------------------------- 73 |! if (kpds(5)==59 .or. kpds(5)==214) then 74 |! ip=3 75 |! ipopt(1)=-1 76 |! ipopt(2)=-1 77 |! km=1 78 |! ibi=1 79 |! else 80 |! ip=0 81 |! do i=1,20 82 |! ipopt(i)=0 83 |! enddo 84 |! km=1 85 |! ibi=1 86 |! endif 87 |!-------------------------------------------------------------------- 88 |! Initialize output bitmap. Important for soil moisture and temp. 89 |!-------------------------------------------------------------------- 90 |! 91 |! lo = .true. 92 |! 93 |! call ipolates (ip,ipopt,gridDesc,lis_gds,ngdas,nglis, & 94 |! km,ibi,lb,f,no,rlat,rlon,ibo,lo,lis1d,iret) 95 |! mi = ngdas 96 |! call polates0 (lis_gds,ibi,lb,f,ibo,lo,lis1d,mi,& 97 |! rlat, rlon,w11,w12,w21,w22,n11,n12,n21,n22,iret) 98 |! call conserv_interp(lis_gds,ibi,lb,f,ibo,lo,lis1d,mi,mo,& 99 |! rlat, rlon,w11,w12,w21,w22,n11,n12,n21,n22,iret) 100 |!-------------------------------------------------------------------- 101 |! Create 2D array for main program. Also define a "soil" mask 102 |! due to different geography between GDAS & LDAS. For LDAS land 103 |! points not included in GDAS geography dataset only. 104 |!-------------------------------------------------------------------- 105 |! count = 0 106 |! do j = 1, nr 107 |! do i = 1, nc 108 |! varfield(i,j) = lis1d(i+count) 109 |! geogmask(i,j) = lo(i+count) 110 |! enddo 111 |! count = count + nc 112 |! enddo 113 |!-------------------------------------------------------------------- 114 |! JESSE 20041127, CMAP IS ON THE SAME GRID AS GDAS 115 |!-------------------------------------------------------------------- 116 |! count = 0 117 |! do j = nr, 1, -1 118 |! do i = 1, nc 119 |! varfield(i,j) = f(i+count) 120 |! geogmask(i,j) = (f(i+count) .GE. 0.0) 121 |! enddo 122 |! count = count + nc 123 |! enddo 124 |!-------------------------------------------------------------------- 125 |! JESSE 20041225, USE IPOLATES(3) 126 |!-------------------------------------------------------------------- 127 | 128 | ip = 3 129 | ipopt = 0 130 | ipopt(1) = -1 131 | ipopt(2) = -1 132 | 133 | kgdsi = 0 134 | kgdsi(1) = 0 135 | kgdsi(2) = 720 136 | kgdsi(3) = 360 137 | kgdsi(4) = 89750 138 | kgdsi(5) = 250 139 | kgdsi(6) = 128 140 | kgdsi(7) = -89750 141 | kgdsi(8) = 359750 142 | kgdsi(9) = 500 143 | kgdsi(10)= 500 144 | kgdsi(11)= 0 145 | kgdsi(20)= 255 146 | 147 | write(*,'(11I7)') kgdsi(1:11) 148 | 149 | kgdso = 0 150 | do i = 1, 10 151 | if( i.EQ.4 .OR. i.EQ.7 .OR. i.EQ.8 .OR. i.EQ.9 ) then 152 | kgdso(i) = int(lis_gds(i)*1000) 153 | else 154 | kgdso(i) = int(lis_gds(i)) 155 | endif 156 | enddo 157 | kgdso(11) = 0 158 | kgdso(20) = 255 159 | 160 | write(*,'(11I7)') kgdso(1:11) 161 | 162 | mi = kgdsi(2)*kgdsi(3) 163 | mo = kgdso(2)*kgdso(3) 164 | km = 1 165 | 166 | print*,"mi, mo=", mi, mo 167 | ibi = 1 168 | lb = .false. 169 | do i = 1, mi 170 | lb(i)=(f(i).GE.0.) 171 | enddo 172 | 173 | iret = 0 174 | call ipolates (ip,ipopt,kgdsi,kgdso,mi,mo, & 175 | km,ibi,lb,f,no,rlat,rlon,ibo,lo,lis1d,iret) 176 | PRINT*,"AFTER ipolates IRET=", iret 177 | 178 | count = 0 179 | do j = nr, 1, -1 180 | do i = 1, nc 181 | varfield(i,j) = lis1d(i+count) 182 | !geogmask(i,j) = lo(i+count) 183 | enddo 184 | count = count + nc 185 | enddo 186 |!-------------------------------------------------------------------- 187 |! Save air tempertaure interpolated field for later use in 188 |! initialization of soil temp where geography differs 189 |! between GDAS and LDAS 190 |!-------------------------------------------------------------------- 191 |! if (kpds(5) .eq. 11 .and. kpds(6) .eq. 105) then 192 |! do i = 1, nc 193 |! do j = 1, nr 194 |! geogtemp(i,j) = varfield(i,j) 195 |! enddo 196 |! enddo 197 |! endif 198 | deallocate(lis1d) 199 | deallocate(lo) 200 | print*,"interp_cmap() END" 201 |!EOC 202 |end subroutine interp_cmap >>>>> ATTRIBUTE AND CROSS REFERENCE SECTION <<<<< IDENTIFIER NAME CROSS REFERENCE AND ATTRIBUTES cmapdomain_module Use associated, Nonintrinsic Module 0-33.7$ 0-33.7 count Automatic, Integer(4), Offset: 0, Alignment: full word 0-49.14$ 0-178.3@ 0-181.33 0-184.6@ 0-184.14 f Reference argument, Real(4) (1:?), Offset: 0, Alignment: full word 0-41.11$ 0-30.35 0-170.13 0-175.18 i Automatic, Integer(4), Offset: 0, Alignment: full word 0-49.20$ 0-150.6@ 0-151.10 0-151.22 0-151.34 0-151.46 0-152.14 0-152.31 0-154.14 0-154.31 0-169.6@ 0-170.9 0-170.15 0-180.9@ 0-181.18 0-181.31 ibi Automatic, Integer(4), Offset: 0, Alignment: full word 0-46.28$ 0-167.3@ 0-175.11 ibo Automatic, Integer(4), Offset: 0, Alignment: full word 0-47.18$ 0-175.33 int Pure Intrinsic 0-152.19 0-154.19 interp_cmap Subroutine 0-30.12$ ip Automatic, Integer(4), Offset: 0, Alignment: full word 0-46.14$ 0-128.3@ 0-174.18 ipolates External Subroutine 0-174.8 ipopt Automatic, Integer(4) (1:20), Offset: 0, Alignment: full word 0-46.18$ 0-129.3@ 0-130.3@ 0-131.3@ 0-174.21 iret Automatic, Integer(4), Offset: 0, Alignment: full word 0-46.35$ 0-173.3@ 0-175.46 0-176.34 ism Automatic, Real(4), Offset: 0, Alignment: full word 0-51.11$ j Automatic, Integer(4), Offset: 0, Alignment: full word 0-49.22$ 0-179.6@ 0-181.20 kgdsi Automatic, Integer(4) (1:22), Offset: 0, Alignment: full word 0-48.14$ 0-133.3@ 0-134.3@ 0-135.3@ 0-136.3@ 0-137.3@ 0-138.3@ 0-139.3@ 0-140.3@ 0-141.3@ 0-142.3@ 0-143.3@ 0-144.3@ 0-145.3@ 0-147.21 0-162.8 0-162.17 0-174.27 kgdso Automatic, Integer(4) (1:22), Offset: 0, Alignment: full word 0-48.25$ 0-149.3@ 0-152.8@ 0-154.8@ 0-157.3@ 0-158.3@ 0-160.21 0-163.8 0-163.17 0-174.33 km Automatic, Integer(4), Offset: 0, Alignment: full word 0-46.32$ 0-164.3@ 0-175.8 kpds Reference argument, Integer(4) (1:200), Offset: 0, Alignment: full word 0-39.14$ 0-30.24 lb Reference argument, Logical(1) (1:?), Offset: 0, Alignment: byte 0-42.16$ 0-30.37 0-168.3@ 0-170.6@ 0-175.15 lis1d Allocatable, Controlled, Real(4) (:), Offset: 0, Alignment: full word 0-57.29$ 0-65.12 0-175.40 0-181.25 0-198.14 lis_gds Reference argument, Real(4) (1:50), Offset: 0, Alignment: full word 0-40.11$ 0-30.40 0-152.23 0-154.23 lo Allocatable, Controlled, Logical(1) (:), Offset: 0, Alignment: byte 0-58.29$ 0-66.15 0-175.37 0-199.14 mi Use associated, Static, Integer(4), Offset: 72, Alignment: double word 0-33.33$ 0-162.3@ 0-166.21 0-169.13 0-174.39 mo Automatic, Integer(4), Offset: 0, Alignment: full word 0-47.23$ 0-163.3@ 0-166.25 0-174.42 n11 Allocatable, Use associated, Controlled, Integer(4) (:, :), Offset: 0, Alignment: full word 0-34.8$ n12 Allocatable, Use associated, Controlled, Integer(4) (:, :), Offset: 0, Alignment: full word 0-34.12$ n21 Allocatable, Use associated, Controlled, Integer(4) (:, :), Offset: 0, Alignment: full word 0-34.16$ n22 Allocatable, Use associated, Controlled, Integer(4) (:, :), Offset: 0, Alignment: full word 0-34.20$ nc Reference argument, Integer(4), Offset: 0, Alignment: full word 0-38.14$ 0-30.48 0-43.19 0-43.19 0-64.30 0-65.18 0-66.18 0-180.16 0-184.22 ngdas Reference argument, Integer(4), Offset: 0, Alignment: full word 0-38.22$ 0-30.29 0-41.13 0-41.13 0-42.19 0-42.19 0-63.38 no Automatic, Integer(4), Offset: 0, Alignment: full word 0-47.14$ 0-175.20 nr Reference argument, Integer(4), Offset: 0, Alignment: full word 0-38.18$ 0-30.51 0-43.22 0-43.22 0-64.34 0-65.21 0-66.21 0-179.10 rlat Allocatable, Use associated, Controlled, Real(4) (:), Offset: 0, Alignment: full word 0-34.24$ 0-175.23 rlon Allocatable, Use associated, Controlled, Real(4) (:), Offset: 0, Alignment: full word 0-34.29$ 0-175.28 udef Automatic, Real(4), Offset: 0, Alignment: full word 0-51.16$ v Automatic, Integer(4), Offset: 0, Alignment: full word 0-49.24$ varfield Reference argument, Real(4) (1:?, 1:?), Offset: 0, Alignment: full word 0-43.29$ 0-31.6 0-181.9@ w11 Allocatable, Use associated, Controlled, Real(4) (:, :), Offset: 0, Alignment: full word 0-33.36$ w12 Allocatable, Use associated, Controlled, Real(4) (:, :), Offset: 0, Alignment: full word 0-33.40$ w21 Allocatable, Use associated, Controlled, Real(4) (:, :), Offset: 0, Alignment: full word 0-33.44$ w22 Allocatable, Use associated, Controlled, Real(4) (:, :), Offset: 0, Alignment: full word 0-33.48$ ** interp_cmap === End of Compilation 1 === >>>>> FILE TABLE SECTION <<<<< FILE CREATION FROM FILE NO FILENAME DATE TIME FILE LINE 0 ../obsprecips/cmap_0.5/interp_cmap.F 03/09/11 11:04:05 >>>>> COMPILATION EPILOGUE SECTION <<<<< FORTRAN Summary of Diagnosed Conditions TOTAL UNRECOVERABLE SEVERE ERROR WARNING INFORMATIONAL (U) (S) (E) (W) (I) 0 0 0 0 0 0 Source records read....................................... 203 1501-510 Compilation successful for file interp_cmap.F. 1501-543 Object file created.