*IF DEF,W03_1A                                                             WVV0F401.13     
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.15830  
C                                                                          GTS2F400.15831  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.15832  
C restrictions as set forth in the contract.                               GTS2F400.15833  
C                                                                          GTS2F400.15834  
C                Meteorological Office                                     GTS2F400.15835  
C                London Road                                               GTS2F400.15836  
C                BRACKNELL                                                 GTS2F400.15837  
C                Berkshire UK                                              GTS2F400.15838  
C                RG12 2SZ                                                  GTS2F400.15839  
C                                                                          GTS2F400.15840  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.15841  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.15842  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.15843  
C Modelling at the above address.                                          GTS2F400.15844  
C ******************************COPYRIGHT******************************    GTS2F400.15845  
C                                                                          GTS2F400.15846  
                                                                           NLWEIGT.3      

      SUBROUTINE NLWEIGT (ml,kl,                                            1,2NLWEIGT.4      
*CALL ARGWVAL                                                              NLWEIGT.5      
*CALL ARGWVFD                                                              NLWEIGT.6      
*CALL ARGWVNL                                                              NLWEIGT.7      
     & icode)                                                              NLWEIGT.8      
                                                                           NLWEIGT.9      
*CALL PARCONS                                                              NLWEIGT.10     
C*    *PARAMETER*  FOR DISCRETE APPROXIMATION OF NONLINEAR TRANSFER        NLWEIGT.11     
C                                                                          NLWEIGT.12     
      PARAMETER (ALAMD=0.25, CON=3000., DELPHI1=-11.48, DELPHI2=33.56)     NLWEIGT.13     
      PARAMETER (CO = 1.1)                                                 NLWEIGT.14     
                                                                           NLWEIGT.15     
*CALL TYPWVFD                                                              NLWEIGT.16     
*CALL TYPWVNL                                                              NLWEIGT.17     
*CALL TYPWVAL                                                              NLWEIGT.18     
                                                                           NLWEIGT.19     
C ----------------------------------------------------------------------   NLWEIGT.20     
C                                                                          NLWEIGT.21     
C**** *NLWEIGT* - COMPUTATION OF INDEX ARRAYS AND WEIGHTS FOR THE          NLWEIGT.22     
C                 COMPUTATION OF THE NONLINEAR TRANSFER RATE.              NLWEIGT.23     
C                                                                          NLWEIGT.24     
C     SUSANNE HASSELMANN JUNE 86.                                          NLWEIGT.25     
C                                                                          NLWEIGT.26     
C     H. GUNTHER   ECMWF/GKSS  DECEMBER 90 - CYCLE_4 MODIFICATIONS.        NLWEIGT.27     
C                                            4 FREQUENCIES ADDED.          NLWEIGT.28     
C                                                                          NLWEIGT.29     
C*    PURPOSE.                                                             NLWEIGT.30     
C     --------                                                             NLWEIGT.31     
C                                                                          NLWEIGT.32     
C       COMPUTATION OF PARAMETERS USED IN DISCRETE INTERACTION             NLWEIGT.33     
C       PARAMETERIZATION OF NONLINEAR TRANSFER.                            NLWEIGT.34     
C                                                                          NLWEIGT.35     
C**   INTERFACE.                                                           NLWEIGT.36     
C     ----------                                                           NLWEIGT.37     
C                                                                          NLWEIGT.38     
C       *CALL* *NLWEIGT (ML, KL)*                                          NLWEIGT.39     
C          *ML*     INTEGER   NUMBER OF FREQUENCIES.                       NLWEIGT.40     
C          *KL*     INTEGER   NUMBER OF DIRECTIONS.                        NLWEIGT.41     
C                                                                          NLWEIGT.42     
C     METHOD.                                                              NLWEIGT.43     
C     -------                                                              NLWEIGT.44     
C                                                                          NLWEIGT.45     
C       NONE.                                                              NLWEIGT.46     
C                                                                          NLWEIGT.47     
C     EXTERNALS.                                                           NLWEIGT.48     
C     ----------                                                           NLWEIGT.49     
C                                                                          NLWEIGT.50     
C       *JAFU*      - FUNCTION FOR COMPUTATION OF ANGULAR INDICES          NLWEIGT.51     
C                     OF K(F,THET).                                        NLWEIGT.52     
C                                                                          NLWEIGT.53     
C     REFERENCE.                                                           NLWEIGT.54     
C     ----------                                                           NLWEIGT.55     
C       S. HASSELMANN AND K. HASSELMANN, JPO, 1985 B.                      NLWEIGT.56     
C                                                                          NLWEIGT.57     
C                                                                          NLWEIGT.58     
C ----------------------------------------------------------------------   NLWEIGT.59     
C                                                                          NLWEIGT.60     
C*    *PARAMETER*  FOR DISCRETE APPROXIMATION OF NONLINEAR TRANSFER        NLWEIGT.61     
C                                                                          NLWEIGT.62     
C*     VARIABLE.   TYPE.     PURPOSE.                                      NLWEIGT.63     
C      ---------   -------   --------                                      NLWEIGT.64     
C      *ALAMD*     REAL      LAMBDA                                        NLWEIGT.65     
C      *CON*       REAL      WEIGHT FOR DISCRETE APPROXIMATION OF          NLWEIGT.66     
C                            NONLINEAR TRANSFER                            NLWEIGT.67     
C      *DELPHI1*   REAL                                                    NLWEIGT.68     
C      *DELPHI2*   REAL                                                    NLWEIGT.69     
C                                                                          NLWEIGT.70     
C ----------------------------------------------------------------------   NLWEIGT.71     
C                                                                          NLWEIGT.72     
C*     VARIABLE.   TYPE.     PURPOSE.                                      NLWEIGT.73     
C      ---------   -------   --------                                      NLWEIGT.74     
C      *CO*        REAL      FREQUENCY RATIO.                              NLWEIGT.75     
C                                                                          NLWEIGT.76     
C ----------------------------------------------------------------------   NLWEIGT.77     
C                                                                          NLWEIGT.78     
      DIMENSION JA1(NANG,2), JA2(NANG,2), FRLON(2*NFRE+2)                  NLWEIGT.79     
C                                                                          NLWEIGT.80     
      iu06=6                                                               NLWEIGT.81     
C ----------------------------------------------------------------------   NLWEIGT.82     
C                                                                          NLWEIGT.83     
C*    1. COMPUTATION FOR ANGULAR GRID.                                     NLWEIGT.84     
C        -----------------------------                                     NLWEIGT.85     
C                                                                          NLWEIGT.86     
 1000 CONTINUE                                                             NLWEIGT.87     
C                                                                          NLWEIGT.88     
      DELTHA = DELTH*DEG                                                   NLWEIGT.89     
      CL1 = DELPHI1/DELTHA                                                 NLWEIGT.90     
      CL2 = DELPHI2/DELTHA                                                 NLWEIGT.91     
C                                                                          NLWEIGT.92     
C*    1.1 COMPUTATION OF INDICES OF ANGULAR CELL.                          NLWEIGT.93     
C         ---------------------------------------                          NLWEIGT.94     
C                                                                          NLWEIGT.95     
      KLP1 = KL+1                                                          NLWEIGT.96     
      IC = 1                                                               NLWEIGT.97     
      DO 1001 KH=1,2                                                       NLWEIGT.98     
         KLH = KL                                                          NLWEIGT.99     
         IF (KH.EQ.2) KLH=KLP1                                             NLWEIGT.100    
         DO 1002 K=1,KLH                                                   NLWEIGT.101    
            KS = K                                                         NLWEIGT.102    
            IF (KH.GT.1) KS=KLP1-K+1                                       NLWEIGT.103    
            IF (KS.GT.KL) GO TO 1002                                       NLWEIGT.104    
            CH = IC*CL1                                                    NLWEIGT.105    
            JA1(KS,KH) = JAFU(CH,K,KLP1)                                   NLWEIGT.106    
            CH = IC*CL2                                                    NLWEIGT.107    
            JA2(KS,KH) = JAFU(CH,K,KLP1)                                   NLWEIGT.108    
 1002    CONTINUE                                                          NLWEIGT.109    
         IC = -1                                                           NLWEIGT.110    
 1001 CONTINUE                                                             NLWEIGT.111    
C                                                                          NLWEIGT.112    
C*    1.2 COMPUTATION OF ANGULAR WEIGHTS.                                  NLWEIGT.113    
C         -------------------------------                                  NLWEIGT.114    
C                                                                          NLWEIGT.115    
      ICL1 = CL1                                                           NLWEIGT.116    
      CL1  = CL1-ICL1                                                      NLWEIGT.117    
      ICL2 = CL2                                                           NLWEIGT.118    
      CL2  = CL2-ICL2                                                      NLWEIGT.119    
      ACL1 = ABS(CL1)                                                      NLWEIGT.120    
      ACL2 = ABS(CL2)                                                      NLWEIGT.121    
      CL11 = 1.-ACL1                                                       NLWEIGT.122    
      CL21 = 1.-ACL2                                                       NLWEIGT.123    
      AL11 = (1.+ALAMD)**4                                                 NLWEIGT.124    
      AL12 = (1.-ALAMD)**4                                                 NLWEIGT.125    
      DAL1 = 1./AL11                                                       NLWEIGT.126    
      DAL2 = 1./AL12                                                       NLWEIGT.127    
C                                                                          NLWEIGT.128    
C*    1.3 COMPUTATION OF ANGULAR INDICES.                                  NLWEIGT.129    
C         -------------------------------                                  NLWEIGT.130    
C                                                                          NLWEIGT.131    
      ISG = 1                                                              NLWEIGT.132    
      DO 1301 KH=1,2                                                       NLWEIGT.133    
         CL1H = ISG*CL1                                                    NLWEIGT.134    
         CL2H = ISG*CL2                                                    NLWEIGT.135    
         DO 1302 K=1,KL                                                    NLWEIGT.136    
            KS = K                                                         NLWEIGT.137    
            IF (KH.EQ.2) KS = KL-K+2                                       NLWEIGT.138    
            IF(K.EQ.1) KS = 1                                              NLWEIGT.139    
            K1 = JA1(K,KH)                                                 NLWEIGT.140    
            K1W(KS,KH) = K1                                                NLWEIGT.141    
            IF (CL1H.LT.0.) THEN                                           NLWEIGT.142    
               K11 = K1-1                                                  NLWEIGT.143    
               IF (K11.LT.1) K11 = KL                                      NLWEIGT.144    
            ELSE                                                           NLWEIGT.145    
              K11 = K1+1                                                   NLWEIGT.146    
              IF (K11.GT.KL) K11 = 1                                       NLWEIGT.147    
            ENDIF                                                          NLWEIGT.148    
            K11W(KS,KH) = K11                                              NLWEIGT.149    
            K2 = JA2(K,KH)                                                 NLWEIGT.150    
            K2W(KS,KH) = K2                                                NLWEIGT.151    
            IF (CL2H.LT.0) THEN                                            NLWEIGT.152    
               K21 = K2-1                                                  NLWEIGT.153    
               IF(K21.LT.1) K21 = KL                                       NLWEIGT.154    
            ELSE                                                           NLWEIGT.155    
               K21 = K2+1                                                  NLWEIGT.156    
               IF (K21.GT.KL) K21 = 1                                      NLWEIGT.157    
            ENDIF                                                          NLWEIGT.158    
            K21W(KS,KH) = K21                                              NLWEIGT.159    
 1302    CONTINUE                                                          NLWEIGT.160    
         ISG = -1                                                          NLWEIGT.161    
 1301 CONTINUE                                                             NLWEIGT.162    
C                                                                          NLWEIGT.163    
C*    2. COMPUTATION FOR FREQUENCY GRID.                                   NLWEIGT.164    
C        -------------------------------                                   NLWEIGT.165    
C                                                                          NLWEIGT.166    
 2000 CONTINUE                                                             NLWEIGT.167    
C                                                                          NLWEIGT.168    
      DO 2001 M=1,ML                                                       NLWEIGT.169    
         FRLON(M) = FR(M)                                                  NLWEIGT.170    
 2001 CONTINUE                                                             NLWEIGT.171    
      DO 2002 M=ML+1,2*ML+2                                                NLWEIGT.172    
         FRLON(M) = CO*FRLON(M-1)                                          NLWEIGT.173    
 2002 CONTINUE                                                             NLWEIGT.174    
      F1P1 = ALOG10(CO)                                                    NLWEIGT.175    
      DO 2003 M=1,ML+4                                                     NLWEIGT.176    
         FRG = FRLON(M)                                                    NLWEIGT.177    
         AF11(M) = CON * FRG**11                                           NLWEIGT.178    
         FLP = FRG*(1.+ALAMD)                                              NLWEIGT.179    
         FLM = FRG*(1.-ALAMD)                                              NLWEIGT.180    
         IKN = IFIX(ALOG10(1.+ALAMD)/F1P1+.000001)                         NLWEIGT.181    
         IKN = M+IKN                                                       NLWEIGT.182    
         IKP(M) = IKN                                                      NLWEIGT.183    
         FKP = FRLON(IKP(M))                                               NLWEIGT.184    
         IKP1(M) = IKP(M)+1                                                NLWEIGT.185    
         FKLAP(M) = (FLP-FKP)/(FRLON(IKP1(M))-FKP)                         NLWEIGT.186    
         FKLAP1(M) = 1.-FKLAP(M)                                           NLWEIGT.187    
         IF (FRLON(1).GE.FLM) THEN                                         NLWEIGT.188    
            IKM(M) = 1                                                     NLWEIGT.189    
            IKM1(M) = 1                                                    NLWEIGT.190    
            FKLAM(M) = 0.                                                  NLWEIGT.191    
            FKLAM1(M) = 0.                                                 NLWEIGT.192    
         ELSE                                                              NLWEIGT.193    
            IKN = IFIX(ALOG10(1.-ALAMD)/F1P1+.0000001)                     NLWEIGT.194    
            IKN = M+IKN-1                                                  NLWEIGT.195    
            IF (IKN.LT.1) IKN = 1                                          NLWEIGT.196    
            IKM(M) = IKN                                                   NLWEIGT.197    
            FKM = FRLON(IKM(M))                                            NLWEIGT.198    
            IKM1(M) = IKM(M)+1                                             NLWEIGT.199    
            FKLAM(M) = (FLM-FKM)/(FRLON(IKM1(M))-FKM)                      NLWEIGT.200    
            FKLAM1(M) = 1.-FKLAM(M)                                        NLWEIGT.201    
         ENDIF                                                             NLWEIGT.202    
 2003 CONTINUE                                                             NLWEIGT.203    
C                                                                          NLWEIGT.204    
C*    3. COMPUTE TAIL FREQUENCY RATIOS.                                    NLWEIGT.205    
C        ------------------------------                                    NLWEIGT.206    
C                                                                          NLWEIGT.207    
 3000 CONTINUE                                                             NLWEIGT.208    
      IE = MIN(30,ML+3)                                                    NLWEIGT.209    
      DO 3001 I=1,IE                                                       NLWEIGT.210    
         M = ML+I-1                                                        NLWEIGT.211    
         FRH(I) = (FRLON(ML)/FRLON(M))**5                                  NLWEIGT.212    
 3001 CONTINUE                                                             NLWEIGT.213    
C                                                                          NLWEIGT.214    
C*    4. PRINTER PROTOCOL.                                                 NLWEIGT.215    
C        -----------------                                                 NLWEIGT.216    
C                                                                          NLWEIGT.217    
 4000 CONTINUE                                                             NLWEIGT.218    
      WRITE(IU06,'(1H1,'' NON LINEAR INTERACTION PARAMETERS:'')')          NLWEIGT.219    
      WRITE(IU06,'(1H0,'' COMMON INDNL: CONSTANTS'')')                     NLWEIGT.220    
      WRITE(IU06,'(1X,''    ACL1       ACL2   '',                          NLWEIGT.221    
     1             ''    CL11       CL21   '',                             NLWEIGT.222    
     2             ''    DAL1       DAL2'')')                              NLWEIGT.223    
      WRITE(IU06,'(1X,6F11.8)') ACL1, ACL2, CL11, CL21, DAL1, DAL2         NLWEIGT.224    
                                                                           NLWEIGT.225    
      WRITE(IU06,'(1H0,'' COMMON INDNL: FREQUENCY ARRAYS'')')              NLWEIGT.226    
      WRITE(IU06,'(1X,'' M   IKP IKP1  IKM IKM1'',                         NLWEIGT.227    
     1          ''   FKLAP       FKLAP1 '',                                NLWEIGT.228    
     2          ''   FKLAM       FKLAM1     AF11'')')                      NLWEIGT.229    
      DO 4001 M=1,ML+4                                                     NLWEIGT.230    
         WRITE(IU06,'(1X,I2,4I5,4F11.8,E11.3)')                            NLWEIGT.231    
     1      M, IKP(M), IKP1(M), IKM(M), IKM1(M),                           NLWEIGT.232    
     2      FKLAP(M), FKLAP1(M), FKLAM(M), FKLAM1(M), AF11(M)              NLWEIGT.233    
 4001 CONTINUE                                                             NLWEIGT.234    
                                                                           NLWEIGT.235    
      WRITE(IU06,'(1H0,'' COMMON INDNL: ANGULAR ARRAYS'')')                NLWEIGT.236    
      WRITE(IU06,'(1X,''  |--------KH = 1----------|'',                    NLWEIGT.237    
     1              ''|--------KH = 2----------|'')')                      NLWEIGT.238    
      WRITE(IU06,'(1X,'' K   K1W   K2W  K11W  K21W'',                      NLWEIGT.239    
     1              ''   K1W   K2W  K11W  K21W'')')                        NLWEIGT.240    
      DO 4002 K=1,KL                                                       NLWEIGT.241    
      WRITE(IU06,'(1X,I2,8I6)') K,(K1W(K,KH), K2W(K,KH), K11W(K,KH),       NLWEIGT.242    
     2              K21W(K,KH),KH=1,2)                                     NLWEIGT.243    
 4002 CONTINUE                                                             NLWEIGT.244    
      WRITE(IU06,'(1H0,'' COMMON INDNL: TAIL ARRAY FRH'')')                NLWEIGT.245    
      WRITE(IU06,'(1X,8F10.7)') (FRH(M),M=1,30)                            NLWEIGT.246    
      RETURN                                                               NLWEIGT.248    
      END                                                                  NLWEIGT.249    
C                                                                          NLWEIGT.250    

      INTEGER FUNCTION JAFU (CL, J, IAN)                                    2NLWEIGT.251    
                                                                           NLWEIGT.252    
C ----------------------------------------------------------------------   NLWEIGT.253    
C                                                                          NLWEIGT.254    
C**** *JAFU* - FUNCTION TO COMPUTE THE INDEX ARRAY FOR THE                 NLWEIGT.255    
C              ANGLES OF THE INTERACTING WAVENUMBERS.                      NLWEIGT.256    
C                                                                          NLWEIGT.257    
C     S. HASSELMANN        MPIFM        01/12/1985.                        NLWEIGT.258    
C                                                                          NLWEIGT.259    
C*    PURPOSE.                                                             NLWEIGT.260    
C     --------                                                             NLWEIGT.261    
C                                                                          NLWEIGT.262    
C       INDICES DEFINING BINS IN FREQUENCY AND DIRECTION PLANE INTO        NLWEIGT.263    
C       WHICH NONLINEAR ENERGY TRANSFER INCREMENTS ARE STORED. NEEDED      NLWEIGT.264    
C       FOR COMPUTATION OF THE NONLINEAR ENERGY TRANSFER.                  NLWEIGT.265    
C                                                                          NLWEIGT.266    
C**   INTERFACE.                                                           NLWEIGT.267    
C     ----------                                                           NLWEIGT.268    
C                                                                          NLWEIGT.269    
C       *FUNCTION* *JAFU (CL, J, IAN)*                                     NLWEIGT.270    
C          *CL*  - WEIGHTS.                                                NLWEIGT.271    
C          *J*   - INDEX IN ANGULAR ARRAY.                                 NLWEIGT.272    
C          *IAN* - NUMBER OF ANGLES IN ARRAY.                              NLWEIGT.273    
C                                                                          NLWEIGT.274    
C     METHOD.                                                              NLWEIGT.275    
C     -------                                                              NLWEIGT.276    
C                                                                          NLWEIGT.277    
C       SEE REFERENCE.                                                     NLWEIGT.278    
C                                                                          NLWEIGT.279    
C     EXTERNALS.                                                           NLWEIGT.280    
C     ----------                                                           NLWEIGT.281    
C                                                                          NLWEIGT.282    
C       NONE.                                                              NLWEIGT.283    
C                                                                          NLWEIGT.284    
C     REFERENCE.                                                           NLWEIGT.285    
C     ----------                                                           NLWEIGT.286    
C                                                                          NLWEIGT.287    
C        S. HASSELMANN AND K. HASSELMANN,JPO, 1985 B.                      NLWEIGT.288    
C                                                                          NLWEIGT.289    
C ----------------------------------------------------------------------   NLWEIGT.290    
C                                                                          NLWEIGT.291    
      IDPH = CL                                                            NLWEIGT.292    
      JA = J+IDPH                                                          NLWEIGT.293    
      IF (JA.LE.0)   JA = IAN+JA-1                                         NLWEIGT.294    
      IF (JA.GE.IAN) JA = JA-IAN+1                                         NLWEIGT.295    
      JAFU = JA                                                            NLWEIGT.296    
                                                                           NLWEIGT.297    
      RETURN                                                               NLWEIGT.298    
      END                                                                  NLWEIGT.299    
*ENDIF                                                                     NLWEIGT.300