*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.3      

      SUBROUTINE 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