Page 1 Source Listing GENLL 2025-03-12 18:23 GENLL.f 1 SUBROUTINE GENLL(GDLAT,GDLON) 2 C 3 C$$$ SUBPROGRAM DOCUMENTATION BLOCK 4 C . . . 5 C SUBPROGRAM: GENLL COMPUTE (LAT,LON) FOR OUTPUT GRID 6 C PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-23 7 C 8 C ABSTRACT: 9 C GIVEN THE STANDARD NMC GRID SPECIFICATIONS THIS ROUTINE 10 C COMPUTES THE GEODETIC (LAT,LON) OF THE GRID POINTS. 11 C . 12 C 13 C PROGRAM HISTORY LOG: 14 C ??-??-?? DAVID PLUMMER - SUBROUTINE CGTLL IN ETAPACKC 15 C 93-02-26 RUSS TREADON - EXTRACTED THIS CODE FROM CGTLL 16 C AND GENERALIZED TO HANDLE 17 C VARIOUS OUTPUT GRIDS. 18 C 93-06-13 RUSS TREADON - ADDED LOLA PROJECTION. 19 C 20 C USAGE: CALL GENLL(GDLAT,GDLON) 21 C INPUT ARGUMENT LIST: 22 C NONE 23 C 24 C OUTPUT ARGUMENT LIST: 25 C GDLAT - GEODETIC LATITUDE OF OUTPUT GRID POINTS. 26 C GDLON - GEODETIC LONGITUDE OF OUTPUT GRID POINTS. 27 C 28 C OUTPUT FILES: 29 C NONE 30 C 31 C SUBPROGRAMS CALLED: 32 C UTILITIES: 33 C NONE 34 C LIBRARY: 35 C COMMON - OUTGRD 36 C 37 C ATTRIBUTES: 38 C LANGUAGE: FORTRAN 39 C MACHINE : CRAY C-90 40 C$$$ 41 C 42 C 43 C INCLUDE/SET PARAMETERS. 44 C 45 INCLUDE "parmeta" 63 INCLUDE "parmout" 64 C 65 C DECLARE VARIABLES. 66 C 70 LOGICAL NORTH 71 CHARACTER*6 PROJ 72 REAL LAMBDA 73 REAL GDLAT(IMX,JMX), GDLON(IMX,JMX) 74 C 75 C INCLUDE OUTPUT GRID COMMON BLOCK. 76 INCLUDE "OUTGRD.comm" 77 C Page 2 Source Listing GENLL 2025-03-12 18:23 GENLL.f 78 C SET EARTH RADIUS. 83 DATA EARTHR /6371.2/ 84 C 85 C********************************************************************* 86 C START GENLL HERE. 87 C 88 C SET CONSTANTS. 89 PI = ACOS(-1.) 90 HALFPI = PI/2. 91 TWOPI = 2.*PI 92 D2R = PI/180. 93 R2D = 1./D2R 94 C 95 C CASE 1: POLAR STEROGRAPHIC PROJECTION. 96 C 97 IF (INDEX(PROJ,'POLA').NE.0) THEN 98 C 99 C COMPUTE GEODETIC (LAT,LON) FOR OUTPUT GRID. 100 DO 20 J = 1,JGOUT 101 DO 10 I = 1,IGOUT 102 XI = REAL(I) 103 YJ = REAL(J) 104 DELX = XI-POLEI 105 DELY = YJ-POLEJ 106 R2 = DELX*DELX+DELY*DELY 107 C 108 C VARIABLES YLAT AND WLON ARE THE GEODETIC 109 C LATITUDE (POSITIVE NORTH) AND LONGITUDE 110 C (POSITIVE WEST) OF THE OUTPUT GRID POINTS. 111 C 112 IF (R2.NE.0.) THEN 113 TLON = R2D*ATAN2(DELY,DELX) 114 IF (NORTH) THEN 115 WLON = ALONVT-90.-TLON 116 YLAT = ASIN((GI2-R2)/(GI2+R2))*R2D 117 ELSE 118 WLON = ALONVT+90.+TLON 119 YLAT = -ASIN((GI2-R2)/(GI2+R2))*R2D 120 ENDIF 121 IF (WLON.GT.360.) WLON = WLON-360. 122 IF (WLON.LT.0.) WLON = WLON+360. 123 ELSE 124 YLAT = 90. 125 IF (.NOT.NORTH) YLAT = -90. 126 WLON = ALONVT 127 ENDIF 128 GDLAT(I,J) = YLAT 129 GDLON(I,J) = WLON 130 10 CONTINUE 131 20 CONTINUE 132 C 133 C CASE II: LATITUDE-LONGITUDE PROJECTION. 134 C 135 ELSEIF (INDEX(PROJ,'LOLA').NE.0) THEN 136 SWLAT = ALONVT 137 SWLON = POLEJ 138 DO 40 J = 1,JGOUT Page 3 Source Listing GENLL 2025-03-12 18:23 GENLL.f 139 DLAT = (J-1)*POLEI 140 DO 30 I = 1,IGOUT 141 DLON = (I-1)*XMESHL 142 GDLAT(I,J) = SWLAT + DLAT 143 GDLON(I,J) = SWLON - DLON 144 30 CONTINUE 145 40 CONTINUE 146 C 147 C CASE III: LAMBERT CONFORMAL (TANGENT) PROJECTION). 148 C 149 ELSEIF (INDEX(PROJ,'LMBC').NE.0) THEN 150 C 151 C CONVERT WEST LONGITUDE TO EAST. 152 POLEJE = -1.*POLEJ 153 ALONVTE = -1.*ALONVT 154 C 155 C COMPUTE TANGENT CONE CONSTANT AND FACTOR A. 156 PSIT = HALFPI - ABS(ALATVT*D2R) 157 CONE = COS(PSIT) 158 A = EARTHR/CONE 159 C 160 C COMPUTE LINEAR COORDINATES CORRESPONDING TO 161 C GRIDPOINT (1,1)=(POLEI,POLEJE). 162 PHI = POLEI*D2R 163 LAMBDA = POLEJE*D2R 164 IF (NORTH) THEN 165 PSI = HALFPI - PHI 166 ELSE 167 PSI = HALFPI + PHI 168 ENDIF 169 TERMA = PSI/2. 170 TERMB = CONE*(LAMBDA-ALONVTE*D2R) 171 X1 = A * TAN(TERMA)**CONE * SIN(TERMB) 172 Y1 = A * TAN(TERMA)**CONE * COS(TERMB) 173 IF (NORTH) Y1 = -1. * Y1 174 C 175 C LOOP TO COMPUTE GEODETIC (LAT,LON). 176 ALPHA = (TAN(PSIT/2.)**CONE) / SIN(PSIT) 177 DO 60 J = 1,JGOUT 178 DO 50 I = 1,IGOUT 179 X = X1 + (I-1)*ALPHA*XMESHL 180 Y = Y1 + (J-1)*ALPHA*XMESHL 181 C 182 TERM = (SQRT(X*X+Y*Y)/A)**(1./CONE) 183 GPHI = HALFPI - 2.*ATAN(TERM) 184 C 185 IF (.NOT.NORTH) GPHI = -1.*GPHI 186 IF (NORTH) THEN 187 GTHETA = ATAN2(X,-1.*Y) 188 ELSE 189 GTHETA = ATAN2(X,Y) 190 ENDIF 191 C 192 GLAM = ALONVTE*D2R + GTHETA/CONE 193 IF (GLAM.GT.PI) GLAM = GLAM - TWOPI 194 IF (GLAM.LT.-PI) GLAM = GLAM + TWOPI 195 C Page 4 Source Listing GENLL 2025-03-12 18:23 GENLL.f 196 GDLAT(I,J) = GPHI*R2D 197 GDLON(I,J) = ABS(GLAM*R2D) 198 C 199 50 CONTINUE 200 60 CONTINUE 201 C 202 C CASE IV: ETA PROJECTION (TRANSFORMED LAT-LON). 203 C (DO NOTHING HERE, SINCE THE MODEL PROVIDES GDLAT,GDLON.) 204 C 205 ENDIF 206 C 207 C END OF ROUTINE. 208 C 209 RETURN 210 END ENTRY POINTS Name genll_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 10 Label 130 101 20 Label 131 100 30 Label 144 140 40 Label 145 138 50 Label 199 178 60 Label 200 177 A Local 158 R(4) 4 scalar 158,171,172,182 ABS Func 156 scalar 156,197 ACOS Func 89 scalar 89 ALONVTE Local 153 R(4) 4 scalar 153,170,192 ALPHA Local 176 R(4) 4 scalar 176,179,180 ASIN Func 116 scalar 116,119 ATAN Func 183 scalar 183 ATAN2 Func 113 scalar 113,187,189 CONE Local 157 R(4) 4 scalar 157,158,170,171,172,176,182,192 COS Func 157 scalar 157,172 D2R Local 92 R(4) 4 scalar 92,93,156,162,163,170,192 DELX Local 104 R(4) 4 scalar 104,106,113 DELY Local 105 R(4) 4 scalar 105,106,113 DLAT Local 139 R(4) 4 scalar 139,142 DLON Local 141 R(4) 4 scalar 141,143 EARTHR Local 83 R(4) 4 scalar 83,158 GDLAT Dummy 1 R(4) 4 2 91719 ARG,INOUT 128,142,196 GDLON Dummy 1 R(4) 4 2 91719 ARG,INOUT 129,143,197 GENLL Subr 1 GLAM Local 192 R(4) 4 scalar 192,193,194,197 GPHI Local 183 R(4) 4 scalar 183,185,196 GTHETA Local 187 R(4) 4 scalar 187,189,192 HALFPI Local 90 R(4) 4 scalar 90,156,165,167,183 Page 5 Source Listing GENLL 2025-03-12 18:23 Symbol Table GENLL.f Name Object Declared Type Bytes Dimen Elements Attributes References I Local 101 I(4) 4 scalar 101,102,128,129,140,141,142,143,17 8,179,196,197 IDIM1 Param 59 I(4) 4 scalar IDIM2 Param 59 I(4) 4 scalar IGSTL Param 54 I(4) 4 scalar 59 IGSTR Param 54 I(4) 4 scalar 59 IM Param 48 I(4) 4 scalar 56,59,69 IMX Param 69 I(4) 4 scalar 73 INDEX Func 97 scalar 97,135,149 INPES Param 51 I(4) 4 scalar 56,59 ITAIL Param 56 I(4) 4 scalar J Local 100 I(4) 4 scalar 100,103,128,129,138,139,142,143,17 7,180,196,197 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 JM Param 48 I(4) 4 scalar 57,60,69 JMX Param 69 I(4) 4 scalar 73 JNPES Param 51 I(4) 4 scalar 57,60 JTAIL Param 57 I(4) 4 scalar LAMBDA Local 72 R(4) 4 scalar 163,170 LM Param 48 I(4) 4 scalar 69 LSM Param 48 I(4) 4 scalar MXFLD Param 69 I(4) 4 scalar MXLVL Param 69 I(4) 4 scalar OUTGRD Common 80 50 SAVE PHI Local 162 R(4) 4 scalar 162,165,167 PI Local 89 R(4) 4 scalar 89,90,91,92,193,194 POLEJE Local 152 R(4) 4 scalar 152,163 PSI Local 165 R(4) 4 scalar 165,167,169 PSIT Local 156 R(4) 4 scalar 156,157,176 R2 Local 106 R(4) 4 scalar 106,112,116,119 R2D Local 93 R(4) 4 scalar 93,113,116,119,196,197 REAL Func 102 scalar 102,103 SIN Func 171 scalar 171,176 SQRT Func 182 scalar 182 SWLAT Local 136 R(4) 4 scalar 136,142 SWLON Local 137 R(4) 4 scalar 137,143 TAN Func 171 scalar 171,172,176 TERM Local 182 R(4) 4 scalar 182,183 TERMA Local 169 R(4) 4 scalar 169,171,172 TERMB Local 170 R(4) 4 scalar 170,171,172 TLON Local 113 R(4) 4 scalar 113,115,118 TWOPI Local 91 R(4) 4 scalar 91,193,194 WLON Local 115 R(4) 4 scalar 115,118,121,122,126,129 X Local 179 R(4) 4 scalar 179,182,187,189 X1 Local 171 R(4) 4 scalar 171,179 XI Local 102 R(4) 4 scalar 102,104 Y Local 180 R(4) 4 scalar 180,182,187,189 Y1 Local 172 R(4) 4 scalar 172,173,180 YJ Local 103 R(4) 4 scalar 103,105 YLAT Local 116 R(4) 4 scalar 116,119,124,125,128 Page 6 Source Listing GENLL 2025-03-12 18:23 Symbol Table GENLL.f TYPE COMPONENTS/COMMON VARIABLES Name Type Bytes Offset Dimen Elements Attributes References ALATVT R(4) 4 0 scalar COM 156 ALONVT R(4) 4 4 scalar COM 115,118,126,136,153 GI2 R(4) 4 36 scalar COM 116,119 IGOUT I(4) 4 20 scalar COM 101,140,178 IMDLTY I(4) 4 28 scalar COM JGOUT I(4) 4 24 scalar COM 100,138,177 NORTH L(4) 4 40 scalar COM 114,125,164,173,185,186 POLEI R(4) 4 8 scalar COM 104,139,162 POLEJ R(4) 4 12 scalar COM 105,137,152 PROJ CHAR 6 44 scalar COM 97,135,149 RE R(4) 4 32 scalar COM XMESHL R(4) 4 16 scalar COM 141,179,180 Page 7 Source Listing GENLL 2025-03-12 18:23 Subprograms/Common Blocks GENLL.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References GENLL Subr 1 OUTGRD Common 80 50 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__ -D __amd64 -D __amd64__ Page 8 Source Listing GENLL 2025-03-12 18:23 GENLL.f -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 9 Source Listing GENLL 2025-03-12 18:23 GENLL.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 : GENLL.lst no -o COMPILER: Intel(R) Fortran 19.1-1655