Page 1 Source Listing GENLL 2014-12-17 20:48 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 2014-12-17 20:48 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 2014-12-17 20:48 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 2014-12-17 20:48 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 106 77 20 Label 107 76 30 Label 120 116 40 Label 121 114 50 Label 175 154 60 Label 176 153 A Local 134 R(4) 4 scalar 134,147,148,158 ABS Func 132 scalar 132,173 ACOS Func 65 scalar 65 ALATVT Scalar 2 R(4) 4 scalar COM 132 ALONVT Scalar 2 R(4) 4 scalar COM 91,94,102,112,129 ALONVTE Local 129 R(4) 4 scalar 129,146,168 ALPHA Local 152 R(4) 4 scalar 152,155,156 ASIN Func 92 scalar 92,95 ATAN Func 159 scalar 159 ATAN2 Func 89 scalar 89,163,165 CONE Local 133 R(4) 4 scalar 133,134,146,147,148,152,158,168 COS Func 133 scalar 133,148 D2R Local 68 R(4) 4 scalar 68,69,132,138,139,146,168 DELX Local 80 R(4) 4 scalar 80,82,89 DELY Local 81 R(4) 4 scalar 81,82,89 DLAT Local 115 R(4) 4 scalar 115,118 DLON Local 117 R(4) 4 scalar 117,119 EARTHR Local 59 R(4) 4 scalar 59,134 GDLAT Dummy 1 R(4) 4 2 91719 ARG,INOUT 104,118,172 GDLON Dummy 1 R(4) 4 2 91719 ARG,INOUT 105,119,173 GENLL Subr 1 GI2 Scalar 3 R(4) 4 scalar COM 92,95 GLAM Local 168 R(4) 4 scalar 168,169,170,173 Page 5 Source Listing GENLL 2014-12-17 20:48 Symbol Table GENLL.f Name Object Declared Type Bytes Dimen Elements Attributes References GPHI Local 159 R(4) 4 scalar 159,161,172 GTHETA Local 163 R(4) 4 scalar 163,165,168 HALFPI Local 66 R(4) 4 scalar 66,132,141,143,159 I Local 77 I(4) 4 scalar 77,78,104,105,116,117,118,119,154, 155,172,173 IDIM1 Param 14 I(4) 4 scalar IDIM2 Param 14 I(4) 4 scalar IGOUT Scalar 3 I(4) 4 scalar COM 77,116,154 IGSTL Param 9 I(4) 4 scalar 14 IGSTR Param 9 I(4) 4 scalar 14 IM Param 3 I(4) 4 scalar 3,11,14 IMDLTY Scalar 3 I(4) 4 scalar COM IMX Param 3 I(4) 4 scalar 53 INDEX Func 73 scalar 73,111,125 INPES Param 6 I(4) 4 scalar 11,14 ITAIL Param 11 I(4) 4 scalar J Local 76 I(4) 4 scalar 76,79,104,105,114,115,118,119,153, 156,172,173 JDIM1 Param 15 I(4) 4 scalar JDIM2 Param 15 I(4) 4 scalar JGOUT Scalar 3 I(4) 4 scalar COM 76,114,153 JGSTL Param 10 I(4) 4 scalar 15 JGSTR Param 10 I(4) 4 scalar 15 JM Param 3 I(4) 4 scalar 3,12,15 JMX Param 3 I(4) 4 scalar 53 JNPES Param 6 I(4) 4 scalar 12,15 JTAIL Param 12 I(4) 4 scalar LAMBDA Local 52 R(4) 4 scalar 139,146 LM Param 3 I(4) 4 scalar 3 LSM Param 3 I(4) 4 scalar MXFLD Param 3 I(4) 4 scalar MXLVL Param 3 I(4) 4 scalar NORTH Scalar 50 L(4) 4 scalar COM 90,101,140,149,161,162 OUTGRD Common 2 50 PHI Local 138 R(4) 4 scalar 138,141,143 PI Local 65 R(4) 4 scalar 65,66,67,68,169,170 POLEI Scalar 2 R(4) 4 scalar COM 80,115,138 POLEJ Scalar 2 R(4) 4 scalar COM 81,113,128 POLEJE Local 128 R(4) 4 scalar 128,139 PROJ Scalar 51 CHAR 6 scalar COM 73,111,125 PSI Local 141 R(4) 4 scalar 141,143,145 PSIT Local 132 R(4) 4 scalar 132,133,152 R2 Local 82 R(4) 4 scalar 82,88,92,95 R2D Local 69 R(4) 4 scalar 69,89,92,95,172,173 RE Scalar 3 R(4) 4 scalar COM REAL Func 78 scalar 78,79 SIN Func 147 scalar 147,152 SQRT Func 158 scalar 158 SWLAT Local 112 R(4) 4 scalar 112,118 SWLON Local 113 R(4) 4 scalar 113,119 TAN Func 147 scalar 147,148,152 TERM Local 158 R(4) 4 scalar 158,159 TERMA Local 145 R(4) 4 scalar 145,147,148 TERMB Local 146 R(4) 4 scalar 146,147,148 TLON Local 89 R(4) 4 scalar 89,91,94 Page 6 Source Listing GENLL 2014-12-17 20:48 Symbol Table GENLL.f Name Object Declared Type Bytes Dimen Elements Attributes References TWOPI Local 67 R(4) 4 scalar 67,169,170 WLON Local 91 R(4) 4 scalar 91,94,97,98,102,105 X Local 155 R(4) 4 scalar 155,158,163,165 X1 Local 147 R(4) 4 scalar 147,155 XI Local 78 R(4) 4 scalar 78,80 XMESHL Scalar 2 R(4) 4 scalar COM 117,155,156 Y Local 156 R(4) 4 scalar 156,158,163,165 Y1 Local 148 R(4) 4 scalar 148,149,156 YJ Local 79 R(4) 4 scalar 79,81 YLAT Local 92 R(4) 4 scalar 92,95,100,101,104 Page 7 Source Listing GENLL 2014-12-17 20:48 Subprograms/Common Blocks GENLL.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References GENLL Subr 1 OUTGRD Common 2 50 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 -fixed no -fpconstant Page 8 Source Listing GENLL 2014-12-17 20:48 GENLL.f -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 : GENLL.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100