IBM XL Fortran for AIX, V12.1 (5724-U82) Version 12.01.0000.0001 --- ../interp/compute_coord.F 03/09/11 11:03:46 >>>>> 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 "../interp/compute_coord.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 |! !ROUTINE: compute_coord.F90 23 |! 24 |! !DESCRIPTION: 25 |! This subroutine computes the grid and earth coordinates of 26 |! the specified domain. This routine is based on the grid 27 |! decoding routines in the ipolates interoplation package. 28 |! 29 |! The input options include : 30 |! (iopt= 0) grid and earth coordinates of all grid points 31 |! (iopt=+1) earth coordinates of selected grid coordinates 32 |! (iopt=-1) grid coordinates of selected earth coordinates 33 |! The current code recognizes the following projections: 34 |! (gridDesc(1)=000) equidistant cylindrical 35 |! (gridDesc(1)=001) mercator cylindrical 36 |! (gridDesc(1)=003) lambert conformal conical 37 |! (gridDesc(1)=004) gaussian cylindrical 38 |! (gridDesc(1)=005) polar stereographic azimuthal 39 |! (gridDesc(1)=201) staggered rotated equidistant cylindrical 40 |! (gridDesc(1)=202) rotated equidistant cylindrical 41 | 42 |! !REVISION HISTORY: 43 |! 04-10-96 Mark Iredell; Initial Specification 44 |! 05-27-04 Sujay Kumar; Modified verision with floating point arithmetic. 45 |! 46 |! input argument list: 47 |! gridDesc - integer (200) domain description parameters 48 |! iopt - integer option flag 49 |! ( 0 to compute earth coords of all the grid points) 50 |! (+1 to compute earth coords of selected grid coords) 51 |! (-1 to compute grid coords of selected earth coords) 52 |! npts - integer maximum number of coordinates 53 |! fill - real fill value to set invalid output data 54 |! (must be impossible value; suggested value: -9999.) 55 |! xpts - real (npts) grid x point coordinates if iopt>0 56 |! ypts - real (npts) grid y point coordinates if iopt>0 57 |! rlon - real (npts) earth longitudes in degrees e if iopt<0 58 |! (acceptable range: -360. to 360.) 59 |! rlat - real (npts) earth latitudes in degrees n if iopt<0 60 |! (acceptable range: -90. to 90.) 61 |! lrot - integer flag to return vector rotations if 1 62 |! 63 |! output argument list: 64 |! xpts - real (npts) grid x point coordinates if iopt<=0 65 |! ypts - real (npts) grid y point coordinates if iopt<=0 66 |! rlon - real (npts) earth longitudes in degrees e if iopt>=0 67 |! rlat - real (npts) earth latitudes in degrees n if iopt>=0 68 |! nret - integer number of valid points computed 69 |! (-1 if projection unrecognized) 70 |! !INTERFACE: 71 |subroutine compute_coord(gridDesc,iopt,npts,fill,xpts,ypts,rlon,rlat,nret, & 72 | lrot) 73 |!EOP 74 | implicit none 75 | real :: gridDesc(50) 76 | integer :: npts, nret,lrot 77 | real :: fill 78 | real :: xpts(npts),ypts(npts),rlon(npts),rlat(npts) 79 | integer :: iopt, im,jm,kscan,is1,nm,nscan,nn, iopf,n 80 | integer :: i,j 81 | if(iopt.eq.0) then 82 | im=gridDesc(2) 83 | jm=gridDesc(3) 84 | nm=im*jm 85 | nscan=mod(nint(gridDesc(11))/32,2) 86 | if(nm.le.npts) then 87 | do n=1,nm 88 | if(nscan.eq.0) then 89 | j=(n-1)/im+1 90 | i=n-im*(j-1) 91 | else 92 | i=(n-1)/jm+1 93 | j=n-jm*(i-1) 94 | endif 95 | xpts(n)=i 96 | ypts(n)=j 97 | enddo 98 | do n=nm+1,npts 99 | xpts(n)=fill 100 | ypts(n)=fill 101 | enddo 102 | else 103 | do n=1,npts 104 | xpts(n)=fill 105 | ypts(n)=fill 106 | enddo 107 | endif 108 | iopf=1 109 | else 110 | iopf=iopt 111 | endif 112 |! equidistant cylindrical 113 | if(gridDesc(1).eq.000) then 114 | call compute_coord_latlon(gridDesc,iopf,npts,fill,xpts,ypts,rlon,rlat,nret, & 115 | lrot) 116 |! gaussian cylindrical 117 | elseif(gridDesc(1).eq.004) then 118 | call compute_coord_gauss(gridDesc,iopf,npts,fill,xpts,ypts,rlon,rlat,nret, & 119 | lrot) 120 | endif 121 |end subroutine compute_coord >>>>> ATTRIBUTE AND CROSS REFERENCE SECTION <<<<< IDENTIFIER NAME CROSS REFERENCE AND ATTRIBUTES compute_coord Subroutine 0-71.12$ compute_coord_gauss External Subroutine 0-118.11 compute_coord_latlon External Subroutine 0-114.11 fill Reference argument, Real(4), Offset: 0, Alignment: full word 0-77.11$ 0-71.45 0-99.20 0-100.20 0-104.20 0-105.20 0-114.51 0-118.50 griddesc Reference argument, Real(4) (1:50), Offset: 0, Alignment: full word 0-75.11$ 0-71.26 0-82.9 0-83.9 0-85.21 0-113.6 0-114.32 0-117.10 0-118.31 i Automatic, Integer(4), Offset: 0, Alignment: full word 0-80.14$ 0-90.15@ 0-92.15@ 0-93.23 0-95.20 im Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.20$ 0-82.6@ 0-84.9 0-89.23 0-90.19 iopf Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.49$ 0-108.6@ 0-110.6@ 0-114.41 0-118.40 iopt Reference argument, Integer(4), Offset: 0, Alignment: full word 0-79.14$ 0-71.35 0-81.6 0-110.11 is1 Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.32$ j Automatic, Integer(4), Offset: 0, Alignment: full word 0-80.16$ 0-89.15@ 0-90.23 0-93.15@ 0-96.20 jm Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.23$ 0-83.6@ 0-84.12 0-92.23 0-93.19 kscan Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.26$ lrot Reference argument, Integer(4), Offset: 0, Alignment: full word 0-76.25$ 0-72.6 0-115.11 0-119.11 mod Pure Intrinsic 0-85.12 n Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.54$ 0-87.12@ 0-89.18 0-90.17 0-92.18 0-93.17 0-95.17 0-96.17 0-98.12@ 0-99.17 0-100.17 0-103.12@ 0-104.17 0-105.17 nint Pure Intrinsic 0-85.16 nm Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.36$ 0-84.6@ 0-86.9 0-87.16 0-98.14 nn Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.45$ npts Reference argument, Integer(4), Offset: 0, Alignment: full word 0-76.14$ 0-71.40 0-78.16 0-78.16 0-78.27 0-78.27 0-78.38 0-78.38 0-78.49 0-78.49 0-86.15 0-98.19 0-103.16 0-114.46 0-118.45 nret Reference argument, Integer(4), Offset: 0, Alignment: full word 0-76.20$ 0-71.70 0-114.76 0-118.75 nscan Automatic, Integer(4), Offset: 0, Alignment: full word 0-79.39$ 0-85.6@ 0-88.15 rlat Reference argument, Real(4) (1:?), Offset: 0, Alignment: full word 0-78.44$ 0-71.65 0-114.71 0-118.70 rlon Reference argument, Real(4) (1:?), Offset: 0, Alignment: full word 0-78.33$ 0-71.60 0-114.66 0-118.65 xpts Reference argument, Real(4) (1:?), Offset: 0, Alignment: full word 0-78.11$ 0-71.50 0-95.12@ 0-99.12@ 0-104.12@ 0-114.56 0-118.55 ypts Reference argument, Real(4) (1:?), Offset: 0, Alignment: full word 0-78.22$ 0-71.55 0-96.12@ 0-100.12@ 0-105.12@ 0-114.61 0-118.60 ** compute_coord === End of Compilation 1 === >>>>> FILE TABLE SECTION <<<<< FILE CREATION FROM FILE NO FILENAME DATE TIME FILE LINE 0 ../interp/compute_coord.F 03/09/11 11:03:46 >>>>> 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....................................... 122 1501-510 Compilation successful for file compute_coord.F. 1501-543 Object file created.