*IF DEF,W01_1A WVV0F401.1 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.15592 C GTS2F400.15593 C Use, duplication or disclosure of this code is subject to the GTS2F400.15594 C restrictions as set forth in the contract. GTS2F400.15595 C GTS2F400.15596 C Meteorological Office GTS2F400.15597 C London Road GTS2F400.15598 C BRACKNELL GTS2F400.15599 C Berkshire UK GTS2F400.15600 C RG12 2SZ GTS2F400.15601 C GTS2F400.15602 C If no contract has been raised with this copy of the code, the use, GTS2F400.15603 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.15604 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.15605 C Modelling at the above address. GTS2F400.15606 C ******************************COPYRIGHT****************************** GTS2F400.15607 C GTS2F400.15608 PROPAGS.3SUBROUTINE PROPAGS (F1, F3, IG, irefra, ishallo, idelpro, 1PROPAGS.4 *CALL ARGWVAL
PROPAGS.5 *CALL ARGWVFD
PROPAGS.6 *CALL ARGWVGD
PROPAGS.7 *CALL ARGWVMP
PROPAGS.8 *CALL ARGWVRF
PROPAGS.9 *CALL ARGWVSH
PROPAGS.10 *CALL ARGWVCU
PROPAGS.11 *CALL ARGWVKL
PROPAGS.12 *CALL ARGWVP2
PROPAGS.13 & icode) PROPAGS.14 PROPAGS.15 *CALL PARWVSH
PROPAGS.16 *CALL PARCONS
PROPAGS.17 PROPAGS.18 *CALL TYPWVFD
PROPAGS.19 *CALL TYPWVGD
PROPAGS.20 *CALL TYPWVMP
PROPAGS.21 *CALL TYPWVRF
PROPAGS.22 *CALL TYPWVSH
PROPAGS.23 *CALL TYPWVCU
PROPAGS.24 *CALL TYPWVKL
PROPAGS.25 *CALL TYPWVP2
PROPAGS.26 *CALL TYPWVAL
PROPAGS.27 PROPAGS.28 C ---------------------------------------------------------------------- PROPAGS.29 C PROPAGS.30 C**** *PROPAGS* - COMPUTATION OF A PROPAGATION TIME STEP. PROPAGS.31 C PROPAGS.32 C S.D. HASSELMANN. PROPAGS.33 C OPTIMIZED BY: L. ZAMBRESKY AND H. GUENTHER PROPAGS.34 C PROPAGS.35 C MODIFIED BY H. GUNTHER 01/06/90 - LAND POINTS ARE TAKEN PROPAGS.36 C OUT OF BLOCKS AND REFRACTION INTEGRATION PROPAGS.37 C CORRECTED FOR N-S AND S-N PROPAGATION. PROPAGS.38 C PROPAGS.39 C K.P. HUBBERT /07/89 - DEPTH AND CURRENT PROPAGS.40 C S. HASSELMANN MPIFM /04/90 REFRACTION SHALLOW PROPAGS.41 C PROPAGS.42 C H. GUNTHER GKSS/ECMWF 17/01/91 - MODIFIED FOR CYCLE_4 PROPAGS.43 C PROPAGS.44 C* PURPOSE. PROPAGS.45 C -------- PROPAGS.46 C PROPAGS.47 C COMPUTATION OF A PROPAGATION TIME STEP. PROPAGS.48 C PROPAGS.49 C** INTERFACE. PROPAGS.50 C ---------- PROPAGS.51 C PROPAGS.52 C *CALL* *PROPAGS(F1, F3, IG)* PROPAGS.53 C *F1* - SPECTRUM AT TIME T. PROPAGS.54 C *F3* - SPECTRUM AT TIME T+DELT. PROPAGS.55 C *IG* - BLOCK NUMBER. PROPAGS.56 C PROPAGS.57 C METHOD. PROPAGS.58 C ------- PROPAGS.59 C PROPAGS.60 C FIRST ORDER FLUX SCHEME. PROPAGS.61 C PROPAGS.62 C EXTERNALS. PROPAGS.63 C ---------- PROPAGS.64 C PROPAGS.65 C *DOTDC* - READ DOT TERMS FOR REFRACTION AND SCATTER TABLE. PROPAGS.66 C PROPAGS.67 C REFERENCE. PROPAGS.68 C ---------- PROPAGS.69 C PROPAGS.70 C NONE. PROPAGS.71 C PROPAGS.72 C ---------------------------------------------------------------------- PROPAGS.73 C local arrays PROPAGS.74 c PROPAGS.75 DIMENSION F1(0:NIBLO,NANG,NFRE), F3(0:NIBLO,NANG,NFRE) PROPAGS.76 PROPAGS.77 DIMENSION DCO(NIBLO), DP1(NIBLO), DP2(NIBLO) PROPAGS.78 DIMENSION DPN(NIBLO), DPS(NIBLO), DPH(0:NIBLO) PROPAGS.79 DIMENSION DLE(NIBLO), DLW(NIBLO), DLA(0:NIBLO) PROPAGS.80 DIMENSION DOP(NIBLC), DOM(NIBLC) PROPAGS.81 DIMENSION DTP(NIBLO), DTM(NIBLO), DRGP(NIBLO), DRGM(NIBLO), PROPAGS.82 1 DRDP(NIBLD), DRDM(NIBLD), DRCP(NIBLC), DRCM(NIBLC) PROPAGS.83 DIMENSION DTC(NIBLO), CGOND(0:NIBLO) PROPAGS.84 PROPAGS.85 real fconst(nibld,nfre) PROPAGS.86 C PROPAGS.87 C ---------------------------------------------------------------------- PROPAGS.88 C PROPAGS.89 c initialise diagnostics array for this block PROPAGS.90 c PROPAGS.91 do i=1,len_p2 PROPAGS.92 sadv2(i)=0. PROPAGS.93 enddo PROPAGS.94 PROPAGS.95 C* 0. SPECTRUM AT LAND TO ZERO. PROPAGS.96 C ------------------------- PROPAGS.97 C PROPAGS.98 DO 1 M=1,NFRE PROPAGS.99 DO 1 K=1,NANG PROPAGS.100 F3(0,K,M) = 0. PROPAGS.101 F1(0,K,M) = 0. WVV0F401.2 1 CONTINUE PROPAGS.102 CGOND(0) = 0.0 WVV0F401.3 DPH(0) = 0.0 WVV0F401.4 DLA(0) = 0.0 WVV0F401.5 C PROPAGS.103 C* 0.1 READ REFRACTION DOT TERMS. PROPAGS.104 C -------------------------- PROPAGS.105 C PROPAGS.106 c call to dotdc deleted from here. PROPAGS.107 c replaced with arrays held in memory calculated in propdot PROPAGS.108 CCUM PROPAGS.109 cc array thdd is already filled for all blocks in setupwv / propdot PROPAGS.110 cc this following bit of code copied out from dotdc PROPAGS.111 cc PROPAGS.112 cc array indep is filled in wamodel for each block PROPAGS.113 cc and is carried in common argwvsh PROPAGS.114 cc PROPAGS.115 cc WAM use of FCONST is a memory saving trick as FCONST is used PROPAGS.116 cc elsewhere for a different role. The array is redefined in UM wam PROPAGS.117 cc as a local array in this routine and reference to ARGWVSR removed PROPAGS.118 cc from propags argument list PROPAGS.119 ccUM PROPAGS.120 if(irefra.ne.0) then PROPAGS.121 if(ishallo.ne.1) then PROPAGS.122 DO M=1,NFRE PROPAGS.123 DO IJ=IJS(ig),IJL(ig) PROPAGS.124 FCONST(IJ,M) = TSIHKD(INDEP(IJ),M) PROPAGS.125 ENDDO PROPAGS.126 ENDDO PROPAGS.127 endif PROPAGS.128 endif PROPAGS.129 C PROPAGS.130 C* 0.2 SPHERICAL OR CARTESIAN GRID? PROPAGS.131 C ---------------------------- PROPAGS.132 C PROPAGS.133 IF (ICASE.EQ.1) THEN PROPAGS.134 C PROPAGS.135 C* 0.2.1 SPHERICAL GRID. PROPAGS.136 C --------------- PROPAGS.137 C PROPAGS.138 C* 0.2.1.1 COSINE OF LATITUDE. PROPAGS.139 C ------------------- PROPAGS.140 C PROPAGS.141 DO 211 IJ = 1,IJLT(IG) PROPAGS.142 JH = KXLT(IJ,IG) PROPAGS.143 DCO(IJ) = 1./COSPH(JH) PROPAGS.144 211 CONTINUE PROPAGS.145 C PROPAGS.146 C* 0.2.1.2 COMPUTE COS PHI FACTOR FOR ADJOINING GRID POINT. PROPAGS.147 C ------------------------------------------------ PROPAGS.148 C PROPAGS.149 DO 212 IJ = IJS(IG),IJL(IG) PROPAGS.150 JH = KLAT(IJ,1,ig) PROPAGS.151 IF (JH.LE.0) THEN PROPAGS.152 DP1(IJ) = 1. PROPAGS.153 ELSE PROPAGS.154 DP1(IJ) = DCO(IJ)/DCO(JH) PROPAGS.155 ENDIF PROPAGS.156 JH = KLAT(IJ,2,ig) PROPAGS.157 IF (JH.LE.0) THEN PROPAGS.158 DP2(IJ) = 1. PROPAGS.159 ELSE PROPAGS.160 DP2(IJ) = DCO(IJ)/DCO(JH) PROPAGS.161 ENDIF PROPAGS.162 212 CONTINUE PROPAGS.163 IF (IREFRA.NE.2) THEN PROPAGS.164 C PROPAGS.165 C* BRANCH TO 3. IF WITHOUT REFRACTION OR DEPTH. PROPAGS.166 C -------------------------------------------- PROPAGS.167 C PROPAGS.168 GOTO 3000 PROPAGS.169 ELSE PROPAGS.170 C PROPAGS.171 C* BRANCH TO 4. IF DEPTH AND CURRENT REFRACTION. PROPAGS.172 C --------------------------------------------- PROPAGS.173 C PROPAGS.174 GOTO 4000 PROPAGS.175 ENDIF PROPAGS.176 ELSE PROPAGS.177 C PROPAGS.178 C* 0.2.2 CARTESIAN GRID. PROPAGS.179 C --------------- PROPAGS.180 C PROPAGS.181 C* 0.2.2.1 BRANCH TO 2. IF DEPTH AND CURRENT REFRACTION. PROPAGS.182 C --------------------------------------------- PROPAGS.183 C PROPAGS.184 IF (IREFRA.EQ.2) GOTO 2000 PROPAGS.185 ENDIF PROPAGS.186 C PROPAGS.187 C ---------------------------------------------------------------------- PROPAGS.188 C PROPAGS.189 C* 1. PROPAGATION FOR CARTESIAN GRID PROPAGS.190 C* WITHOUT REFRACTION OR DEPTH REFRATION. PROPAGS.191 C -------------------------------------- PROPAGS.192 C PROPAGS.193 1000 CONTINUE PROPAGS.194 C PROPAGS.195 DELPRO = FLOAT(IDELPRO) PROPAGS.196 DELPH0 = DELPRO/DELPHI PROPAGS.197 DELLA0 = DELPRO/DELLAM PROPAGS.198 DELTH0 = 0.25*DELPRO/DELTH PROPAGS.199 C PROPAGS.200 C* 1.1 LOOP OVER DIRECTIONS. PROPAGS.201 C --------------------- PROPAGS.202 C PROPAGS.203 DO 1100 K=1,NANG PROPAGS.204 SD = SINTH(K)*DELLA0 PROPAGS.205 CD = COSTH(K)*DELPH0 PROPAGS.206 C PROPAGS.207 C* 1.1.1 INDEX FOR ADJOINING POINTS. PROPAGS.208 C --------------------------- PROPAGS.209 C PROPAGS.210 IF (SD.LT.0) THEN PROPAGS.211 IJLA = 2 PROPAGS.212 ELSE PROPAGS.213 IJLA = 1 PROPAGS.214 ENDIF PROPAGS.215 IF (CD.LT.0) THEN PROPAGS.216 IJPH = 2 PROPAGS.217 ELSE PROPAGS.218 IJPH = 1 PROPAGS.219 ENDIF PROPAGS.220 C PROPAGS.221 IF (ISHALLO.EQ.1) THEN PROPAGS.222 C PROPAGS.223 C* 1.1.2 DEEP WATER. PROPAGS.224 C ----------- PROPAGS.225 C PROPAGS.226 SD = ABS(SD) PROPAGS.227 CD = ABS(CD) PROPAGS.228 DTH = SD + CD PROPAGS.229 C PROPAGS.230 C* 1.1.2.1 LOOP OVER FREQUENCIES. PROPAGS.231 C ---------------------- PROPAGS.232 C PROPAGS.233 DO 1120 M=1,NFRE PROPAGS.234 C PROPAGS.235 C* 1.1.2.1.1 LOOP OVER GRIDPOINTS. PROPAGS.236 C --------------------- PROPAGS.237 C PROPAGS.238 DTT = 1.- DTH*GOM(M) PROPAGS.239 DNO = CD*GOM(M) PROPAGS.240 DEA = SD*GOM(M) PROPAGS.241 DO 1121 IJ = IJS(IG),IJL(IG) PROPAGS.242 F3(IJ,K,M) = DTT * F1(IJ,K,M ) PROPAGS.243 1 + DNO * F1(KLAT(IJ,IJPH,ig),K ,M) PROPAGS.244 2 + DEA * F1(KLON(IJ,IJLA,ig),K ,M) PROPAGS.245 1121 CONTINUE PROPAGS.246 C PROPAGS.247 C* BRANCH BACK TO 1.1.2.1 FOR NEXT FREQUENCY. PROPAGS.248 C PROPAGS.249 1120 CONTINUE PROPAGS.250 ELSE PROPAGS.251 CSHALLOW PROPAGS.252 C PROPAGS.253 C* 1.1.3 SHALLOW WATER. PROPAGS.254 C -------------- PROPAGS.255 C PROPAGS.256 SD = 0.5*SD PROPAGS.257 CD = 0.5*CD PROPAGS.258 C PROPAGS.259 C* 1.1.3.1 DEPTH REFRACTION. PROPAGS.260 C ----------------- PROPAGS.261 C PROPAGS.262 IF(IREFRA.EQ.1) THEN PROPAGS.263 KP1 = K+1 PROPAGS.264 IF (KP1.GT.NANG) KP1 = 1 PROPAGS.265 KM1 = K-1 PROPAGS.266 IF (KM1.LT.1) KM1 = NANG PROPAGS.267 DO 1131 IJ = IJS(IG),IJL(IG) PROPAGS.268 DRDP(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KP1,ig))*DELTH0 PROPAGS.269 DRDM(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KM1,ig))*DELTH0 PROPAGS.270 1131 CONTINUE PROPAGS.271 ENDIF PROPAGS.272 C PROPAGS.273 C* 1.1.3.2 LOOP OVER FREQUENCIES. PROPAGS.274 C ---------------------- PROPAGS.275 C PROPAGS.276 DO 1130 M=1,NFRE PROPAGS.277 C PROPAGS.278 C* 1.1.3.2.1 GROUP VELOCITIES. PROPAGS.279 C ----------------- PROPAGS.280 C PROPAGS.281 CGOND(0) = TCGOND(NDEPTH,M) PROPAGS.282 DO 1132 IJ=1,IJLT(IG) PROPAGS.283 CGOND(IJ) = TCGOND(INDEP(IJ),M) PROPAGS.284 1132 CONTINUE PROPAGS.285 C PROPAGS.286 C* 1.1.3.2.2 WEIGHTS IN INTEGRATION SCHEME. PROPAGS.287 C ------------------------------ PROPAGS.288 C PROPAGS.289 IF (SD.GE.0.) THEN PROPAGS.290 DO 1133 IJ=IJS(IG),IJL(IG) PROPAGS.291 DLA(IJ) = SD*(CGOND(KLON(IJ,1,ig)) + CGOND(IJ)) PROPAGS.292 DTC(IJ) = SD*(CGOND(KLON(IJ,2,ig)) + CGOND(IJ)) PROPAGS.293 1133 CONTINUE PROPAGS.294 ELSE PROPAGS.295 DO 1134 IJ=IJS(IG),IJL(IG) PROPAGS.296 DLA(IJ) =-SD*(CGOND(KLON(IJ,2,ig)) + CGOND(IJ)) PROPAGS.297 DTC(IJ) =-SD*(CGOND(KLON(IJ,1,ig)) + CGOND(IJ)) PROPAGS.298 1134 CONTINUE PROPAGS.299 ENDIF PROPAGS.300 PROPAGS.301 IF (CD.GE.0.) THEN PROPAGS.302 DO 1135 IJ=IJS(IG),IJL(IG) PROPAGS.303 DPH(IJ) = CD*(CGOND(KLAT(IJ,1,ig)) + CGOND(IJ)) PROPAGS.304 DTC(IJ) = DTC(IJ) PROPAGS.305 1 + CD*(CGOND(KLAT(IJ,2,ig)) + CGOND(IJ)) PROPAGS.306 1135 CONTINUE PROPAGS.307 ELSE PROPAGS.308 DO 1136 IJ=IJS(IG),IJL(IG) PROPAGS.309 DPH(IJ) =-CD*(CGOND(KLAT(IJ,2,ig)) + CGOND(IJ)) PROPAGS.310 DTC(IJ) = DTC(IJ) PROPAGS.311 1 -CD*(CGOND(KLAT(IJ,1,ig)) + CGOND(IJ)) PROPAGS.312 1136 CONTINUE PROPAGS.313 ENDIF PROPAGS.314 IF (IREFRA.EQ.1) THEN PROPAGS.315 DO 1137 IJ = IJS(IG),IJL(IG) PROPAGS.316 DTHP = FCONST(IJ,M)*DRDP(IJ) PROPAGS.317 DTHM = FCONST(IJ,M)*DRDM(IJ) PROPAGS.318 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.319 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.320 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.321 1137 CONTINUE PROPAGS.322 ENDIF PROPAGS.323 C PROPAGS.324 C* 1.1.3.2.3 LOOP OVER GRIDPOINTS. PROPAGS.325 C --------------------- PROPAGS.326 C PROPAGS.327 DO 1138 IJ = IJS(IG),IJL(IG) PROPAGS.328 F3(IJ,K,M) = (1.-DTC(IJ))*F1(IJ,K,M ) PROPAGS.329 1 + DPH(IJ) * F1(KLAT(IJ,IJPH,ig),K ,M) PROPAGS.330 2 + DLA(IJ) * F1(KLON(IJ,IJLA,ig),K ,M) PROPAGS.331 1138 CONTINUE PROPAGS.332 IF (IREFRA.EQ.1) THEN PROPAGS.333 DO 1139 IJ = IJS(IG),IJL(IG) PROPAGS.334 F3(IJ,K,M) = F3(IJ,K,M ) PROPAGS.335 1 + DTP(IJ) * F1(IJ,KP1,M) PROPAGS.336 2 + DTM(IJ) * F1(IJ,KM1,M) PROPAGS.337 1139 CONTINUE PROPAGS.338 ENDIF PROPAGS.339 C PROPAGS.340 C* BRANCH BACK TO 1.1.3.2 FOR NEXT FREQUENCY. PROPAGS.341 C PROPAGS.342 1130 CONTINUE PROPAGS.343 CSHALLOW PROPAGS.344 ENDIF PROPAGS.345 C PROPAGS.346 C* BRANCH BACK TO 1.1 FOR NEXT DIRECTION. PROPAGS.347 C PROPAGS.348 1100 CONTINUE PROPAGS.349 C PROPAGS.350 C* 1.2 END OF PROPAGATION FOR CARTESIAN GRID PROPAGS.351 C* WITHOUT REFRACTION OR DEPTH REFRACTION, RETURN. PROPAGS.352 C ----------------------------------------------- PROPAGS.353 cc PROPAGS.354 cc here extract propagation source term diagnostics: PROPAGS.355 cc PROPAGS.356 if(len_p2.eq.nang*nfre*niblo) then PROPAGS.357 WRITE(6,*)'extracting diagnostics Sadv' GIE0F403.557 do l=1,nfre PROPAGS.359 do m=1,nang PROPAGS.360 nstart=((l-1)*nang + m-1)*niblo PROPAGS.361 do ip=ijs(ig),ijl(ig) PROPAGS.362 sadv2(nstart+ip)=(F3(ip,m,l) - F1(ip,m,l)) PROPAGS.363 enddo PROPAGS.364 enddo PROPAGS.365 enddo PROPAGS.366 endif PROPAGS.367 PROPAGS.368 PROPAGS.369 RETURN PROPAGS.370 C PROPAGS.371 C ---------------------------------------------------------------------- PROPAGS.372 C PROPAGS.373 C* 2. PROPAGATION FOR CARTESIAN GRID PROPAGS.374 C* WITH DEPTH AND CURRENT REFRACTION. PROPAGS.375 C ---------------------------------- PROPAGS.376 C PROPAGS.377 2000 CONTINUE PROPAGS.378 C PROPAGS.379 DELPRO = FLOAT(IDELPRO) PROPAGS.380 DELPH0 = 0.25*DELPRO/DELPHI PROPAGS.381 DELTH0 = 0.25*DELPRO/DELTH PROPAGS.382 DELLA0 = 0.25*DELPRO/DELLAM PROPAGS.383 DELFR0 = 0.25*DELPRO/(0.1*ZPI) PROPAGS.384 C PROPAGS.385 C* 2.1 LOOP OVER DIRECTIONS. PROPAGS.386 C --------------------- PROPAGS.387 C PROPAGS.388 DO 2100 K=1,NANG PROPAGS.389 KP1 = K+1 PROPAGS.390 IF (KP1.GT.NANG) KP1 = 1 PROPAGS.391 KM1 = K-1 PROPAGS.392 IF (KM1.LT.1) KM1 = NANG PROPAGS.393 SD = SINTH(K)*DELLA0 PROPAGS.394 CD = COSTH(K)*DELPH0 PROPAGS.395 C PROPAGS.396 C* 2.1.1 DEPTH REFRACTION IF SHALLOW WATER. PROPAGS.397 C ---------------------------------- PROPAGS.398 C PROPAGS.399 IF (ISHALLO.NE.1) THEN PROPAGS.400 DO 2101 IJ = IJS(IG),IJL(IG) PROPAGS.401 DRDP(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KP1,ig))*DELTH0 PROPAGS.402 DRDM(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KM1,ig))*DELTH0 PROPAGS.403 2101 CONTINUE PROPAGS.404 ENDIF PROPAGS.405 C PROPAGS.406 C* 2.1.2 CURRENT REFRACTION. PROPAGS.407 C ------------------- PROPAGS.408 C PROPAGS.409 DO 2102 IJ = IJS(IG),IJL(IG) PROPAGS.410 DRCP(IJ) = (THDC(IJ,K,ig) + THDC(IJ,KP1,ig))*DELTH0 PROPAGS.411 DRCM(IJ) = (THDC(IJ,K,ig) + THDC(IJ,KM1,ig))*DELTH0 PROPAGS.412 2102 CONTINUE PROPAGS.413 C PROPAGS.414 C* 2.1.3 LOOP OVER FREQUENCIES. PROPAGS.415 C ---------------------- PROPAGS.416 C PROPAGS.417 DO 2130 M=1,NFRE PROPAGS.418 IF (ISHALLO.EQ.1) THEN PROPAGS.419 C PROPAGS.420 C* 2.1.3.1 DEEP WATER. PROPAGS.421 C ----------- PROPAGS.422 C PROPAGS.423 MP1 = MIN(NFRE,M+1) PROPAGS.424 MM1 = MAX(1,M-1) PROPAGS.425 DFP = PI*2.1*DELFR0 PROPAGS.426 C PROPAGS.427 C* 2.1.3.1.1 GROUP VELOCITIES. PROPAGS.428 C ----------------- PROPAGS.429 C PROPAGS.430 CGS = GOM(M)*SD PROPAGS.431 CGC = GOM(M)*CD PROPAGS.432 C PROPAGS.433 C* 2.1.3.1.2 WEIGHTS IN INTEGRATION SCHEME. PROPAGS.434 C ------------------------------ PROPAGS.435 C PROPAGS.436 DLA(0) = CGS PROPAGS.437 DPH(0) = CGC PROPAGS.438 DO 2131 IJ=1,IJLT(IG) PROPAGS.439 DLA(IJ) = U(IJ,IG)*DELLA0 + CGS PROPAGS.440 DPH(IJ) = V(IJ,IG)*DELPH0 + CGC PROPAGS.441 2131 CONTINUE PROPAGS.442 DO 2132 IJ=IJS(IG),IJL(IG) PROPAGS.443 DLWE = DLA(IJ) + DLA(KLON(IJ,1,ig)) PROPAGS.444 DLEA = DLA(IJ) + DLA(KLON(IJ,2,ig)) PROPAGS.445 DLE(IJ) = -DLEA+ABS(DLEA) PROPAGS.446 DLW(IJ) = DLWE+ABS(DLWE) PROPAGS.447 DTC(IJ) = DLEA+ABS(DLEA)-DLWE+ABS(DLWE) PROPAGS.448 PROPAGS.449 DPSO = DPH(IJ) + DPH(KLAT(IJ,1,ig)) PROPAGS.450 DPNO = DPH(IJ) + DPH(KLAT(IJ,2,ig)) PROPAGS.451 DPN(IJ) = -DPNO+ABS(DPNO) PROPAGS.452 DPS(IJ) = DPSO+ABS(DPSO) PROPAGS.453 DTC(IJ) = DTC(IJ) + DPNO+ABS(DPNO)-DPSO+ABS(DPSO) PROPAGS.454 PROPAGS.455 DTHP = DRCP(IJ) PROPAGS.456 DTHM = DRCM(IJ) PROPAGS.457 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.458 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.459 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.460 PROPAGS.461 DTHP = sidc(IJ,K,NFRE,ig) * DFP PROPAGS.462 DTC(IJ) = DTC(IJ) + 2.* ABS(DTHP) PROPAGS.463 DOP(IJ) = (-DTHP+ABS(DTHP))/1.1 PROPAGS.464 DOM(IJ) = ( DTHP+ABS(DTHP))*1.1 PROPAGS.465 2132 CONTINUE PROPAGS.466 ELSE PROPAGS.467 CSHALLOW PROPAGS.468 C PROPAGS.469 C* 2.1.3.2 SHALLOW WATER. PROPAGS.470 C -------------- PROPAGS.471 C PROPAGS.472 MP1 = MIN(NFRE,M+1) PROPAGS.473 MM1 = MAX(1,M-1) PROPAGS.474 DFP = DELFR0/FR(M) PROPAGS.475 DFM = DELFR0/FR(MM1) PROPAGS.476 C PROPAGS.477 C* 2.1.3.2.1 GROUP VELOCITIES. PROPAGS.478 C ----------------- PROPAGS.479 C PROPAGS.480 CGOND(0) = TCGOND(NDEPTH,M) PROPAGS.481 DO 2133 IJ=1,IJLT(IG) PROPAGS.482 CGOND(IJ) = TCGOND(INDEP(IJ),M) PROPAGS.483 2133 CONTINUE PROPAGS.484 C PROPAGS.485 C* 2.1.3.2.2 WEIGHTS IN INTEGRATION SCHEME. PROPAGS.486 C ------------------------------ PROPAGS.487 C PROPAGS.488 DLA(0) = SD*CGOND(0) PROPAGS.489 DPH(0) = CD*CGOND(0) PROPAGS.490 DO 2134 IJ=1,IJLT(IG) PROPAGS.491 DLA(IJ) = U(IJ,IG)*DELLA0 + SD*CGOND(IJ) PROPAGS.492 DPH(IJ) = V(IJ,IG)*DELPH0 + CD*CGOND(IJ) PROPAGS.493 2134 CONTINUE PROPAGS.494 DO 2135 IJ=IJS(IG),IJL(IG) PROPAGS.495 DLWE = DLA(IJ) + DLA(KLON(IJ,1,ig)) PROPAGS.496 DLEA = DLA(IJ) + DLA(KLON(IJ,2,ig)) PROPAGS.497 DLE(IJ) = -DLEA+ABS(DLEA) PROPAGS.498 DLW(IJ) = DLWE+ABS(DLWE) PROPAGS.499 DTC(IJ) = DLEA+ABS(DLEA)-DLWE+ABS(DLWE) PROPAGS.500 PROPAGS.501 DPSO = DPH(IJ) + DPH(KLAT(IJ,1,ig)) PROPAGS.502 DPNO = DPH(IJ) + DPH(KLAT(IJ,2,ig)) PROPAGS.503 DPN(IJ) = -DPNO+ABS(DPNO) PROPAGS.504 DPS(IJ) = DPSO+ABS(DPSO) PROPAGS.505 DTC(IJ) = DTC(IJ) + DPNO+ABS(DPNO)-DPSO+ABS(DPSO) PROPAGS.506 PROPAGS.507 DTHP = FCONST(IJ,M)*DRDP(IJ) + DRCP(IJ) PROPAGS.508 DTHM = FCONST(IJ,M)*DRDM(IJ) + DRCM(IJ) PROPAGS.509 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.510 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.511 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.512 PROPAGS.513 DTHP = (sidc(IJ,K,M,ig) + sidc(IJ,K,MP1,ig))*DFP PROPAGS.514 DTHM = (sidc(IJ,K,M,ig) + sidc(IJ,K,MM1,ig))*DFM PROPAGS.515 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.516 DOP(IJ) = (-DTHP+ABS(DTHP))/1.1 PROPAGS.517 DOM(IJ) = ( DTHM+ABS(DTHM))*1.1 PROPAGS.518 2135 CONTINUE PROPAGS.519 CSHALLOW PROPAGS.520 ENDIF PROPAGS.521 C PROPAGS.522 C* 2.1.3.3 LOOP OVER GRIDPOINTS. PROPAGS.523 C --------------------- PROPAGS.524 C PROPAGS.525 DO 2136 IJ = IJS(IG),IJL(IG) PROPAGS.526 F3(IJ,K,M) = (1.-DTC(IJ))*F1(IJ,K,M ) PROPAGS.527 1 + DPN(IJ) * F1(KLAT(IJ,2,ig),K ,M) PROPAGS.528 2 + DPS(IJ) * F1(KLAT(IJ,1,ig),K ,M) PROPAGS.529 3 + DLE(IJ) * F1(KLON(IJ,2,ig),K ,M) PROPAGS.530 4 + DLW(IJ) * F1(KLON(IJ,1,ig),K ,M) PROPAGS.531 5 + DTP(IJ) * F1(IJ ,KP1,M) PROPAGS.532 6 + DTM(IJ) * F1(IJ ,KM1,M) PROPAGS.533 7 + DOP(IJ) * F1(IJ ,K ,MP1) PROPAGS.534 8 + DOM(IJ) * F1(IJ ,K ,MM1) PROPAGS.535 2136 CONTINUE PROPAGS.536 C PROPAGS.537 C* BRANCH BACK TO 2.1.3 FOR NEXT FREQUENCY. PROPAGS.538 C PROPAGS.539 2130 CONTINUE PROPAGS.540 C PROPAGS.541 C* BRANCH BACK TO 2.1 FOR NEXT DIRECTION. PROPAGS.542 C PROPAGS.543 2100 CONTINUE PROPAGS.544 C PROPAGS.545 C* 2.2 END OF PROPAGATION FOR CARTESIAN GRID PROPAGS.546 C* WITH DEPTH AND CURRENT REFRACTION, RETURN. PROPAGS.547 C ------------------------------------------ PROPAGS.548 cc PROPAGS.549 cc here extract propagation source term diagnostics: PROPAGS.550 cc PROPAGS.551 if(len_p2.eq.nang*nfre*niblo) then PROPAGS.552 WRITE(6,*)'extracting diagnostics Sadv' GIE0F403.558 do l=1,nfre PROPAGS.554 do m=1,nang PROPAGS.555 nstart=((l-1)*nang + m-1)*niblo PROPAGS.556 do ip=ijs(ig),ijl(ig) PROPAGS.557 sadv2(nstart+ip)=(F3(ip,m,l) - F1(ip,m,l)) PROPAGS.558 enddo PROPAGS.559 enddo PROPAGS.560 enddo PROPAGS.561 endif PROPAGS.562 PROPAGS.563 PROPAGS.564 RETURN PROPAGS.565 C PROPAGS.566 C ---------------------------------------------------------------------- PROPAGS.567 C PROPAGS.568 C* 3. PROPAGATION FOR SPHERICAL LATITUDE/LONGITUDE GRID PROPAGS.569 C* WITHOUT OR DEPTH REFRACTION. PROPAGS.570 C ------------------------------------------------- PROPAGS.571 C PROPAGS.572 3000 CONTINUE PROPAGS.573 C PROPAGS.574 DELPRO = FLOAT(IDELPRO) PROPAGS.575 DELTH0 = 0.25*DELPRO/DELTH PROPAGS.576 DELPH0 = 0.5*DELPRO/DELPHI PROPAGS.577 IF (ISHALLO.EQ.1) THEN PROPAGS.578 DELLA0 = DELPRO/DELLAM PROPAGS.579 ELSE PROPAGS.580 DELLA0 = 0.5*DELPRO/DELLAM PROPAGS.581 ENDIF PROPAGS.582 C PROPAGS.583 C* 3.1 LOOP OVER DIRECTIONS. PROPAGS.584 C --------------------- PROPAGS.585 C PROPAGS.586 DO 3100 K=1,NANG PROPAGS.587 KP1 = K+1 PROPAGS.588 IF (KP1.GT.NANG) KP1 = 1 PROPAGS.589 KM1 = K-1 PROPAGS.590 IF (KM1.LT.1) KM1 = NANG PROPAGS.591 SD = SINTH(K)*DELLA0 PROPAGS.592 CD = COSTH(K)*DELPH0 PROPAGS.593 SDA = ABS(SD) PROPAGS.594 CDA = ABS(CD) PROPAGS.595 C PROPAGS.596 C* 3.1.1 COMPUTE GRID REFRACTION. PROPAGS.597 C ------------------------ PROPAGS.598 C PROPAGS.599 SP = DELTH0*(SINTH(K)+SINTH(KP1))/R PROPAGS.600 SM = DELTH0*(SINTH(K)+SINTH(KM1))/R PROPAGS.601 DO 3101 IJ = IJS(IG),IJL(IG) PROPAGS.602 JH = KXLT(IJ,IG) PROPAGS.603 TANPH = SINPH(JH)*DCO(IJ) PROPAGS.604 DRGP(IJ) = TANPH*SP PROPAGS.605 DRGM(IJ) = TANPH*SM PROPAGS.606 3101 CONTINUE PROPAGS.607 C PROPAGS.608 C* 3.1.2 INDEX FOR ADJOINING POINTS. PROPAGS.609 C --------------------------- PROPAGS.610 C PROPAGS.611 IF (SD.LT.0) THEN PROPAGS.612 IJLA = 2 PROPAGS.613 ELSE PROPAGS.614 IJLA = 1 PROPAGS.615 ENDIF PROPAGS.616 IF (CD.LT.0) THEN PROPAGS.617 IJPH = 2 PROPAGS.618 ELSE PROPAGS.619 IJPH = 1 PROPAGS.620 ENDIF PROPAGS.621 C PROPAGS.622 IF (ISHALLO.EQ.1) THEN PROPAGS.623 C PROPAGS.624 C* 3.1.3 DEEP WATER. PROPAGS.625 C ----------- PROPAGS.626 C PROPAGS.627 C* 3.1.3.1 LAT / LONG WEIGHTS IN INTEGRATION SCHEME. PROPAGS.628 C ----------------------------------------- PROPAGS.629 C PROPAGS.630 DO 3131 IJ=IJS(IG),IJL(IG) PROPAGS.631 DLE(IJ) = DCO(IJ)*SDA PROPAGS.632 3131 CONTINUE PROPAGS.633 IF (CD.GT.0.) THEN PROPAGS.634 DO 3132 IJ=IJS(IG),IJL(IG) PROPAGS.635 DTC(IJ) = DLE(IJ) + CDA*(DP2(IJ) + 1.) PROPAGS.636 DPN(IJ) = CDA*(DP1(IJ) + 1.) PROPAGS.637 3132 CONTINUE PROPAGS.638 ELSE PROPAGS.639 DO 3133 IJ=IJS(IG),IJL(IG) PROPAGS.640 DTC(IJ) = DLE(IJ) + CDA*(DP1(IJ) + 1.) PROPAGS.641 DPN(IJ) = CDA*(DP2(IJ) + 1.) PROPAGS.642 3133 CONTINUE PROPAGS.643 ENDIF PROPAGS.644 C PROPAGS.645 C* 3.1.3.2 REFRACTION WEIGHTS IN INTEGRATION SCHEME. PROPAGS.646 C ----------------------------------------- PROPAGS.647 C PROPAGS.648 DO 3134 IJ=IJS(IG),IJL(IG) PROPAGS.649 DTHP = DRGP(IJ) PROPAGS.650 DTHM = DRGM(IJ) PROPAGS.651 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.652 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.653 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.654 3134 CONTINUE PROPAGS.655 C PROPAGS.656 C* 3.1.3.3 LOOP OVER FREQUENCIES. PROPAGS.657 C ---------------------- PROPAGS.658 C PROPAGS.659 DO 3135 M=1,NFRE PROPAGS.660 C PROPAGS.661 C* 3.1.3.3.1 LOOP OVER GRIDPOINTS. PROPAGS.662 C --------------------- PROPAGS.663 C PROPAGS.664 DO 3136 IJ = IJS(IG),IJL(IG) PROPAGS.665 DTT = 1. - DTC(IJ)*GOM(M) PROPAGS.666 F3(IJ,K,M) = DTT*F1(IJ,K,M ) + GOM(M) * PROPAGS.667 1 (DPN(IJ) * F1(KLAT(IJ,IJPH,ig),K ,M) PROPAGS.668 2 + DLE(IJ) * F1(KLON(IJ,IJLA,ig),K ,M) PROPAGS.669 3 + DTP(IJ) * F1(IJ ,KP1,M) PROPAGS.670 4 + DTM(IJ) * F1(IJ ,KM1,M)) PROPAGS.671 3136 CONTINUE PROPAGS.672 C PROPAGS.673 C* BRANCH BACK TO 3.1.3.3 FOR NEXT FREQUENCY. PROPAGS.674 C PROPAGS.675 3135 CONTINUE PROPAGS.676 ELSE PROPAGS.677 CSHALLOW PROPAGS.678 C PROPAGS.679 C* 3.1.4 SHALLOW WATER. PROPAGS.680 C -------------- PROPAGS.681 C PROPAGS.682 C PROPAGS.683 C* 3.1.4.1 COMPUTE DEPTH REFRACTION. PROPAGS.684 C ------------------------- PROPAGS.685 C PROPAGS.686 IF (IREFRA.EQ.1) THEN PROPAGS.687 DO 3141 IJ = IJS(IG),IJL(IG) PROPAGS.688 DRDP(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KP1,ig))*DELTH0 PROPAGS.689 DRDM(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KM1,ig))*DELTH0 PROPAGS.690 3141 CONTINUE PROPAGS.691 ENDIF PROPAGS.692 C PROPAGS.693 C* 3.1.4.2 LOOP OVER FREQUENCIES. PROPAGS.694 C ---------------------- PROPAGS.695 C PROPAGS.696 DO 3142 M=1,NFRE PROPAGS.697 C PROPAGS.698 C* 3.1.4.2.1 GROUP VELOCITIES. PROPAGS.699 C ----------------- PROPAGS.700 C PROPAGS.701 CGOND(0) = TCGOND(NDEPTH,M) PROPAGS.702 DO 3143 IJ=1,IJLT(IG) PROPAGS.703 CGOND(IJ) = TCGOND(INDEP(IJ),M) PROPAGS.704 3143 CONTINUE PROPAGS.705 C PROPAGS.706 C* 3.1.4.3.2 LAT / LONG WEIGHTS IN INTEGRATION SCHEME. PROPAGS.707 C ----------------------------------------- PROPAGS.708 C PROPAGS.709 IF (SD.GT.0.) THEN PROPAGS.710 DO 3144 IJ=IJS(IG),IJL(IG) PROPAGS.711 DTC(IJ) = 1. - DCO(IJ)*SDA* PROPAGS.712 1 (CGOND(KLON(IJ,2,ig)) + CGOND(IJ)) PROPAGS.713 DLE(IJ) = DCO(IJ)*SDA* PROPAGS.714 1 (CGOND(KLON(IJ,1,ig)) + CGOND(IJ)) PROPAGS.715 3144 CONTINUE PROPAGS.716 ELSE PROPAGS.717 DO 3145 IJ=IJS(IG),IJL(IG) PROPAGS.718 DTC(IJ) = 1. - DCO(IJ)*SDA* PROPAGS.719 1 (CGOND(KLON(IJ,1,ig)) + CGOND(IJ)) PROPAGS.720 DLE(IJ) = DCO(IJ)*SDA* PROPAGS.721 1 (CGOND(KLON(IJ,2,ig)) + CGOND(IJ)) PROPAGS.722 3145 CONTINUE PROPAGS.723 ENDIF PROPAGS.724 IF (CD.GT.0.) THEN PROPAGS.725 DO 3146 IJ=IJS(IG),IJL(IG) PROPAGS.726 DTC(IJ) = DTC(IJ) - CDA* PROPAGS.727 1 (CGOND(KLAT(IJ,2,ig))*DP2(IJ) + CGOND(IJ)) PROPAGS.728 DPN(IJ) = CDA* PROPAGS.729 1 (CGOND(KLAT(IJ,1,ig))*DP1(IJ) + CGOND(IJ)) PROPAGS.730 3146 CONTINUE PROPAGS.731 ELSE PROPAGS.732 DO 3147 IJ=IJS(IG),IJL(IG) PROPAGS.733 DTC(IJ) = DTC(IJ) - CDA* PROPAGS.734 1 (CGOND(KLAT(IJ,1,ig))*DP1(IJ) + CGOND(IJ)) PROPAGS.735 DPN(IJ) = CDA* PROPAGS.736 1 (CGOND(KLAT(IJ,2,ig))*DP2(IJ) + CGOND(IJ)) PROPAGS.737 3147 CONTINUE PROPAGS.738 ENDIF PROPAGS.739 C PROPAGS.740 C* 3.1.4.2.3 REFRACTION WEIGHTS IN INTEGRATION SCHEME. PROPAGS.741 C ----------------------------------------- PROPAGS.742 C PROPAGS.743 IF (IREFRA.EQ.0) THEN PROPAGS.744 DO 3148 IJ=IJS(IG),IJL(IG) PROPAGS.745 DTHP = DRGP(IJ)*CGOND(IJ) PROPAGS.746 DTHM = DRGM(IJ)*CGOND(IJ) PROPAGS.747 DTC(IJ) = DTC(IJ) - DTHP-ABS(DTHP)+DTHM-ABS(DTHM) PROPAGS.748 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.749 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.750 3148 CONTINUE PROPAGS.751 ELSE PROPAGS.752 DO 3149 IJ=IJS(IG),IJL(IG) PROPAGS.753 DTHP = DRGP(IJ)*CGOND(IJ)+FCONST(IJ,M)*DRDP(IJ) PROPAGS.754 DTHM = DRGM(IJ)*CGOND(IJ)+FCONST(IJ,M)*DRDM(IJ) PROPAGS.755 DTC(IJ) = DTC(IJ) - DTHP-ABS(DTHP)+DTHM-ABS(DTHM) PROPAGS.756 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.757 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.758 3149 CONTINUE PROPAGS.759 ENDIF PROPAGS.760 C PROPAGS.761 C* 3.1.4.2.4 LOOP OVER GRIDPOINTS. PROPAGS.762 C --------------------- PROPAGS.763 C PROPAGS.764 DO 3150 IJ = IJS(IG),IJL(IG) PROPAGS.765 F3(IJ,K,M) = DTC(IJ)*F1(IJ,K,M ) PROPAGS.766 1 + DPN(IJ) * F1(KLAT(IJ,IJPH,ig),K ,M) PROPAGS.767 2 + DLE(IJ) * F1(KLON(IJ,IJLA,ig),K ,M) PROPAGS.768 3 + DTP(IJ) * F1(IJ ,KP1,M) PROPAGS.769 4 + DTM(IJ) * F1(IJ ,KM1,M) PROPAGS.770 3150 CONTINUE PROPAGS.771 C PROPAGS.772 C* BRANCH BACK TO 3.1.4.2 FOR NEXT FREQUENCY. PROPAGS.773 C PROPAGS.774 3142 CONTINUE PROPAGS.775 CSHALLOW PROPAGS.776 ENDIF PROPAGS.777 C PROPAGS.778 C* BRANCH BACK TO 3.1 FOR NEXT DIRECTION. PROPAGS.779 C PROPAGS.780 3100 CONTINUE PROPAGS.781 C PROPAGS.782 C* 3.2 END OF PROPAGATION FOR SPHERICAL GRID PROPAGS.783 C* WITHOUT REFRACTION OR DEPTH REFRACTION, RETURN. PROPAGS.784 C ----------------------------------------------- PROPAGS.785 C PROPAGS.786 cc PROPAGS.787 cc here extract propagation source term diagnostics: PROPAGS.788 cc PROPAGS.789 if(len_p2.eq.nang*nfre*niblo) then PROPAGS.790 WRITE(6,*)'extracting diagnostics Sadv' GIE0F403.559 do l=1,nfre PROPAGS.792 do m=1,nang PROPAGS.793 nstart=((l-1)*nang + m-1)*niblo PROPAGS.794 do ip=ijs(ig),ijl(ig) PROPAGS.795 sadv2(nstart+ip)=(F3(ip,m,l) - F1(ip,m,l)) PROPAGS.796 enddo PROPAGS.797 enddo PROPAGS.798 enddo PROPAGS.799 endif PROPAGS.800 PROPAGS.801 RETURN PROPAGS.802 C PROPAGS.803 C ---------------------------------------------------------------------- PROPAGS.804 C PROPAGS.805 C* 4. PROPAGATION FOR SPHERICAL LATITUDE/LONGITUDE GRID PROPAGS.806 C* WITH DEPTH AND CURRENT REFRACTION. PROPAGS.807 C ------------------------------------------------- PROPAGS.808 C PROPAGS.809 4000 CONTINUE PROPAGS.810 C PROPAGS.811 DELPRO = FLOAT(IDELPRO) PROPAGS.812 DELPH0 = 0.25*DELPRO/DELPHI PROPAGS.813 DELTH0 = 0.25*DELPRO/DELTH PROPAGS.814 DELLA0 = 0.25*DELPRO/DELLAM PROPAGS.815 DELFR0 = 0.25*DELPRO/(0.1*ZPI) PROPAGS.816 C PROPAGS.817 C* 4.1 LOOP OVER DIRECTIONS. PROPAGS.818 C --------------------- PROPAGS.819 C PROPAGS.820 DO 4100 K=1,NANG PROPAGS.821 KP1 = K+1 PROPAGS.822 IF (KP1.GT.NANG) KP1 = 1 PROPAGS.823 KM1 = K-1 PROPAGS.824 IF (KM1.LT.1) KM1 = NANG PROPAGS.825 SD = SINTH(K)*DELLA0 PROPAGS.826 CD = COSTH(K)*DELPH0 PROPAGS.827 C PROPAGS.828 C* 4.1.1 COMPUTE GRID REFRACTION. PROPAGS.829 C ------------------------ PROPAGS.830 C PROPAGS.831 SP = DELTH0*(SINTH(K)+SINTH(KP1))/R PROPAGS.832 SM = DELTH0*(SINTH(K)+SINTH(KM1))/R PROPAGS.833 DO 4111 IJ = IJS(IG),IJL(IG) PROPAGS.834 JH = KXLT(IJ,IG) PROPAGS.835 TANPH = SINPH(JH)*DCO(IJ) PROPAGS.836 DRGP(IJ) = TANPH*SP PROPAGS.837 DRGM(IJ) = TANPH*SM PROPAGS.838 4111 CONTINUE PROPAGS.839 C PROPAGS.840 C* 4.1.2 COMPUTE DEPTH REFRACTION. PROPAGS.841 C ------------------------- PROPAGS.842 C PROPAGS.843 IF (ISHALLO.NE.1) THEN PROPAGS.844 DO 4121 IJ = IJS(IG),IJL(IG) PROPAGS.845 DRDP(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KP1,ig))*DELTH0 PROPAGS.846 DRDM(IJ) = (THDD(IJ,K,ig) + THDD(IJ,KM1,ig))*DELTH0 PROPAGS.847 4121 CONTINUE PROPAGS.848 ENDIF PROPAGS.849 C PROPAGS.850 C* 4.1.3 COMPUTE CURRENT REFRACTION. PROPAGS.851 C --------------------------- PROPAGS.852 C PROPAGS.853 DO 4131 IJ = IJS(IG),IJL(IG) PROPAGS.854 DRCP(IJ) = (THDC(IJ,K,ig) + THDC(IJ,KP1,ig))*DELTH0 PROPAGS.855 DRCM(IJ) = (THDC(IJ,K,ig) + THDC(IJ,KM1,ig))*DELTH0 PROPAGS.856 4131 CONTINUE PROPAGS.857 C PROPAGS.858 C* 4.1.4 LOOP OVER FREQUENCIES. PROPAGS.859 C ---------------------- PROPAGS.860 C PROPAGS.861 DO 4140 M=1,NFRE PROPAGS.862 MP1 = MIN(NFRE,M+1) PROPAGS.863 MM1 = MAX(1,M-1) PROPAGS.864 IF (ISHALLO.EQ.1) THEN PROPAGS.865 C PROPAGS.866 C* 4.1.4.1 DEEP WATER. PROPAGS.867 C ----------- PROPAGS.868 C PROPAGS.869 C* 4.1.4.1.1 GROUP VELOCITIES. PROPAGS.870 C ----------------- PROPAGS.871 C PROPAGS.872 DFP = PI*2.1*DELFR0 PROPAGS.873 CGS = GOM(M)*SD PROPAGS.874 CGC = GOM(M)*CD PROPAGS.875 C PROPAGS.876 C* 4.1.4.1.2 WEIGHTS IN INTEGRATION SCHEME. PROPAGS.877 C ------------------------------ PROPAGS.878 C PROPAGS.879 DLA( 0) = CGS PROPAGS.880 DPH( 0) = CGC PROPAGS.881 DO 4141 IJ=1,IJLT(IG) PROPAGS.882 DLA(IJ) = (U(IJ,IG)*DELLA0 + CGS)*DCO(IJ) PROPAGS.883 DPH(IJ) = V(IJ,IG)*DELPH0 + CGC PROPAGS.884 4141 CONTINUE PROPAGS.885 DO 4142 IJ=IJS(IG),IJL(IG) PROPAGS.886 DLWE = DLA(IJ) + DLA(KLON(IJ,1,ig)) PROPAGS.887 DLEA = DLA(IJ) + DLA(KLON(IJ,2,ig)) PROPAGS.888 DLE(IJ) = -DLEA+ABS(DLEA) PROPAGS.889 DLW(IJ) = DLWE+ABS(DLWE) PROPAGS.890 DTC(IJ) = DLEA+ABS(DLEA)-DLWE+ABS(DLWE) PROPAGS.891 PROPAGS.892 DPSO = DPH(IJ) + DPH(KLAT(IJ,1,ig))*DP1(IJ) PROPAGS.893 DPNO = DPH(IJ) + DPH(KLAT(IJ,2,ig))*DP2(IJ) PROPAGS.894 DPN(IJ) = -DPNO+ABS(DPNO) PROPAGS.895 DPS(IJ) = DPSO+ABS(DPSO) PROPAGS.896 DTC(IJ) = DTC(IJ) + DPNO+ABS(DPNO)-DPSO+ABS(DPSO) PROPAGS.897 PROPAGS.898 DTHP = DRGP(IJ)*GOM(M) + DRCP(IJ) PROPAGS.899 DTHM = DRGM(IJ)*GOM(M) + DRCM(IJ) PROPAGS.900 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.901 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.902 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.903 PROPAGS.904 DTHP = sidc(IJ,K,NFRE,ig) * DFP PROPAGS.905 DTC(IJ) = DTC(IJ) + 2. * ABS(DTHP) PROPAGS.906 DOP(IJ) = (-DTHP+ABS(DTHP))/1.1 PROPAGS.907 DOM(IJ) = ( DTHP+ABS(DTHP))*1.1 PROPAGS.908 4142 CONTINUE PROPAGS.909 ELSE PROPAGS.910 CSHALLOW PROPAGS.911 C PROPAGS.912 C* 4.1.4.2 SHALLOW WATER. PROPAGS.913 C -------------- PROPAGS.914 C PROPAGS.915 C* 4.1.4.2.1 GROUP VELOCITIES. PROPAGS.916 C ----------------- PROPAGS.917 C PROPAGS.918 DFP = DELFR0/FR(M) PROPAGS.919 DFM = DELFR0/FR(MM1) PROPAGS.920 CGOND(0) = TCGOND(NDEPTH,M) PROPAGS.921 DO 4143 IJ=1,IJLT(IG) PROPAGS.922 CGOND(IJ) = TCGOND(INDEP(IJ),M) PROPAGS.923 4143 CONTINUE PROPAGS.924 C PROPAGS.925 C* 4.1.4.2.2 LON/LAT/DIR WEIGHTS IN INTEGRATION SCHEME. PROPAGS.926 C ------------------------------------------ PROPAGS.927 C PROPAGS.928 DLA( 0) = SD*CGOND(0) PROPAGS.929 DPH( 0) = CD*CGOND(0) PROPAGS.930 DO 4144 IJ=1,IJLT(IG) PROPAGS.931 DLA(IJ) = (U(IJ,IG)*DELLA0 + SD*CGOND(IJ))*DCO(IJ) PROPAGS.932 DPH(IJ) = V(IJ,IG)*DELPH0 + CD*CGOND(IJ) PROPAGS.933 4144 CONTINUE PROPAGS.934 DO 4145 IJ=IJS(IG),IJL(IG) PROPAGS.935 DLWE = DLA(IJ) + DLA(KLON(IJ,1,ig)) PROPAGS.936 DLEA = DLA(IJ) + DLA(KLON(IJ,2,ig)) PROPAGS.937 DLE(IJ) = -DLEA+ABS(DLEA) PROPAGS.938 DLW(IJ) = DLWE+ABS(DLWE) PROPAGS.939 DTC(IJ) = DLEA+ABS(DLEA)-DLWE+ABS(DLWE) PROPAGS.940 PROPAGS.941 DPSO = DPH(IJ) + DPH(KLAT(IJ,1,ig))*DP1(IJ) PROPAGS.942 DPNO = DPH(IJ) + DPH(KLAT(IJ,2,ig))*DP2(IJ) PROPAGS.943 DPN(IJ) = -DPNO+ABS(DPNO) PROPAGS.944 DPS(IJ) = DPSO+ABS(DPSO) PROPAGS.945 DTC(IJ) = DTC(IJ) + DPNO+ABS(DPNO)-DPSO+ABS(DPSO) PROPAGS.946 PROPAGS.947 DTHP=DRGP(IJ)*CGOND(IJ)+FCONST(IJ,M)*DRDP(IJ)+DRCP(IJ) PROPAGS.948 DTHM=DRGM(IJ)*CGOND(IJ)+FCONST(IJ,M)*DRDM(IJ)+DRCM(IJ) PROPAGS.949 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.950 DTP(IJ) = -DTHP+ABS(DTHP) PROPAGS.951 DTM(IJ) = DTHM+ABS(DTHM) PROPAGS.952 PROPAGS.953 DTHP = (sidc(IJ,K,M,ig) + sidc(IJ,K,MP1,ig))*DFP PROPAGS.954 DTHM = (sidc(IJ,K,M,ig) + sidc(IJ,K,MM1,ig))*DFM PROPAGS.955 DTC(IJ) = DTC(IJ) + DTHP+ABS(DTHP)-DTHM+ABS(DTHM) PROPAGS.956 DOP(IJ) = (-DTHP+ABS(DTHP))/1.1 PROPAGS.957 DOM(IJ) = ( DTHM+ABS(DTHM))*1.1 PROPAGS.958 4145 CONTINUE PROPAGS.959 CSHALLOW PROPAGS.960 ENDIF PROPAGS.961 C PROPAGS.962 C* 4.1.4.3 LOOP OVER GRIDPOINTS. PROPAGS.963 C --------------------- PROPAGS.964 C PROPAGS.965 DO 4146 IJ = IJS(IG),IJL(IG) PROPAGS.966 F3(IJ,K,M) = (1.-DTC(IJ))*F1(IJ,K,M ) PROPAGS.967 1 + DPN(IJ) * F1(KLAT(IJ,2,ig),K ,M) PROPAGS.968 2 + DPS(IJ) * F1(KLAT(IJ,1,ig),K ,M) PROPAGS.969 3 + DLE(IJ) * F1(KLON(IJ,2,ig),K ,M) PROPAGS.970 4 + DLW(IJ) * F1(KLON(IJ,1,ig),K ,M) PROPAGS.971 5 + DTP(IJ) * F1(IJ ,KP1,M) PROPAGS.972 6 + DTM(IJ) * F1(IJ ,KM1,M) PROPAGS.973 7 + DOP(IJ) * F1(IJ ,K ,MP1) PROPAGS.974 8 + DOM(IJ) * F1(IJ ,K ,MM1) PROPAGS.975 4146 CONTINUE PROPAGS.976 C PROPAGS.977 C* BRANCH BACK TO 4.1.4 FOR NEXT FREQUENCY. PROPAGS.978 C PROPAGS.979 4140 CONTINUE PROPAGS.980 C PROPAGS.981 C* BRANCH BACK TO 4.2 FOR NEXT DIRECTION. PROPAGS.982 C PROPAGS.983 4100 CONTINUE PROPAGS.984 C PROPAGS.985 C* 4.4 END OF PROPAGATION FOR SPHERICAL GRID PROPAGS.986 C* WITH DEPTH AND CURRENT REFRACTION, RETURN. PROPAGS.987 C ------------------------------------------ PROPAGS.988 C PROPAGS.989 PROPAGS.990 cc PROPAGS.991 cc here extract propagation source term diagnostics: PROPAGS.992 cc PROPAGS.993 if(len_p2.eq.nang*nfre*niblo) then PROPAGS.994 WRITE(6,*)'extracting diagnostics Sadv' GIE0F403.560 do l=1,nfre PROPAGS.996 do m=1,nang PROPAGS.997 nstart=((l-1)*nang + m-1)*niblo PROPAGS.998 do ip=ijs(ig),ijl(ig) PROPAGS.999 sadv2(nstart+ip)=(F3(ip,m,l) - F1(ip,m,l)) PROPAGS.1000 enddo PROPAGS.1001 enddo PROPAGS.1002 enddo PROPAGS.1003 endif PROPAGS.1004 PROPAGS.1005 PROPAGS.1006 RETURN PROPAGS.1007 END PROPAGS.1008 *ENDIF PROPAGS.1009