*IF DEF,W03_1A WVV0F401.12 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.15677 C GTS2F400.15678 C Use, duplication or disclosure of this code is subject to the GTS2F400.15679 C restrictions as set forth in the contract. GTS2F400.15680 C GTS2F400.15681 C Meteorological Office GTS2F400.15682 C London Road GTS2F400.15683 C BRACKNELL GTS2F400.15684 C Berkshire UK GTS2F400.15685 C RG12 2SZ GTS2F400.15686 C GTS2F400.15687 C If no contract has been raised with this copy of the code, the use, GTS2F400.15688 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.15689 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.15690 C Modelling at the above address. GTS2F400.15691 C ******************************COPYRIGHT****************************** GTS2F400.15692 C GTS2F400.15693 SNONLIN.3SUBROUTINE SNONLIN (F, FL, IJS, IJL, IG, ishallo, 1SNONLIN.4 *CALL ARGWVAL
SNONLIN.5 *CALL ARGWVNL
SNONLIN.6 *CALL ARGWVMN
SNONLIN.7 *CALL ARGWVSH
SNONLIN.8 *CALL ARGWVSR
SNONLIN.9 & icode) SNONLIN.10 SNONLIN.11 *CALL PARWVSH
SNONLIN.12 SNONLIN.13 *CALL TYPWVNL
SNONLIN.14 *CALL TYPWVMN
SNONLIN.15 *CALL TYPWVSH
SNONLIN.16 *CALL TYPWVSR
SNONLIN.17 *CALL TYPWVAL
SNONLIN.18 SNONLIN.19 C ---------------------------------------------------------------------- SNONLIN.20 C SNONLIN.21 C**** *SNONLIN* - COMPUTATION OF NONLINEAR TRANSFER RATE AND ITS SNONLIN.22 C**** FUNCTIONAL DERIVATIVE (DIAGONAL TERMS ONLY) AND SNONLIN.23 C**** ADDITION TO CORRESPONDING NET EXPRESSIONS. SNONLIN.24 C SNONLIN.25 C S.D. HASSELMANN. MPI SNONLIN.26 C SNONLIN.27 C G. KOMEN, P. JANSSEN KNMI MODIFIED TO SHALLOW WATER SNONLIN.28 C H. GUENTHER, L. ZAMBRESKY OPTIMIZED SNONLIN.29 C H. GUENTHER GKSS/ECMWF JUNE 1991 INTERACTIONS BETWEEN DIAG- SNONLIN.30 C AND PROGNOSTIC PART. SNONLIN.31 C SNONLIN.32 C* PURPOSE. SNONLIN.33 C -------- SNONLIN.34 C SNONLIN.35 C SEE ABOVE. SNONLIN.36 C SNONLIN.37 C** INTERFACE. SNONLIN.38 C ---------- SNONLIN.39 C SNONLIN.40 C *CALL* *SNONLIN (F, FL, IJS, IJL, IG)* SNONLIN.41 C *F* - SPECTRUM. SNONLIN.42 C *FL* - DIAGONAL MATRIX OF FUNCTIONAL DERIVATIVE SNONLIN.43 C *IJS* - INDEX OF FIRST GRIDPOINT SNONLIN.44 C *IJL* - INDEX OF LAST GRIDPOINT SNONLIN.45 C *IG* - BLOCK NUMBER. SNONLIN.46 C SNONLIN.47 C METHOD. SNONLIN.48 C ------- SNONLIN.49 C SNONLIN.50 C NONE. SNONLIN.51 C SNONLIN.52 C EXTERNALS. SNONLIN.53 C ---------- SNONLIN.54 C SNONLIN.55 C NONE. SNONLIN.56 C SNONLIN.57 C REFERENCE. SNONLIN.58 C ---------- SNONLIN.59 C SNONLIN.60 C NONE. SNONLIN.61 C SNONLIN.62 C ---------------------------------------------------------------------- SNONLIN.63 C SNONLIN.64 DIMENSION F(0:NIBLO,NANG,NFRE), FL(0:NIBLO,NANG,NFRE) SNONLIN.65 C SNONLIN.66 DIMENSION FTEMP(NIBLO), AD(NIBLO), DELAD(NIBLO), DELAP(NIBLO), SNONLIN.67 1 DELAM(NIBLO) SNONLIN.68 CSHALLOW SNONLIN.69 DIMENSION ENH(NIBLO) SNONLIN.70 C SNONLIN.71 C ---------------------------------------------------------------------- SNONLIN.72 C SNONLIN.73 C* 1. SHALLOW WATER INITIALISATION. SNONLIN.74 C ----------------------------- SNONLIN.75 C SNONLIN.76 IF (ISHALLO.NE.1) THEN SNONLIN.77 DO 1000 IJ=IJS,IJL SNONLIN.78 ENH(IJ) = 0.75*DEPTH(IJ,IG)*AKMEAN(IJ) SNONLIN.79 ENH(IJ) = MAX(ENH(IJ),.5) SNONLIN.80 ENH(IJ) = 1.+(5.5/ENH(IJ))*(1.-.833*ENH(IJ)) * SNONLIN.81 1 EXP(-1.25*ENH(IJ)) SNONLIN.82 1000 CONTINUE SNONLIN.83 END IF SNONLIN.84 CSHALLOW SNONLIN.85 C SNONLIN.86 C ---------------------------------------------------------------------- SNONLIN.87 C SNONLIN.88 C* 2. FREQUENCY LOOP. SNONLIN.89 C --------------- SNONLIN.90 C SNONLIN.91 DO 2000 MC=1,NFRE+4 SNONLIN.92 MP = IKP (MC) SNONLIN.93 MP1 = IKP1(MC) SNONLIN.94 MM = IKM (MC) SNONLIN.95 MM1 = IKM1(MC) SNONLIN.96 FFACP = 1. SNONLIN.97 FFACP1 = 1. SNONLIN.98 FFACM1 = 1. SNONLIN.99 FTAIL = 1. SNONLIN.100 IC = MC SNONLIN.101 IP = MP SNONLIN.102 IP1 = MP1 SNONLIN.103 IM = MM SNONLIN.104 IM1 = MM1 SNONLIN.105 IF (IP1.GT.NFRE) THEN SNONLIN.106 FFACP1 = FRH(IP1-NFRE+1) SNONLIN.107 IP1 = NFRE SNONLIN.108 IF (IP .GT.NFRE) THEN SNONLIN.109 FFACP = FRH(IP -NFRE+1) SNONLIN.110 IP = NFRE SNONLIN.111 IF (IC .GT.NFRE) THEN SNONLIN.112 FTAIL = FRH(IC -NFRE+1) SNONLIN.113 IC = NFRE SNONLIN.114 IF (IM1.GT.NFRE) THEN SNONLIN.115 FFACM1 = FRH(IM1-NFRE+1) SNONLIN.116 IM1 = NFRE SNONLIN.117 ENDIF SNONLIN.118 ENDIF SNONLIN.119 ENDIF SNONLIN.120 ENDIF SNONLIN.121 FKLAMP = FKLAP(MC) SNONLIN.122 FKLAMP1 = FKLAP1(MC) SNONLIN.123 GW2 = FKLAMP1*FFACP*DAL1 SNONLIN.124 GW1 = GW2*CL11 SNONLIN.125 GW2 = GW2*ACL1 SNONLIN.126 GW4 = FKLAMP*FFACP1*DAL1 SNONLIN.127 GW3 = GW4*CL11 SNONLIN.128 GW4 = GW4*ACL1 SNONLIN.129 FKLAMPA = FKLAMP*CL11 SNONLIN.130 FKLAMPB = FKLAMP*ACL1 SNONLIN.131 FKLAMP2 = FKLAMP1*ACL1 SNONLIN.132 FKLAMP1 = FKLAMP1*CL11 SNONLIN.133 FKLAPA2 = FKLAMPA**2 SNONLIN.134 FKLAPB2 = FKLAMPB**2 SNONLIN.135 FKLAP12 = FKLAMP1**2 SNONLIN.136 FKLAP22 = FKLAMP2**2 SNONLIN.137 SNONLIN.138 FKLAMM = FKLAM(MC) SNONLIN.139 FKLAMM1 = FKLAM1(MC) SNONLIN.140 GW6 = FKLAMM1*DAL2 SNONLIN.141 GW5 = GW6*CL21 SNONLIN.142 GW6 = GW6*ACL2 SNONLIN.143 GW8 = FKLAMM*FFACM1*DAL2 SNONLIN.144 GW7 = GW8*CL21 SNONLIN.145 GW8 = GW8*ACL2 SNONLIN.146 FKLAMMA = FKLAMM*CL21 SNONLIN.147 FKLAMMB = FKLAMM*ACL2 SNONLIN.148 FKLAMM2 = FKLAMM1*ACL2 SNONLIN.149 FKLAMM1 = FKLAMM1*CL21 SNONLIN.150 FKLAMA2 = FKLAMMA**2 SNONLIN.151 FKLAMB2 = FKLAMMB**2 SNONLIN.152 FKLAM12 = FKLAMM1**2 SNONLIN.153 FKLAM22 = FKLAMM2**2 SNONLIN.154 SNONLIN.155 IF (ISHALLO.EQ.1) THEN SNONLIN.156 DO 2001 IJ=IJS,IJL SNONLIN.157 FTEMP(IJ) = AF11(MC) SNONLIN.158 2001 CONTINUE SNONLIN.159 ELSE SNONLIN.160 CSHALLOW SNONLIN.161 DO 2002 IJ=IJS,IJL SNONLIN.162 FTEMP(IJ) = AF11(MC)*ENH(IJ) SNONLIN.163 2002 CONTINUE SNONLIN.164 CSHALLOW SNONLIN.165 ENDIF SNONLIN.166 C SNONLIN.167 C* 2.1 LOOP FOR ANLULAR SYMMETRY. SNONLIN.168 C ------------------------- SNONLIN.169 C SNONLIN.170 DO 2100 KH=1,2 SNONLIN.171 C SNONLIN.172 C* 2.1.1 ANGULAR LOOP. SNONLIN.173 C ------------- SNONLIN.174 C SNONLIN.175 DO 2110 K=1,NANG SNONLIN.176 K1 = K1W (K,KH) SNONLIN.177 K2 = K2W (K,KH) SNONLIN.178 K11 = K11W(K,KH) SNONLIN.179 K21 = K21W(K,KH) SNONLIN.180 C SNONLIN.181 C* 2.1.1.1 LOOP OVER GRIDPOINTS.. NONLINEAR TRANSFER AND SNONLIN.182 C* DIAGONAL MATRIX OF FUNCTIONAL DERIVATIVE. SNONLIN.183 C ---------------------------------------------- SNONLIN.184 C SNONLIN.185 IF (MC.GT.4) THEN SNONLIN.186 DO 2111 IJ=IJS,IJL SNONLIN.187 SAP = GW1*F(IJ,K1 ,IP ) + GW2*F(IJ,K11,IP ) SNONLIN.188 1 + GW3*F(IJ,K1 ,IP1) + GW4*F(IJ,K11,IP1) SNONLIN.189 SAM = GW5*F(IJ,K2 ,IM ) + GW6*F(IJ,K21,IM ) SNONLIN.190 1 + GW7*F(IJ,K2 ,IM1) + GW8*F(IJ,K21,IM1) SNONLIN.191 FIJ = F(IJ,K ,IC )*FTAIL SNONLIN.192 FAD1 = FIJ*(SAP+SAM) SNONLIN.193 FAD2 = FAD1-2.*SAP*SAM SNONLIN.194 FAD1 = FAD1+FAD2 SNONLIN.195 FCEN = FTEMP(IJ)*FIJ SNONLIN.196 AD(IJ) = FAD2*FCEN SNONLIN.197 DELAD(IJ) = FAD1*FTEMP(IJ) SNONLIN.198 DELAP(IJ) = (FIJ-2.*SAM)*DAL1*FCEN SNONLIN.199 DELAM(IJ) = (FIJ-2.*SAP)*DAL2*FCEN SNONLIN.200 2111 CONTINUE SNONLIN.201 SNONLIN.202 DO 2112 IJ=IJS,IJL SNONLIN.203 SL(IJ,K2 ,MM ) = SL(IJ,K2 ,MM ) + AD(IJ)*FKLAMM1 SNONLIN.204 SL(IJ,K21,MM ) = SL(IJ,K21,MM ) + AD(IJ)*FKLAMM2 SNONLIN.205 C SNONLIN.206 FL(IJ,K2 ,MM ) = FL(IJ,K2 ,MM ) + DELAM(IJ)*FKLAM12 SNONLIN.207 FL(IJ,K21,MM ) = FL(IJ,K21,MM ) + DELAM(IJ)*FKLAM22 SNONLIN.208 2112 CONTINUE SNONLIN.209 SNONLIN.210 IF (MM1.LE.NFRE) THEN SNONLIN.211 DO 2113 IJ=IJS,IJL SNONLIN.212 SL(IJ,K2 ,MM1) = SL(IJ,K2 ,MM1) + AD(IJ)*FKLAMMA SNONLIN.213 SL(IJ,K21,MM1) = SL(IJ,K21,MM1) + AD(IJ)*FKLAMMB SNONLIN.214 C SNONLIN.215 FL(IJ,K2 ,MM1) = FL(IJ,K2 ,MM1) + DELAM(IJ)*FKLAMA2 SNONLIN.216 FL(IJ,K21,MM1) = FL(IJ,K21,MM1) + DELAM(IJ)*FKLAMB2 SNONLIN.217 2113 CONTINUE SNONLIN.218 SNONLIN.219 IF (MC .LE.NFRE) THEN SNONLIN.220 DO 2114 IJ=IJS,IJL SNONLIN.221 SL(IJ,K ,MC ) = SL(IJ,K ,MC ) - 2.*AD(IJ) SNONLIN.222 C SNONLIN.223 FL(IJ,K ,MC ) = FL(IJ,K ,MC ) - 2.*DELAD(IJ) SNONLIN.224 2114 CONTINUE SNONLIN.225 SNONLIN.226 IF (MP .LE.NFRE) THEN SNONLIN.227 DO 2115 IJ=IJS,IJL SNONLIN.228 SL(IJ,K1 ,MP ) = SL(IJ,K1 ,MP ) + AD(IJ)*FKLAMP1 SNONLIN.229 SL(IJ,K11,MP ) = SL(IJ,K11,MP ) + AD(IJ)*FKLAMP2 SNONLIN.230 C SNONLIN.231 FL(IJ,K1 ,MP ) = FL(IJ,K1 ,MP ) SNONLIN.232 1 + DELAP(IJ)*FKLAP12 SNONLIN.233 FL(IJ,K11,MP ) = FL(IJ,K11,MP ) SNONLIN.234 1 + DELAP(IJ)*FKLAP22 SNONLIN.235 2115 CONTINUE SNONLIN.236 SNONLIN.237 IF (MP1.LE.NFRE) THEN SNONLIN.238 DO 2116 IJ=IJS,IJL SNONLIN.239 SL(IJ,K1 ,MP1) = SL(IJ,K1 ,MP1) SNONLIN.240 1 + AD(IJ)*FKLAMPA SNONLIN.241 SL(IJ,K11,MP1) = SL(IJ,K11,MP1) SNONLIN.242 1 + AD(IJ)*FKLAMPB SNONLIN.243 C SNONLIN.244 FL(IJ,K1 ,MP1) = FL(IJ,K1 ,MP1) SNONLIN.245 1 + DELAP(IJ)*FKLAPA2 SNONLIN.246 FL(IJ,K11,MP1) = FL(IJ,K11,MP1) SNONLIN.247 1 + DELAP(IJ)*FKLAPB2 SNONLIN.248 2116 CONTINUE SNONLIN.249 ENDIF SNONLIN.250 ENDIF SNONLIN.251 ENDIF SNONLIN.252 ENDIF SNONLIN.253 SNONLIN.254 ELSE SNONLIN.255 SNONLIN.256 DO 2117 IJ=IJS,IJL SNONLIN.257 SAP = GW1*F(IJ,K1 ,IP ) + GW2*F(IJ,K11,IP ) SNONLIN.258 1 + GW3*F(IJ,K1 ,IP1) + GW4*F(IJ,K11,IP1) SNONLIN.259 FIJ = F(IJ,K,IM) SNONLIN.260 FAD2 = FIJ*SAP SNONLIN.261 FAD1 = 2.*FAD2 SNONLIN.262 FCEN = FTEMP(IJ)*FIJ SNONLIN.263 AD(IJ) = FAD2*FCEN SNONLIN.264 DELAD(IJ) = FAD1*FTEMP(IJ) SNONLIN.265 DELAP(IJ) = FIJ*DAL1*FCEN SNONLIN.266 2117 CONTINUE SNONLIN.267 C SNONLIN.268 DO 2118 IJ=IJS,IJL SNONLIN.269 SL(IJ,K ,MC ) = SL(IJ,K ,MC ) - 2.*AD(IJ) SNONLIN.270 SL(IJ,K1 ,MP ) = SL(IJ,K1 ,MP ) + AD(IJ)*FKLAMP1 SNONLIN.271 SL(IJ,K11,MP ) = SL(IJ,K11,MP ) + AD(IJ)*FKLAMP2 SNONLIN.272 SL(IJ,K1 ,MP1) = SL(IJ,K1 ,MP1) + AD(IJ)*FKLAMPA SNONLIN.273 SL(IJ,K11,MP1) = SL(IJ,K11,MP1) + AD(IJ)*FKLAMPB SNONLIN.274 C SNONLIN.275 FL(IJ,K ,MC ) = FL(IJ,K ,MC ) - 2.*DELAD(IJ) SNONLIN.276 FL(IJ,K1 ,MP ) = FL(IJ,K1 ,MP ) + DELAP(IJ)*FKLAP12 SNONLIN.277 FL(IJ,K11,MP ) = FL(IJ,K11,MP ) + DELAP(IJ)*FKLAP22 SNONLIN.278 FL(IJ,K1 ,MP1) = FL(IJ,K1 ,MP1) + DELAP(IJ)*FKLAPA2 SNONLIN.279 FL(IJ,K11,MP1) = FL(IJ,K11,MP1) + DELAP(IJ)*FKLAPB2 SNONLIN.280 2118 CONTINUE SNONLIN.281 ENDIF SNONLIN.282 C SNONLIN.283 C* BRANCH BACK TO 2.1.1 FOR NEXT DIRECTION. SNONLIN.284 C SNONLIN.285 2110 CONTINUE SNONLIN.286 C SNONLIN.287 C* BRANCH BACK TO 2.1 FOR MIRROR INTERACTIONS. SNONLIN.288 C SNONLIN.289 2100 CONTINUE SNONLIN.290 C SNONLIN.291 C* BRANCH BACK TO 2. FOR NEXT FREQUENCY. SNONLIN.292 C SNONLIN.293 2000 CONTINUE SNONLIN.294 SNONLIN.295 RETURN SNONLIN.296 END SNONLIN.297 *ENDIF SNONLIN.298