Page 1 Source Listing GD2EGK 2014-12-17 20:48 GD2EGK.f 1 SUBROUTINE GD2EGK(IMOT,JMOT) 2 C 3 C$$$ SUBPROGRAM DOCUMENTATION BLOCK 4 C . . . 5 C SUBPROGRAM: GD2EGK MAP OUTPUT GRID TO E-GRID 6 C PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-23 7 C 8 C ABSTRACT: 9 C THIS ROUTINE LOCATES THE (I,J) INDICES ON A SPECIFIED 10 C OUTPUT GRID NEAREST TO E-GRID MASS (H) POINTS. 11 C . 12 C 13 C PROGRAM HISTORY LOG: 14 C ??-??-?? ??? 15 C 92-12-23 RUSS TREADON - GENERALIZED CODE. 16 C 93-06-09 RUSS TREADON - EXPANDED COMMENTS. 17 C 98-06-04 BLACK - CONVERSION TO 2-D 18 C 19 C USAGE: GD2EGK(IMOT,JMOT) 20 C INPUT ARGUMENT LIST: 21 C IMOT - FIRST DIMENSION OF OUTPUT GRID. 22 C JMOT - SECOND DIMENSION OF OUTPUT GRID. 23 C 24 C OUTPUT ARGUMENT LIST: 25 C NONE 26 C 27 C OUTPUT FILES: 28 C NONE 29 C 30 C SUBPROGRAMS CALLED: 31 C UTILITIES: 32 C NONE 33 C LIBRARY: 34 C COMMON - LLGRDS 35 C IOUNIT 36 C 37 C ATTRIBUTES: 38 C LANGUAGE: FORTRAN 39 C MACHINE : CRAY C-90 40 C$$$ 41 C 42 C INCLUDE E- AND OTUPUT GRID DIMENSIONS. 43 C COMPUTE DEPENDENT PARAMETERS. 44 C------------------------------------------------------------------------ 45 INCLUDE "parmeta" 63 INCLUDE "parmout" 64 C------------------------------------------------------------------------ 68 PARAMETER (IMT=2*IM-1, JMT=JM) 69 C------------------------------------------------------------------------ 70 INCLUDE "LLGRDS.comm" 84 INCLUDE "IOUNIT.comm" 85 C 86 C************************************************************************ 87 C START GD2EGK. 88 C 96 WRITE(STDOUT,*)'GD2EGK: COMPUTE E-GRID (I,J) FOR CETLIH' 97 C Page 2 Source Listing GD2EGK 2014-12-17 20:48 GD2EGK.f 98 C INITIALIZE TO MINUS ONE (A FLAG) THE ARRAYS WHICH WILL CONTAIN 99 C THE OUTPUT GRID (I,J) NEAREST TO EACH E-GRID MASS POINT. 100 C 101 CMIC$ DO ALL VECTOR AUTOSCOPE 102 DO J=1,JM 103 DO I=1,IM 104 IEGRDK(I,J)=-1 105 JEGRDK(I,J)=-1 106 ENDDO 107 ENDDO 108 C 109 C THE MAPPING EXCLUDES THE OUTERMOST TWO ROWS AND COLUMNS ON 110 C THE OUTPUT GRID. SET UPPER INDEX LIMITS ACCORDINGLY. 111 C 112 JMOT2=JMOT-2 113 IMOT2=IMOT-2 114 C 115 C LOOP OVER THE E-GRID. THE LOOP ON J MOVES US SOUTH TO NORTH 116 C ON THE E-GRID. THE LOOP ON K MOVES US WEST TO EAST ACROSS 117 C THE J-TH ROW ON THE E-GRID. 118 C 119 DO 175 J=3,JM-2 120 IEND=IM-1-MOD(J+1,2) 121 C 122 DO 175 I=2,IEND 123 C 124 C SET THE MASS POINT TRANSFORMED LATITUDE AND LONGITUDE 125 C FOR THE K-TH E-GRID MASS POINT ON ROW J. 126 C 127 CLON=HTLON(I,J) 128 CLAT=HTLAT(I,J) 129 DLAT=0. 130 C 131 C LOOP OVER THE OUTPUT GRID. FOR THE CURRENT 132 C (I.E., K-TH) E-GRID MASS POINT WE WANT TO 133 C LOCATE THE NEAREST OUTPUT GRID (I,J) POINT. 134 C NOTE THAT THE (LAT,LON) OF THE OUTPUT GRID HAVE 135 C BEEN TRANSFORMED TO THE E-GRID REFERENCE FRAME. 136 C 137 110 DO 130 JJ=2,JMOT2 138 DO 120 II=2,IMOT2 139 IF(CLON.GE.GDTLON(II+1,JJ)) GOTO 120 140 IF(CLON.LT.GDTLON(II ,JJ)) GOTO 120 141 C 142 C WE HAVE THE I INDEX (IP) OF THE OUTPUT GRID POINT 143 C CLOSEST TO THE K-TH E-GRID MASS POINT. SAVE THIS 144 C VALUE AND EXIT LOOP 120. 145 C 146 IP=II 147 IEGRDK(I,J)=IP 148 GOTO 125 149 120 CONTINUE 150 C 151 C REACHING THIS LINE MEANS THAT IP HAS NOT BEEN IDENTIFIED 152 C ON THIS ROW OF THE OUTPUT GRID SO MOVE TO THE NEXT ROW OF 153 C THE OUTPUT GRID AND REPEAT THE PROCESS. 154 C Page 3 Source Listing GD2EGK 2014-12-17 20:48 GD2EGK.f 155 GOTO 130 156 C 157 C REACHING THIS POINT MEANS THAT WE HAVE THE I INDEX. 158 C CHECK TO SEE IF THE LATITUDE OF THE JJ-TH OUTPUT GRID 159 C POINT IN THE IP-TH COLUMN IS WITHIN DLAT OF THE LATITUDE 160 C OF THE K-TH E-GRID MASS POINT. IF SO, SAVE THE J INDEX 161 C (JP) AND MOVE ON THE THE NEXT E-GRID MASS POINT. 162 C OTHERWISE, MOVE ON THE THE NEXT ROW OF THE OUTPUT GRID 163 C AND REPEAT THE SEARCH PROCESS. 164 C 165 125 CONTINUE 166 C 167 IF(CLAT.GE.(GDTLAT(IP,JJ+1)+DLAT)) GOTO 130 168 IF(CLAT.LT.(GDTLAT(IP,JJ )-DLAT)) GOTO 130 169 JP=JJ 170 JEGRDK(I,J)=JP 171 GOTO 175 172 130 CONTINUE 173 C 174 C REACHING THIS BLOCK OF CODE MEANS THAT NO NEAREST NEIGHBOR 175 C OUTPUT GRID POINT HAS BEEN IDENTIFIED. THIS COULD HAVE 176 C HAPPENED BECAUSE OF 177 C (A) OBLIQUENESS OF TRANSFORMED GRID LINES, OR 178 C (B) ETA GRID POINT BEING OUTSIDE THE OUTPUT GRID AREA. 179 C WE ALLOW FOR (A) BY INCREASING THE TOLERANCE DLAT (UP TO 180 C A LIMIT OF 0.1) AND REPEATING THE SEARCH. 181 C 182 IF(DLAT.LT.0.1)THEN 183 DLAT = DLAT + 0.005 184 GOTO 110 185 ENDIF 186 C 187 C REACHING THIS LAST BLOCK OF CODE MEANS THAT WE CAN'T FIND 188 C A NEAREST NEIGHBOR OUTPUT GRID POINT FOR THE K-TH E-GRID 189 C MASS POINT. SET I- AND J-EGRDK ARRAY TO -1 FOR THIS K. 190 C (GRANTED, THIS IS OVERKILL, SINCE WE INITIALIZED THESE 191 C ARRAYS TO -1.) 192 C 193 IEGRDK(I,J)=-1 194 JEGRDK(I,J)=-1 195 C 196 C REPEAT SEARCH FOR NEXT E-GRID MASS POINT. 197 C 198 175 CONTINUE 199 C 200 C END OF ROUTINE. 201 C 202 RETURN 203 END Page 4 Source Listing GD2EGK 2014-12-17 20:48 Entry Points GD2EGK.f ENTRY POINTS Name gd2egk_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 110 Label 97 144 120 Label 109 98,99,100 125 Label 125 108 130 Label 132 97,115,127,128 175 Label 158 79,82,131 CLAT Local 88 R(4) 4 scalar 88,127,128 CLON Local 87 R(4) 4 scalar 87,99,100 DLAT Local 89 R(4) 4 scalar 89,127,128,142,143 EGRDI Scalar 9 R(4) 4 2 91719 COM EGRDJ Scalar 9 R(4) 4 2 91719 COM EVLAT Scalar 8 R(4) 4 2 183051 COM EVLON Scalar 8 R(4) 4 2 183051 COM FVTLON Scalar 7 R(4) 4 2 183051 COM GD2EGK Subr 1 GDLAT Scalar 3 R(4) 4 2 91719 COM GDLON Scalar 3 R(4) 4 2 91719 COM GDTLAT Scalar 4 R(4) 4 2 91719 COM 127,128 GDTLON Scalar 4 R(4) 4 2 91719 COM 99,100 HTLAT Scalar 5 R(4) 4 2 91719 COM 88 HTLON Scalar 5 R(4) 4 2 91719 COM 87 I Local 63 I(4) 4 scalar 63,64,65,82,87,88,107,130,153,154 IDIM1 Param 14 I(4) 4 scalar IDIM2 Param 14 I(4) 4 scalar IEGRD Scalar 10 I(4) 4 2 91719 COM IEGRDK Scalar 6 I(4) 4 2 91719 COM 64,107,153 IEND Local 80 I(4) 4 scalar 80,82 IGSTL Param 9 I(4) 4 scalar 14 IGSTR Param 9 I(4) 4 scalar 14 II Local 98 I(4) 4 scalar 98,99,100,106 IM Param 3 I(4) 4 scalar 3,5,6,7,11,14,48,63,80 IMOT Dummy 1 I(4) 4 scalar ARG,INOUT 73 IMOT2 Local 73 I(4) 4 scalar 73,98 IMT Param 48 I(4) 4 scalar 7,8 IMX Param 3 I(4) 4 scalar 3,4,9,10,11,12 INPES Param 6 I(4) 4 scalar 11,14 IOUNIT Common 4 20 IP Local 106 I(4) 4 scalar 106,107,127,128 ITAIL Param 11 I(4) 4 scalar IWGT Scalar 11 I(4) 4 2 91719 COM J Local 62 I(4) 4 scalar 62,64,65,79,80,87,88,107,130,153,1 54 JDIM1 Param 15 I(4) 4 scalar JDIM2 Param 15 I(4) 4 scalar JEGRD Scalar 10 I(4) 4 2 91719 COM Page 5 Source Listing GD2EGK 2014-12-17 20:48 Symbol Table GD2EGK.f Name Object Declared Type Bytes Dimen Elements Attributes References JEGRDK Scalar 6 I(4) 4 2 91719 COM 65,130,154 JGSTL Param 10 I(4) 4 scalar 15 JGSTR Param 10 I(4) 4 scalar 15 JJ Local 97 I(4) 4 scalar 97,99,100,127,128,129 JM Param 3 I(4) 4 scalar 3,5,6,7,12,15,48,62,79 JMOT Dummy 1 I(4) 4 scalar ARG,INOUT 72 JMOT2 Local 72 I(4) 4 scalar 72,97 JMT Param 48 I(4) 4 scalar 7,8 JMX Param 3 I(4) 4 scalar 3,4,9,10,11,12 JNPES Param 6 I(4) 4 scalar 12,15 JP Local 129 I(4) 4 scalar 129,130 JTAIL Param 12 I(4) 4 scalar LCNTRL Scalar 5 I(4) 4 scalar COM LLGRDS Common 2 9167256 LM Param 3 I(4) 4 scalar 3 LSM Param 3 I(4) 4 scalar LUNCO Scalar 5 I(4) 4 scalar COM LUNLL Scalar 5 I(4) 4 scalar COM LUNOUT Scalar 5 I(4) 4 scalar COM MOD Func 80 scalar 80 MXFLD Param 3 I(4) 4 scalar MXLVL Param 3 I(4) 4 scalar STDOUT Scalar 2 I(4) 4 scalar COM 56 VTLAT Scalar 7 R(4) 4 2 91719 COM VTLON Scalar 7 R(4) 4 2 91719 COM WIJ Scalar 11 R(4) 4 2 91719 COM WIJP Scalar 12 R(4) 4 2 91719 COM WIPJ Scalar 11 R(4) 4 2 91719 COM WIPJP Scalar 12 R(4) 4 2 91719 COM Page 6 Source Listing GD2EGK 2014-12-17 20:48 Subprograms/Common Blocks GD2EGK.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References GD2EGK Subr 1 IOUNIT Common 4 20 LLGRDS Common 2 9167256 COMPILER OPTIONS BEING USED -align nocommons -align nodcommons -align noqcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume byterecl -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_unit_star -assume old_ldout_format -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume nostd_mod_proc_name -assume norealloc_lhs -assume underscore -assume no2underscores no -auto -auto_scalar no -bintext -ccdefault default -check noargs -check noarg_temp_created -check nobounds -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check power -check noshape -check nounderflow -check nouninitialized -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference -D __INTEL_COMPILER=1210 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ -D _MT -D __INTEL_COMPILER_BUILD_DATE=20120612 -D __i686 -D __i686__ -D __pentiumpro -D __pentiumpro__ -D __pentium4 -D __pentium4__ -D __tune_pentium4__ -D __SSE2__ -D __SSE__ -D __MMX__ -double_size 64 no -d_lines no -Qdyncom -error_limit 30 no -f66 no -f77rtl no -fast -fpscomp nofilesfromcmd -fpscomp nogeneral -fpscomp noioformat -fpscomp noldio_spacing -fpscomp nologicals Page 7 Source Listing GD2EGK 2014-12-17 20:48 GD2EGK.f -fixed no -fpconstant -fpe3 -fprm nearest no -ftz -fp_model noprecise -fp_model fast -fp_model nostrict -fp_model nosource -fp_model nodouble -fp_model noextended -fp_model novery_fast -fp_model noexcept -fp_model nono_except -heap_arrays 0 no -threadprivate_compat -g2 -iface nomixed_str_len_arg -iface nono_mixed_str_len_arg no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude -O2 no -pad_source -real_size 32 no -recursive -reentrancy none no -sharable_localsaves -vec=simd -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w noargument_checking -w nodeclarations -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage -includepath : /gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/,.f,./.f,/usrx/local/intel/composerxe/mkl/include/.f, /usrx/local/intel/composerxe/tbb/include/.f,/gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/intel64/.f, /gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/.f,/usr/local/include/.f,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/.f, /usr/include/.f,/usr/include/.f -list filename : GD2EGK.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100