Page 1 Source Listing GD2EGK 2025-03-12 18:23 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 2025-03-12 18:23 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 2025-03-12 18:23 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 2025-03-12 18:23 Entry Points GD2EGK.f ENTRY POINTS Name gd2egk_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 110 Label 137 184 120 Label 149 138,139,140 125 Label 165 148 130 Label 172 137,155,167,168 175 Label 198 119,122,171 CLAT Local 128 R(4) 4 scalar 128,167,168 CLON Local 127 R(4) 4 scalar 127,139,140 DLAT Local 129 R(4) 4 scalar 129,167,168,182,183 GD2EGK Subr 1 I Local 103 I(4) 4 scalar 103,104,105,122,127,128,147,170,19 3,194 IDIM1 Param 59 I(4) 4 scalar IDIM2 Param 59 I(4) 4 scalar IEND Local 120 I(4) 4 scalar 120,122 IGSTL Param 54 I(4) 4 scalar 59 IGSTR Param 54 I(4) 4 scalar 59 II Local 138 I(4) 4 scalar 138,139,140,146 IM Param 48 I(4) 4 scalar 56,59,67,68,75,76,77,103,120 IMOT Dummy 1 I(4) 4 scalar ARG,INOUT 113 IMOT2 Local 113 I(4) 4 scalar 113,138 IMT Param 68 I(4) 4 scalar 77,78 IMX Param 67 I(4) 4 scalar 73,74,79,80,81,82 INPES Param 51 I(4) 4 scalar 56,59 IOUNIT Common 92 20 SAVE IP Local 146 I(4) 4 scalar 146,147,167,168 ITAIL Param 56 I(4) 4 scalar J Local 102 I(4) 4 scalar 102,104,105,119,120,127,128,147,17 0,193,194 JDIM1 Param 60 I(4) 4 scalar JDIM2 Param 60 I(4) 4 scalar JGSTL Param 55 I(4) 4 scalar 60 JGSTR Param 55 I(4) 4 scalar 60 JJ Local 137 I(4) 4 scalar 137,139,140,167,168,169 JM Param 48 I(4) 4 scalar 57,60,67,68,75,76,77,102,119 JMOT Dummy 1 I(4) 4 scalar ARG,INOUT 112 JMOT2 Local 112 I(4) 4 scalar 112,137 JMT Param 68 I(4) 4 scalar 77,78 JMX Param 67 I(4) 4 scalar 73,74,79,80,81,82 JNPES Param 51 I(4) 4 scalar 57,60 JP Local 169 I(4) 4 scalar 169,170 JTAIL Param 57 I(4) 4 scalar LLGRDS Common 72 9167256 SAVE LM Param 48 I(4) 4 scalar 67 LSM Param 48 I(4) 4 scalar Page 5 Source Listing GD2EGK 2025-03-12 18:23 Symbol Table GD2EGK.f Name Object Declared Type Bytes Dimen Elements Attributes References MOD Func 120 scalar 120 MXFLD Param 67 I(4) 4 scalar MXLVL Param 67 I(4) 4 scalar TYPE COMPONENTS/COMMON VARIABLES Name Type Bytes Offset Dimen Elements Attributes References EGRDI R(4) 4 5865372 2 91719 COM EGRDJ R(4) 4 6232248 2 91719 COM EVLAT R(4) 4 4400964 2 183051 COM EVLON R(4) 4 5133168 2 183051 COM FVTLON R(4) 4 3668760 2 183051 COM GDLAT R(4) 4 0 2 91719 COM GDLON R(4) 4 366876 2 91719 COM GDTLAT R(4) 4 733752 2 91719 COM 167,168 GDTLON R(4) 4 1100628 2 91719 COM 139,140 HTLAT R(4) 4 1467504 2 91719 COM 128 HTLON R(4) 4 1834380 2 91719 COM 127 IEGRD I(4) 4 6599124 2 91719 COM IEGRDK I(4) 4 2201256 2 91719 COM 104,147,193 IWGT I(4) 4 7332876 2 91719 COM JEGRD I(4) 4 6966000 2 91719 COM JEGRDK I(4) 4 2568132 2 91719 COM 105,170,194 LCNTRL I(4) 4 4 scalar COM LUNCO I(4) 4 8 scalar COM LUNLL I(4) 4 12 scalar COM LUNOUT I(4) 4 16 scalar COM STDOUT I(4) 4 0 scalar COM 96 VTLAT R(4) 4 2935008 2 91719 COM VTLON R(4) 4 3301884 2 91719 COM WIJ R(4) 4 7699752 2 91719 COM WIJP R(4) 4 8433504 2 91719 COM WIPJ R(4) 4 8066628 2 91719 COM WIPJP R(4) 4 8800380 2 91719 COM Page 6 Source Listing GD2EGK 2025-03-12 18:23 Subprograms/Common Blocks GD2EGK.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References GD2EGK Subr 1 IOUNIT Common 92 20 SAVE LLGRDS Common 72 9167256 SAVE COMPILER OPTIONS BEING USED -align noall -align nonone -align nocommons -align nodcommons -align noqcommons -align nozcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -align norec32byte -align norec64byte -align noarray8byte -align noarray16byte -align noarray32byte -align noarray64byte -align noarray128byte -align noarray256byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume nobuffered_stdout -assume byterecl -assume nocontiguous_assumed_shape -assume nocontiguous_pointer -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_complex_align -assume old_unit_star -assume old_inquire_recl -assume old_ldout_format -assume old_ldout_zero -assume noold_logical_assign -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume noprotect_allocates -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume std_minus0_rounding -assume nostd_mod_proc_name -assume std_value -assume realloc_lhs -assume underscore -assume no2underscores -assume norecursion no -auto -auto_scalar no -bintext -ccdefault default -check noarg_temp_created -check noassume -check nobounds -check nocontiguous -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check noshape -check nostack -check nouninitialized -check noudio_iostat -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference -D __INTEL_COMPILER=1910 -D __INTEL_COMPILER_UPDATE=3 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ Page 7 Source Listing GD2EGK 2025-03-12 18:23 GD2EGK.f -D __amd64 -D __amd64__ -D __INTEL_COMPILER_BUILD_DATE=20200925 -D __INTEL_OFFLOAD -D __MMX__ -D __SSE__ -D __SSE_MATH__ -D __SSE2__ -D __SSE2_MATH__ -D __SSE3__ -D __SSSE3__ -D __SSE4_1__ -D __SSE4_2__ -D __POPCNT__ -D __PCLMUL__ -D __AES__ -D __AVX__ -D __F16C__ -D __AVX_I__ -D __RDRND__ -D __FMA__ -D __FP_FAST_FMA -D __FP_FAST_FMAF -D __BMI__ -D __LZCNT__ -D __AVX2__ -D __haswell -D __haswell__ -D __tune_haswell__ -D __core_avx2 -D __core_avx2__ -D __tune_core_avx2__ -D __CRAY_X86_ROME -D __CRAYXT_COMPUTE_LINUX_TARGET -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 -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 -init noarrays -init nohuge -init noinfinity -init nominus_huge -init nominus_infinity -init nominus_tiny -init nonan -init nosnan -init notiny -init nozero no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude no -o -offload-build=host -openmp-simd -O2 no -pad_source -real_size 32 no -recursive -reentrancy threaded -vec=simd -show nofullpath -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w nodeclarations -w noexternals -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w noshape -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage no -wrap-margins Page 8 Source Listing GD2EGK 2025-03-12 18:23 GD2EGK.f -includepath : /pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/include/,/pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/, .f90,./.f90,/opt/cray/pe/mpich/8.1.12/ofi/intel/19.0/include/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/ipp/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/mkl/include/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/stdlib/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/tbb/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/intel64/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/icc/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/.f90,/usr/lib64/gcc/x86_64-suse-linux/7/include/.f90, /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed/.f90,/usr/include/.f90,/usr/include/.f90,/usr/include/.f90 -list filename : GD2EGK.lst no -o COMPILER: Intel(R) Fortran 19.1-1655