Page 1 Source Listing GENBIL 2025-03-12 18:23 GENBIL.f 1 SUBROUTINE GENBIL(EGFUL,IMOT,JMOT) 2 C 3 C$$$ SUBPROGRAM DOCUMENTATION BLOCK 4 C . . . 5 C SUBPROGRAM: GENBIL COMPUTE BILINEAR INTRP WEIGHTS 6 C PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-23 7 C 8 C ABSTRACT: 9 C THIS ROUTINE IS BASED ON CODE SUBROUTINE INTERP FOUND 10 C IN DAVID PLUMMER'S ETAPACKC. GIVEN THE E-GRID AND 11 C OUTPUT GRID BILINEAR INTERPOLATION WEIGHTS ARE COMPUTED 12 C AND SAVED COMMON BLOCK LLGRDS ARRAYS. THE PASSED FILLED 13 C E-GRID ARRAY, EGFUL CAN CONTAIN ANY FIELD. IT IS USED 14 C TO DETERMINE THE EXTENT KNOW DATA VALUES IN THE E-GRID. 15 C THOSE GRID POINTS ON THE E-GRID WHICH EQUAL OR EXCEED 16 C THE SPECIAL VALUE, SPVC, ARE TREATED DIFFERENTLY IN THE 17 C INTERPOLATION. FOR MOST APPLICATIONS THIS CHECK IS NOT 18 C NECESSARY. 19 C . 20 C 21 C PROGRAM HISTORY LOG: 22 C ??-??-?? DAVID PLUMMER - SUBROUTINE INTERP IN ETAPACKC 23 C 92-12-23 RUSS TREADON - EXTRACTED CODE FROM INTERP AND 24 C GENERALIZED TO HANDLE VARIOUS 25 C INPUT AND OUTPUT GRIDS 26 C 27 C USAGE: CALL GENBIL(EGFUL,IMOT,JMOT) 28 C INPUT ARGUMENT LIST: 29 C EGFUL - FILLED E-GRID DEFINING EXTENT OF E-GRID. 30 C IMOT - FIRST DIMENSION OF OUTPUT GRID. 31 C JMOT - SECOND DIMENSION OF OUTPUT GRID. 32 C OUTPUT ARGUMENT LIST: 33 C 34 C OUTPUT FILES: 35 C STDOUT - RUN TIME STANDARD OUT. 36 C 37 C SUBPROGRAMS CALLED: 38 C UTILITIES: 39 C NONE 40 C LIBRARY: 41 C COMMON - LLGRDS 42 C IOUNIT 43 C 44 C ATTRIBUTES: 45 C LANGUAGE: FORTRAN 46 C MACHINE : CRAY C-90 47 C$$$ 48 C 49 C 50 C INCLUDE DECLARED GRID DIMENSIONS. 51 INCLUDE "parmeta" 69 INCLUDE "parmout" 73 PARAMETER (IMJM=IM*JM-JM/2,IMT=2*IM-1,JMT=JM) 74 C 75 C DECLARE VARIABLES. 76 LOGICAL LM0N0,LM1N0,LM0N1,LM1N1 77 INTEGER IMOT,JMOT Page 2 Source Listing GENBIL 2025-03-12 18:23 GENBIL.f 78 REAL EGFUL(IMT,JMT) 79 C 80 C INCLUDE COMMON. 81 INCLUDE "LLGRDS.comm" 95 INCLUDE "IOUNIT.comm" 96 C 97 C SET TOLERANCE LIMITS. 98 C 106 DATA SPVC,SMALL /1.E20,1.E-4/ 107 C 108 C****************************************************************** 109 C START GENBIL HERE. 110 C 111 C COMPUTE INTERPOLATION WEIGHTS. 112 C 113 WRITE(STDOUT,*)'GENBIL: GENERATE BILIN WEIGHTS' 114 MAXI = IMT 115 MAXJ = JMT 116 DO 90 J = 1,JMOT 117 DO 90 I = 1,IMOT 118 XX = EGRDI(I,J) 119 YY = EGRDJ(I,J) 120 M = XX 121 N = YY 122 IEGRD(I,J) = M 123 JEGRD(I,J) = N 124 C 125 IF ( ( M.LE.0 ).OR.( N.LE.0 ) ) THEN 126 WIJ(I,J) = 0. 127 WIPJ(I,J) = 0. 128 WIJP(I,J) = 0. 129 WIPJP(I,J) = 0. 130 IWGT(I,J) = 0 131 GOTO 75 132 ENDIF 133 C 134 IF ( (XX.GT.MAXI).OR.(YY.GT.MAXJ) ) THEN 135 WIJ(I,J) = 0. 136 WIPJ(I,J) = 0. 137 WIJP(I,J) = 0. 138 WIPJP(I,J) = 0. 139 IWGT(I,J) = 0 140 GOTO 75 141 ENDIF 142 C 143 DX = (XX - M) 144 DY = (YY - N) 145 DX1 = 1.0 - DX 146 DY1 = 1.0 - DY 147 IF ( (ABS(DX ).LT.SMALL).AND.(ABS(DY ).LT.SMALL) ) THEN 148 W00 = 1. 149 W10 = 0. 150 W01 = 0. 151 W11 = 0. 152 WIJ(I,J) = W00 153 WIPJ(I,J) = W10 154 WIJP(I,J) = W01 Page 3 Source Listing GENBIL 2025-03-12 18:23 GENBIL.f 155 WIPJP(I,J) = W11 156 IWGT(I,J) = 1 157 GOTO 75 158 CX DAT = EGFUL(M,N) 159 ELSEIF ( (ABS(DX ).LT.SMALL).AND. 160 X (ABS(DY1).LT.SMALL) ) THEN 161 W00 = 0. 162 W10 = 0. 163 W01 = 1. 164 W11 = 0. 165 WIJ(I,J) = W00 166 WIPJ(I,J) = W10 167 WIJP(I,J) = W01 168 WIPJP(I,J) = W11 169 IWGT(I,J) = 1 170 GOTO 75 171 CX DAT = EGFUL(M,N+1) 172 ELSEIF ( (ABS(DX1).LT.SMALL).AND. 173 X (ABS(DY ).LT.SMALL) ) THEN 174 W00 = 0. 175 W10 = 1. 176 W01 = 0. 177 W11 = 0. 178 WIJ(I,J) = W00 179 WIPJ(I,J) = W10 180 WIJP(I,J) = W01 181 WIPJP(I,J) = W11 182 IWGT(I,J) = 1 183 GOTO 75 184 CX DAT = EGFUL(M+1,N) 185 ELSEIF ( (ABS(DX1).LT.SMALL).AND. 186 X (ABS(DY1).LT.SMALL) ) THEN 187 W00 = 0. 188 W10 = 0. 189 W01 = 0. 190 W11 = 1. 191 WIJ(I,J) = W00 192 WIPJ(I,J) = W10 193 WIJP(I,J) = W01 194 WIPJP(I,J) = W11 195 IWGT(I,J) = 1 196 GOTO 75 197 CX DAT = EGFUL(M+1,N+1) 198 END IF 199 C 200 C DONE WITH SPECIAL CASES. NOW FOR GENERAL CASES. 201 C 202 LM0N0 = (EGFUL(M ,N ).GE.SPVC) 203 LM1N0 = (EGFUL(M+1,N ).GE.SPVC) 204 LM0N1 = (EGFUL(M ,N+1).GE.SPVC) 205 LM1N1 = (EGFUL(M+1,N+1).GE.SPVC) 206 IF ( (.NOT.LM0N0).AND.(.NOT.LM1N0).AND. 207 X (.NOT.LM0N1).AND.(.NOT.LM1N1) ) THEN 208 W00 = (1.-DY)*(1.-DX) 209 W10 = (1.-DY)*DX 210 W01 = DY*(1.-DX) 211 W11 = DY*DX Page 4 Source Listing GENBIL 2025-03-12 18:23 GENBIL.f 212 WIJ(I,J) = W00 213 WIPJ(I,J) = W10 214 WIJP(I,J) = W01 215 WIPJP(I,J) = W11 216 IWGT(I,J) = 1 217 CX DAT = (1.0-DY)*((1.0-DX)*EGFUL(M,N) + 218 CX DX*EGFUL(M+1,N)) + 219 CX DY*((1.0-DX)*EGFUL(M,N+1) + 220 CX DX*EGFUL(M+1,N+1)) 221 GOTO 75 222 ELSEIF (LM0N0.AND.LM1N0.AND.LM0N1.AND.LM1N1) THEN 223 WIJ(I,J) = 0. 224 WIPJ(I,J) = 0. 225 WIJP(I,J) = 0. 226 WIPJP(I,J) = 0. 227 IWGT(I,J) = 0 228 GOTO 75 229 CX DAT = SPVAL 230 ELSE 231 IM0N0 = 1 232 IF (LM0N0) IM0N0 = 0 233 IM1N0 = 1 234 IF (LM1N0) IM1N0 = 0 235 IM0N1 = 1 236 IF (LM0N1) IM0N1 = 0 237 IM1N1 = 1 238 IF (LM1N1) IM1N1 = 0 239 RXX = ((SQRT(2.0)/4.0)*(IM0N0+IM1N0+IM0N1+IM1N1))**2 240 R00 = ( DX * DX) + ( DY * DY) 241 R10 = ((1.0-DX)*(1.0-DX)) + ( DY * DY) 242 R01 = ( DX * DX) + ((1.0-DY)*(1.0-DY)) 243 R11 = ((1.0-DX)*(1.0-DX)) + ((1.0-DY)*(1.0-DY)) 244 W00 = IM0N0 * MAX(0.0,(RXX - R00)) / (RXX + R00) 245 W10 = IM1N0 * MAX(0.0,(RXX - R10)) / (RXX + R10) 246 W01 = IM0N1 * MAX(0.0,(RXX - R01)) / (RXX + R01) 247 W11 = IM1N1 * MAX(0.0,(RXX - R11)) / (RXX + R11) 248 WSUM = W00 + W01 + W10 + W11 249 IF (WSUM .NE. 0.0) THEN 250 WIJ(I,J) = W00/WSUM 251 WIPJ(I,J) = W10/WSUM 252 WIJP(I,J) = W01/WSUM 253 WIPJP(I,J) = W11/WSUM 254 IWGT(I,J) = 1 255 GOTO 75 256 CX DAT = (W00*EGFUL(M,N)+W10*EGFUL(M+1,N) + 257 CX W01*EGFUL(M,N+1)+W11*EGFUL(M+1,N+1)) / WSUM 258 ELSE 259 WIJ(I,J) = 0. 260 WIPJ(I,J) = 0. 261 WIJP(I,J) = 0. 262 WIPJP(I,J) = 0. 263 IWGT(I,J) = 0 264 GOTO 75 265 CX DAT = SPVAL 266 END IF 267 END IF 268 WRITE(STDOUT,*)'GENWGT: SHOULD NOT REACH THIS LINE' Page 5 Source Listing GENBIL 2025-03-12 18:23 GENBIL.f 269 75 CONTINUE 270 90 CONTINUE 271 C 272 C END OF ROUTINE. 273 C 274 RETURN 275 END ENTRY POINTS Name genbil_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 75 Label 269 131,140,157,170,183,196,221,228,25 5,264 90 Label 270 116,117 ABS Func 147 scalar 147,159,160,172,173,185,186 DX Local 143 R(4) 4 scalar 143,145,147,159,208,209,210,211,24 0,241,242,243 DX1 Local 145 R(4) 4 scalar 145,172,185 DY Local 144 R(4) 4 scalar 144,146,147,173,208,209,210,211,24 0,241,242,243 DY1 Local 146 R(4) 4 scalar 146,160,186 EGFUL Dummy 1 R(4) 4 2 183051 ARG,INOUT 202,203,204,205 GENBIL Subr 1 I Local 117 I(4) 4 scalar 117,118,119,122,123,126,127,128,12 9,130,135,136,137,138,139,152,153, 154,155,156,165,166,167,168,169,17 8,179,180,181,182,191,192,193,194, 195,212,213,214,215,216,223,224,22 5,226,227,250,251,252,253,254,259, 260,261,262,263 IDIM1 Param 65 I(4) 4 scalar IDIM2 Param 65 I(4) 4 scalar IGSTL Param 60 I(4) 4 scalar 65 IGSTR Param 60 I(4) 4 scalar 65 IM Param 54 I(4) 4 scalar 62,65,72,73,86,87,88 IM0N0 Local 231 I(4) 4 scalar 231,232,239,244 IM0N1 Local 235 I(4) 4 scalar 235,236,239,246 IM1N0 Local 233 I(4) 4 scalar 233,234,239,245 IM1N1 Local 237 I(4) 4 scalar 237,238,239,247 IMJM Param 73 I(4) 4 scalar IMOT Dummy 1 I(4) 4 scalar ARG,INOUT 117 IMT Param 73 I(4) 4 scalar 78,88,89,114 IMX Param 72 I(4) 4 scalar 84,85,90,91,92,93 INPES Param 57 I(4) 4 scalar 62,65 IOUNIT Common 102 20 SAVE ITAIL Param 62 I(4) 4 scalar J Local 116 I(4) 4 scalar 116,118,119,122,123,126,127,128,12 9,130,135,136,137,138,139,152,153, Page 6 Source Listing GENBIL 2025-03-12 18:23 Symbol Table GENBIL.f Name Object Declared Type Bytes Dimen Elements Attributes References 154,155,156,165,166,167,168,169,17 8,179,180,181,182,191,192,193,194, 195,212,213,214,215,216,223,224,22 5,226,227,250,251,252,253,254,259, 260,261,262,263 JDIM1 Param 66 I(4) 4 scalar JDIM2 Param 66 I(4) 4 scalar JGSTL Param 61 I(4) 4 scalar 66 JGSTR Param 61 I(4) 4 scalar 66 JM Param 54 I(4) 4 scalar 63,66,72,73,86,87,88 JMOT Dummy 1 I(4) 4 scalar ARG,INOUT 116 JMT Param 73 I(4) 4 scalar 78,88,89,115 JMX Param 72 I(4) 4 scalar 84,85,90,91,92,93 JNPES Param 57 I(4) 4 scalar 63,66 JTAIL Param 63 I(4) 4 scalar LLGRDS Common 83 9167256 SAVE LM Param 54 I(4) 4 scalar 72 LM0N0 Local 76 L(4) 4 scalar 202,206,222,232 LM0N1 Local 76 L(4) 4 scalar 204,207,222,236 LM1N0 Local 76 L(4) 4 scalar 203,206,222,234 LM1N1 Local 76 L(4) 4 scalar 205,207,222,238 LSM Param 54 I(4) 4 scalar M Local 120 I(4) 4 scalar 120,122,125,143,202,203,204,205 MAX Func 244 scalar 244,245,246,247 MAXI Local 114 I(4) 4 scalar 114,134 MAXJ Local 115 I(4) 4 scalar 115,134 MXFLD Param 72 I(4) 4 scalar MXLVL Param 72 I(4) 4 scalar N Local 121 I(4) 4 scalar 121,123,125,144,202,203,204,205 R00 Local 240 R(4) 4 scalar 240,244 R01 Local 242 R(4) 4 scalar 242,246 R10 Local 241 R(4) 4 scalar 241,245 R11 Local 243 R(4) 4 scalar 243,247 RXX Local 239 R(4) 4 scalar 239,244,245,246,247 SMALL Local 106 R(4) 4 scalar 106,147,159,160,172,173,185,186 SPVC Local 106 R(4) 4 scalar 106,202,203,204,205 SQRT Func 239 scalar 239 W00 Local 148 R(4) 4 scalar 148,152,161,165,174,178,187,191,20 8,212,244,248,250 W01 Local 150 R(4) 4 scalar 150,154,163,167,176,180,189,193,21 0,214,246,248,252 W10 Local 149 R(4) 4 scalar 149,153,162,166,175,179,188,192,20 9,213,245,248,251 W11 Local 151 R(4) 4 scalar 151,155,164,168,177,181,190,194,21 1,215,247,248,253 WSUM Local 248 R(4) 4 scalar 248,249,250,251,252,253 XX Local 118 R(4) 4 scalar 118,120,134,143 YY Local 119 R(4) 4 scalar 119,121,134,144 Page 7 Source Listing GENBIL 2025-03-12 18:23 Symbol Table GENBIL.f TYPE COMPONENTS/COMMON VARIABLES Name Type Bytes Offset Dimen Elements Attributes References EGRDI R(4) 4 5865372 2 91719 COM 118 EGRDJ R(4) 4 6232248 2 91719 COM 119 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 GDTLON R(4) 4 1100628 2 91719 COM HTLAT R(4) 4 1467504 2 91719 COM HTLON R(4) 4 1834380 2 91719 COM IEGRD I(4) 4 6599124 2 91719 COM 122 IEGRDK I(4) 4 2201256 2 91719 COM IWGT I(4) 4 7332876 2 91719 COM 130,139,156,169,182,195,216,227,25 4,263 JEGRD I(4) 4 6966000 2 91719 COM 123 JEGRDK I(4) 4 2568132 2 91719 COM 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 113,268 VTLAT R(4) 4 2935008 2 91719 COM VTLON R(4) 4 3301884 2 91719 COM WIJ R(4) 4 7699752 2 91719 COM 126,135,152,165,178,191,212,223,25 0,259 WIJP R(4) 4 8433504 2 91719 COM 128,137,154,167,180,193,214,225,25 2,261 WIPJ R(4) 4 8066628 2 91719 COM 127,136,153,166,179,192,213,224,25 1,260 WIPJP R(4) 4 8800380 2 91719 COM 129,138,155,168,181,194,215,226,25 3,262 Page 8 Source Listing GENBIL 2025-03-12 18:23 Subprograms/Common Blocks GENBIL.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References GENBIL Subr 1 IOUNIT Common 102 20 SAVE LLGRDS Common 83 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 9 Source Listing GENBIL 2025-03-12 18:23 GENBIL.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 10 Source Listing GENBIL 2025-03-12 18:23 GENBIL.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 : GENBIL.lst no -o COMPILER: Intel(R) Fortran 19.1-1655