*IF DEF,W08_1A                                                             GLW1F404.32     
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.15575  
C                                                                          GTS2F400.15576  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.15577  
C restrictions as set forth in the contract.                               GTS2F400.15578  
C                                                                          GTS2F400.15579  
C                Meteorological Office                                     GTS2F400.15580  
C                London Road                                               GTS2F400.15581  
C                BRACKNELL                                                 GTS2F400.15582  
C                Berkshire UK                                              GTS2F400.15583  
C                RG12 2SZ                                                  GTS2F400.15584  
C                                                                          GTS2F400.15585  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.15586  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.15587  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.15588  
C Modelling at the above address.                                          GTS2F400.15589  
C ******************************COPYRIGHT******************************    GTS2F400.15590  
C                                                                          GTS2F400.15591  
                                                                           IMPLSCH.3      

      SUBROUTINE IMPLSCH (FL3, FL, IJS, IJL, IG, IGL, ishallo,              1,9IMPLSCH.4      
     & idelt,                                                              IMPLSCH.5      
*CALL ARGWVAL                                                              IMPLSCH.6      
*CALL ARGWVFD                                                              IMPLSCH.7      
*CALL ARGWVMN                                                              IMPLSCH.8      
*CALL ARGWVSR                                                              IMPLSCH.9      
*CALL ARGWVWD                                                              IMPLSCH.10     
*CALL ARGWVSH                                                              IMPLSCH.11     
*CALL ARGWVCP                                                              IMPLSCH.12     
*CALL ARGWVTB                                                              IMPLSCH.13     
*CALL ARGWVNL                                                              IMPLSCH.14     
*CALL ARGWVS2                                                              IMPLSCH.15     
     & icode)                                                              IMPLSCH.16     
                                                                           IMPLSCH.17     
*CALL PARWVSH                                                              IMPLSCH.18     
*CALL PARWVTB                                                              IMPLSCH.19     
*CALL PARCONS                                                              IMPLSCH.20     
      PARAMETER (GZPI28 = G/28./ZPI)                                       IMPLSCH.21     
                                                                           IMPLSCH.22     
*CALL TYPWVFD                                                              IMPLSCH.23     
*CALL TYPWVMN                                                              IMPLSCH.24     
*CALL TYPWVSR                                                              IMPLSCH.25     
*CALL TYPWVWD                                                              IMPLSCH.26     
*CALL TYPWVSH                                                              IMPLSCH.27     
*CALL TYPWVCP                                                              IMPLSCH.28     
*CALL TYPWVTB                                                              IMPLSCH.29     
*CALL TYPWVNL                                                              IMPLSCH.30     
*CALL TYPWVS2                                                              IMPLSCH.31     
*CALL TYPWVAL                                                              IMPLSCH.32     
                                                                           IMPLSCH.33     
C ----------------------------------------------------------------------   IMPLSCH.34     
C                                                                          IMPLSCH.35     
C**** *IMPLSCH* - IMPLICIT SCHEME FOR TIME INTEGRATION OF SOURCE           IMPLSCH.36     
C****             FUNCTIONS.                                               IMPLSCH.37     
C                                                                          IMPLSCH.38     
C     S.D.HASSELMANN.  MPI                                                 IMPLSCH.39     
C     H. GUENTHER AND L. ZAMBRESKY  OPTIMIZATION PERFORMED.                IMPLSCH.40     
C     H. GUENTHER      GKSS/ECMWF   OCTOBER 1989  NEW WIND FIELD           IMPLSCH.41     
C                                                 INTERFACE AND            IMPLSCH.42     
C                                                 TIME COUNTING            IMPLSCH.43     
C     P.A.E.M. JANSSEN KNMI         AUGUST  1990  COUPLED MODEL            IMPLSCH.44     
C     H. GUENTHER      GKSS/ECMWF   JUNE    1991  NEW SEPARATION OF        IMPLSCH.45     
C                                                  DIAG- AND PROGNOSTIC    IMPLSCH.46     
C                                                  PART OF SPECTRUM.       IMPLSCH.47     
C                                                                          IMPLSCH.48     
C*    PURPOSE.                                                             IMPLSCH.49     
C     --------                                                             IMPLSCH.50     
C                                                                          IMPLSCH.51     
C       THE IMPLICIT SCHEME ENABLES THE USE OF A TIMESTEP WHICH IS         IMPLSCH.52     
C       LARGE COMPARED WITH THE CHARACTERISTIC DYNAMIC TIME SCALE.         IMPLSCH.53     
C       THE SCHEME IS REQUIRED FOR THE HIGH FREQUENCIES WHICH              IMPLSCH.54     
C       RAPIDLY ADJUST TO A QUASI-EQUILIBRIUM.                             IMPLSCH.55     
C                                                                          IMPLSCH.56     
C**   INTERFACE.                                                           IMPLSCH.57     
C     ----------                                                           IMPLSCH.58     
C                                                                          IMPLSCH.59     
C       *CALL* *IMPLSCH (FL3, FL, IJS, IJL, IG, IGL)*                      IMPLSCH.60     
C          *FL3*    - FREQUENCY SPECTRUM(INPUT AND OUTPUT).                IMPLSCH.61     
C          *FL*     - DIAGONAL MATRIX OF FUNCTIONAL DERIVATIVE             IMPLSCH.62     
C          *IJS*    - INDEX OF FIRST GRIDPOINT                             IMPLSCH.63     
C          *IJL*    - INDEX OF LAST GRIDPOINT                              IMPLSCH.64     
C          *IG*     - BLOCK NUMBER                                         IMPLSCH.65     
C          *IGL*    - NUMBER OF BLOCKS                                     IMPLSCH.66     
C                                                                          IMPLSCH.67     
C     METHOD.                                                              IMPLSCH.68     
C     -------                                                              IMPLSCH.69     
C                                                                          IMPLSCH.70     
C       THE SPECTRUM AT TIME (TN+1) IS COMPUTED AS                         IMPLSCH.71     
C       FN+1=FN+DELT*(SN+SN+1)/2., WHERE SN IS THE TOTAL SOURCE            IMPLSCH.72     
C       FUNCTION AT TIME TN, SN+1=SN+(DS/DF)*DF - ONLY THE DIAGONAL        IMPLSCH.73     
C       TERMS OF THE FUNCTIONAL MATRIX DS/DF ARE COMPUTED, THE             IMPLSCH.74     
C       NONDIAGONAL TERMS ARE NEGLIGIBLE.                                  IMPLSCH.75     
C       THE ROUTINE IS CALLED AFTER PROPAGATION FOR TIME PERIOD            IMPLSCH.76     
C       BETWEEN TWO PROPAGATION CALLS - ARRAY FL3 CONTAINS THE             IMPLSCH.77     
C       SPECTRUM AND FL IS USED AS AN INTERMEDIATE STORAGE FOR THE         IMPLSCH.78     
C       DIAGONAL TERM OF THE FUNCTIONAL MATRIX.                            IMPLSCH.79     
C                                                                          IMPLSCH.80     
C     EXTERNALS.                                                           IMPLSCH.81     
C     ---------                                                            IMPLSCH.82     
C                                                                          IMPLSCH.83     
C       *FEMEAN*    - COMPUTATION OF MEAN FREQUENCY AT EACH GRID POINT.    IMPLSCH.84     
CSHALLOW                                                                   IMPLSCH.85     
C       *SBOTTOM*   - COMPUTES BOTTOM DISSIPATION SOURCE TERM AND          IMPLSCH.86     
C                     LINEAR CONTRIBUTION TO FUNCTIONAL MATRIX.            IMPLSCH.87     
CSHALLOW                                                                   IMPLSCH.88     
C       *SDISSIP*   - COMPUTATION OF DISSIPATION SOURCE FUNCTION           IMPLSCH.89     
C                     AND LINEAR CONTRIBUTION OF DISSIPATION TO            IMPLSCH.90     
C                     FUNCTIONAL MATRIX IN IMPLICIT SCHEME.                IMPLSCH.91     
C       *SEMEAN*    - COMPUTATION OF TOTAL ENERGY AT EACH GRID POINT.      IMPLSCH.92     
C       *SINPUT*    - COMPUTATION OF INPUT SOURCE FUNCTION, AND            IMPLSCH.93     
C                     LINEAR CONTRIBUTION OF INPUT SOURCE FUNCTION         IMPLSCH.94     
C                     TO FUNCTIONAL MATRIX IN IMPLICIT SCHEME.             IMPLSCH.95     
C       *SNONLIN*   - COMPUTATION OF NONLINEAR TRANSFER RATE AND           IMPLSCH.96     
C                     DIAGONAL LINEAR CONTRIBUTION OF NONLINEAR SOURCE     IMPLSCH.97     
C                     FUNCTION TO  FUNCTIONAL MATRIX.                      IMPLSCH.98     
C       *STRESSO*   - COMPUTATION NORMALISED WAVE STRESS.                  IMPLSCH.99     
C           !!!!!!! MAKE SURE THAT SINPUT IS CALLED FIRST, STRESSO         IMPLSCH.100    
C           !!!!!!! NEXT, AND THEN THE REST OF THE SOURCE FUNCTIONS.       IMPLSCH.101    
C                                                                          IMPLSCH.102    
C     REFERENCE.                                                           IMPLSCH.103    
C     ----------                                                           IMPLSCH.104    
C                                                                          IMPLSCH.105    
C       S. HASSELMANN AND K. HASSELMANN, "A GLOBAL WAVE MODEL",            IMPLSCH.106    
C       30/6/85 (UNPUBLISHED NOTE)                                         IMPLSCH.107    
C                                                                          IMPLSCH.108    
C ----------------------------------------------------------------------   IMPLSCH.109    
C                                                                          IMPLSCH.110    
      DIMENSION FL(0:NIBLO,NANG,NFRE), FL3(0:NIBLO,NANG,NFRE)              IMPLSCH.111    
                                                                           IMPLSCH.112    
cc    local array used when extracting source term diagnostics             IMPLSCH.113    
      real temp2(0:niblo,nang,nfre)                                        IMPLSCH.114    
C                                                                          IMPLSCH.115    
C ----------------------------------------------------------------------   IMPLSCH.116    
C                                                                          IMPLSCH.117    
      DIMENSION MIJ(NIBLO), MFMF(NIBLO), GADIAG(NIBLO),                    IMPLSCH.118    
     1          TEMP(NIBLO,NFRE), DELFL(NFRE)                              IMPLSCH.119    
                                                                           IMPLSCH.120    
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc                  IMPLSCH.121    
c                                                                          IMPLSCH.122    
c   all these are local arrays - since SL is initialised to zero in        IMPLSCH.123    
c   this subroutine                                                        IMPLSCH.124    
cc                                                                         IMPLSCH.125    
cc  It seems that sl is been used simply as a temp                         IMPLSCH.126    
cc  work space in WAM                                                      IMPLSCH.127    
cc                                                                         IMPLSCH.128    
cc    EQUIVALENCE (SL(1,3,1), MIJ(1))                                      IMPLSCH.129    
cc    EQUIVALENCE (SL(1,5,1), MFMF(1))                                     IMPLSCH.130    
cc    EQUIVALENCE (SL(1,7,1), GADIAG(1))                                   IMPLSCH.131    
cc    EQUIVALENCE (SL(1,9,1), TEMP(1,1))                                   IMPLSCH.132    
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc              IMPLSCH.133    
cc                                                                         IMPLSCH.134    
         DELT = IDELT                                                      IMPLSCH.135    
         DELT5 = 0.5*DELT                                                  IMPLSCH.136    
C ----------------------------------------------------------------------   IMPLSCH.137    
C                                                                          IMPLSCH.138    
C*    1. INITIALISATION.                                                   IMPLSCH.139    
C        ---------------                                                   IMPLSCH.140    
C                                                                          IMPLSCH.141    
 1000 CONTINUE                                                             IMPLSCH.142    
C                                                                          IMPLSCH.143    
C ----------------------------------------------------------------------   IMPLSCH.144    
c initialisation of local diagnostic arrays                                IMPLSCH.145    
                                                                           IMPLSCH.146    
       do i=1,len_s2                                                       IMPLSCH.147    
        sin2 (i)=0.                                                        IMPLSCH.148    
        snl2 (i)=0.                                                        IMPLSCH.149    
        sds2 (i)=0.                                                        IMPLSCH.150    
        sbf2 (i)=0.                                                        IMPLSCH.151    
        stl2 (i)=0.                                                        IMPLSCH.152    
       enddo                                                               IMPLSCH.153    
                                                                           IMPLSCH.154    
C ----------------------------------------------------------------------   IMPLSCH.155    
C                                                                          IMPLSCH.156    
C*    2. COMPUTATION OF IMPLICIT INTEGRATION.                              IMPLSCH.157    
C        ------------------------------------                              IMPLSCH.158    
C                                                                          IMPLSCH.159    
C         INTEGRATION IS DONE FOR A BLOCK                                  IMPLSCH.160    
C         OF LATITUDES BETWEEN PROPAGATION CALLS.                          IMPLSCH.161    
C                                                                          IMPLSCH.162    
 2000 CONTINUE                                                             IMPLSCH.163    
C ----------------------------------------------------------------------   IMPLSCH.164    
C                                                                          IMPLSCH.165    
C*    2.2 COMPUTE MEAN PARAMETERS.                                         IMPLSCH.166    
C         ------------------------                                         IMPLSCH.167    
C                                                                          IMPLSCH.168    
 2200 CONTINUE                                                             IMPLSCH.169    
                                                                           IMPLSCH.170    
         CALL SEMEAN(FL3, IJS, IJL,                                        IMPLSCH.171    
*CALL ARGWVAL                                                              IMPLSCH.172    
*CALL ARGWVFD                                                              IMPLSCH.173    
*CALL ARGWVMN                                                              IMPLSCH.174    
     & icode)                                                              IMPLSCH.175    
                                                                           IMPLSCH.176    
         CALL FEMEAN(FL3, IJS, IJL, ishallo,                               IMPLSCH.177    
*CALL ARGWVAL                                                              IMPLSCH.178    
*CALL ARGWVFD                                                              IMPLSCH.179    
*CALL ARGWVMN                                                              IMPLSCH.180    
*CALL ARGWVSH                                                              IMPLSCH.181    
     & icode)                                                              IMPLSCH.182    
C                                                                          IMPLSCH.183    
C ----------------------------------------------------------------------   IMPLSCH.184    
C                                                                          IMPLSCH.185    
C*    2.3 COMPUTATION OF SOURCE FUNCTIONS.                                 IMPLSCH.186    
C         --------------------------------                                 IMPLSCH.187    
C                                                                          IMPLSCH.188    
 2300 CONTINUE                                                             IMPLSCH.189    
C                                                                          IMPLSCH.190    
C*    2.3.1 INITIALISE SOURCE FUNCTION AND DERIVATIVE ARRAY.               IMPLSCH.191    
C           ------------------------------------------------               IMPLSCH.192    
C                                                                          IMPLSCH.193    
         DO 2311 M=1,NFRE                                                  IMPLSCH.194    
         DO 2311 K=1,NANG                                                  IMPLSCH.195    
         DO 2311 IJ=0,NIBLO                                                IMPLSCH.196    
            SL(IJ,K,M) = 0.                                                IMPLSCH.197    
            FL(IJ,K,M) = 0.                                                IMPLSCH.198    
 2311    CONTINUE                                                          IMPLSCH.199    
C                                                                          IMPLSCH.200    
C*    2.3.2 ADD SOURCE FUNCTIONS AND WAVE STRESS.                          IMPLSCH.201    
C           -------------------------------------                          IMPLSCH.202    
C                                                                          IMPLSCH.203    
         CALL SINPUT (FL3, FL, IJS, IJL, IG, ishallo,                      IMPLSCH.204    
*CALL ARGWVAL                                                              IMPLSCH.205    
*CALL ARGWVCP                                                              IMPLSCH.206    
*CALL ARGWVFD                                                              IMPLSCH.207    
*CALL ARGWVMN                                                              IMPLSCH.208    
*CALL ARGWVSH                                                              IMPLSCH.209    
*CALL ARGWVSR                                                              IMPLSCH.210    
*CALL ARGWVWD                                                              IMPLSCH.211    
     & icode)                                                              IMPLSCH.212    
                                                                           IMPLSCH.213    
c extract diagnostics if required                                          IMPLSCH.214    
         if(len_s2.eq.nang*nfre*niblo) then                                IMPLSCH.215    
           WRITE(6,*)'extracting diagnostics Sinput'                       GIE0F403.267    
           do l=1,nfre                                                     IMPLSCH.217    
            do m=1,nang                                                    IMPLSCH.218    
             nstart=((l-1)*nang + m-1)*niblo                               IMPLSCH.219    
             do ip=ijs,ijl                                                 IMPLSCH.220    
              sin2(nstart+ip)=sl(ip,m,l)*delt                              IMPLSCH.221    
              temp2(ip,m,l)=sl(ip,m,l)                                     IMPLSCH.222    
             enddo                                                         IMPLSCH.223    
            enddo                                                          IMPLSCH.224    
           enddo                                                           IMPLSCH.225    
         endif                                                             IMPLSCH.226    
                                                                           IMPLSCH.227    
         CALL STRESSO (FL3, IJS, IJL, IG, igl,                             IMPLSCH.228    
*CALL ARGWVAL                                                              IMPLSCH.229    
*CALL ARGWVCP                                                              IMPLSCH.230    
*CALL ARGWVFD                                                              IMPLSCH.231    
*CALL ARGWVSR                                                              IMPLSCH.232    
*CALL ARGWVTB                                                              IMPLSCH.233    
*CALL ARGWVWD                                                              IMPLSCH.234    
     & icode)                                                              IMPLSCH.235    
                                                                           IMPLSCH.236    
         CALL SNONLIN (FL3, FL, IJS, IJL, IG, ishallo,                     IMPLSCH.237    
*CALL ARGWVAL                                                              IMPLSCH.238    
*CALL ARGWVNL                                                              IMPLSCH.239    
*CALL ARGWVMN                                                              IMPLSCH.240    
*CALL ARGWVSH                                                              IMPLSCH.241    
*CALL ARGWVSR                                                              IMPLSCH.242    
     & icode)                                                              IMPLSCH.243    
                                                                           IMPLSCH.244    
c extract diagnostics if required                                          IMPLSCH.245    
         if(len_s2.eq.nang*nfre*niblo) then                                IMPLSCH.246    
           WRITE(6,*)'extracting diagnostics Snl'                          GIE0F403.268    
           do l=1,nfre                                                     IMPLSCH.248    
            do m=1,nang                                                    IMPLSCH.249    
             nstart=((l-1)*nang + m-1)*niblo                               IMPLSCH.250    
             do ip=ijs,ijl                                                 IMPLSCH.251    
              snl2(nstart+ip)=(sl(ip,m,l) - temp2(ip,m,l))*delt            IMPLSCH.252    
              temp2(ip,m,l)=sl(ip,m,l)                                     IMPLSCH.253    
             enddo                                                         IMPLSCH.254    
            enddo                                                          IMPLSCH.255    
           enddo                                                           IMPLSCH.256    
         endif                                                             IMPLSCH.257    
                                                                           IMPLSCH.258    
         CALL SDISSIP (FL3 ,FL, IJS, IJL, ishallo,                         IMPLSCH.259    
*CALL ARGWVAL                                                              IMPLSCH.260    
*CALL ARGWVFD                                                              IMPLSCH.261    
*CALL ARGWVMN                                                              IMPLSCH.262    
*CALL ARGWVSH                                                              IMPLSCH.263    
*CALL ARGWVSR                                                              IMPLSCH.264    
     & icode)                                                              IMPLSCH.265    
                                                                           IMPLSCH.266    
c extract diagnostics if required                                          IMPLSCH.267    
         if(len_s2.eq.nang*nfre*niblo) then                                IMPLSCH.268    
           WRITE(6,*)'extracting diagnostics Sds'                          GIE0F403.269    
           do l=1,nfre                                                     IMPLSCH.270    
            do m=1,nang                                                    IMPLSCH.271    
             nstart=((l-1)*nang + m-1)*niblo                               IMPLSCH.272    
             do ip=ijs,ijl                                                 IMPLSCH.273    
              sds2(nstart+ip)=(sl(ip,m,l) - temp2(ip,m,l))*delt            IMPLSCH.274    
              temp2(ip,m,l)=sl(ip,m,l)                                     IMPLSCH.275    
             enddo                                                         IMPLSCH.276    
            enddo                                                          IMPLSCH.277    
           enddo                                                           IMPLSCH.278    
         endif                                                             IMPLSCH.279    
                                                                           IMPLSCH.280    
CSHALLOW                                                                   IMPLSCH.281    
         IF(ISHALLO.NE.1) then                                             IMPLSCH.282    
          CALL SBOTTOM (FL3, FL, IJS, IJL, IG,                             IMPLSCH.283    
*CALL ARGWVAL                                                              IMPLSCH.284    
*CALL ARGWVSH                                                              IMPLSCH.285    
*CALL ARGWVSR                                                              IMPLSCH.286    
     & icode)                                                              IMPLSCH.287    
                                                                           IMPLSCH.288    
c extract diagnostics if required                                          IMPLSCH.289    
         if(len_s2.eq.nang*nfre*niblo) then                                IMPLSCH.290    
           WRITE(6,*)'extracting diagnostics Sbf'                          GIE0F403.270    
           do l=1,nfre                                                     IMPLSCH.292    
            do m=1,nang                                                    IMPLSCH.293    
             nstart=((l-1)*nang + m-1)*niblo                               IMPLSCH.294    
             do ip=ijs,ijl                                                 IMPLSCH.295    
              sbf2(nstart+ip)=(sl(ip,m,l) - temp2(ip,m,l))*delt            IMPLSCH.296    
              temp2(ip,m,l)=sl(ip,m,l)                                     IMPLSCH.297    
             enddo                                                         IMPLSCH.298    
            enddo                                                          IMPLSCH.299    
           enddo                                                           IMPLSCH.300    
         endif                                                             IMPLSCH.301    
        ENDIF                                                              IMPLSCH.302    
CSHALLOW                                                                   IMPLSCH.303    
C ----------------------------------------------------------------------   IMPLSCH.304    
C                                                                          IMPLSCH.305    
C*    2.4 COMPUTATION OF NEW SPECTRA.                                      IMPLSCH.306    
C         ---------------------------                                      IMPLSCH.307    
C                                                                          IMPLSCH.308    
C       INCREASE OF SPECTRUM IN A TIME STEP IS LIMITED TO A FINITE         IMPLSCH.309    
C       FRACTION OF A TYPICAL F**(-5) EQUILIBRIUM SPECTRUM.                IMPLSCH.310    
C                                                                          IMPLSCH.311    
 2400 CONTINUE                                                             IMPLSCH.312    
                                                                           IMPLSCH.313    
         DO 2401 M=1,NFRE                                                  IMPLSCH.314    
cc                                                                         IMPLSCH.315    
CCMH  note this term 1200 limits delt to be a multiple of 20 mins          IMPLSCH.316    
CCMH  or else some constant in here is hardwired to 20 minutes             IMPLSCH.317    
cc                                                                         IMPLSCH.318    
            DELFL(M) = 0.62E-04*FR(M)**(-5.)*DELT/1200.                    IMPLSCH.319    
            DO 2402 K=1,NANG                                               IMPLSCH.320    
               DO 2403 IJ=IJS,IJL                                          IMPLSCH.321    
                  GTEMP1 = MAX((1.-DELT5*FL(IJ,K,M)),1.)                   IMPLSCH.322    
                  GTEMP2 = DELT*SL(IJ,K,M)/GTEMP1                          IMPLSCH.323    
                  FLHAB = ABS(GTEMP2)                                      IMPLSCH.324    
                  FLHAB = MIN(FLHAB,DELFL(M))                              IMPLSCH.325    
                  FL3(IJ,K,M) = FL3(IJ,K,M) + SIGN(FLHAB,GTEMP2)           IMPLSCH.326    
                  FL3(IJ,K,M) = MAX(FL3(IJ,K,M),0.)                        IMPLSCH.327    
 2403          CONTINUE                                                    IMPLSCH.328    
 2402       CONTINUE                                                       IMPLSCH.329    
 2401    CONTINUE                                                          IMPLSCH.330    
C                                                                          IMPLSCH.331    
C ----------------------------------------------------------------------   IMPLSCH.332    
C                                                                          IMPLSCH.333    
C*    2.5 REPLACE DIAGNOSTIC PART OF SPECTRA BY A F**(-5) TAIL.            IMPLSCH.334    
C         -----------------------------------------------------            IMPLSCH.335    
C                                                                          IMPLSCH.336    
 2500 CONTINUE                                                             IMPLSCH.337    
C                                                                          IMPLSCH.338    
C*    2.5.1 COMPUTE MEAN PARAMETERS.                                       IMPLSCH.339    
C           ------------------------                                       IMPLSCH.340    
C                                                                          IMPLSCH.341    
         CALL SEMEAN(FL3, IJS, IJL,                                        IMPLSCH.342    
*CALL ARGWVAL                                                              IMPLSCH.343    
*CALL ARGWVFD                                                              IMPLSCH.344    
*CALL ARGWVMN                                                              IMPLSCH.345    
     & icode)                                                              IMPLSCH.346    
                                                                           IMPLSCH.347    
         CALL FEMEAN(FL3, IJS, IJL, ishallo,                               IMPLSCH.348    
*CALL ARGWVAL                                                              IMPLSCH.349    
*CALL ARGWVFD                                                              IMPLSCH.350    
*CALL ARGWVMN                                                              IMPLSCH.351    
*CALL ARGWVSH                                                              IMPLSCH.352    
     & icode)                                                              IMPLSCH.353    
C                                                                          IMPLSCH.354    
C*    2.5.2 COMPUTE LAST FREQUENCY INDEX OF PROGNOSTIC PART OF SPECTRUM.   IMPLSCH.355    
C*          FREQUENCIES LE MAX(4*F(PM) , 2.5*FMEAN).                       IMPLSCH.356    
C           ------------------------------------------------------------   IMPLSCH.357    
C                                                                          IMPLSCH.358    
         FPMH = 2.5/FR(1)                                                  IMPLSCH.359    
         FPM = 4.*GZPI28/FR(1)                                             IMPLSCH.360    
cc                                                                         IMPLSCH.361    
ccmh note from elsewhere that 24.1598 is 1./(log10(1.1))                   IMPLSCH.362    
cc                                                                         IMPLSCH.363    
         DO 2521 IJ=IJS,IJL                                                IMPLSCH.364    
            FPM4 = FPM/(USNEW(IJ,ig)+0.1E-9)                               IMPLSCH.365    
            MIJ(IJ) = ALOG10(FPM4)*24.1589+2.                              IMPLSCH.366    
            FPM4 = FMEAN(IJ)*FPMH                                          IMPLSCH.367    
            MFMF(IJ) = ALOG10(FPM4)*24.1589+1.                             IMPLSCH.368    
 2521    CONTINUE                                                          IMPLSCH.369    
                                                                           IMPLSCH.370    
         DO 2522 IJ=IJS,IJL                                                IMPLSCH.371    
            MIJ(IJ) = MAX(MFMF(IJ),MIJ(IJ))                                IMPLSCH.372    
            MIJ(IJ) = MIN(MIJ(IJ),NFRE)                                    IMPLSCH.373    
 2522    CONTINUE                                                          IMPLSCH.374    
C                                                                          IMPLSCH.375    
C*    2.5.3 COMPUTE TAIL ENERGY RATIOS.                                    IMPLSCH.376    
C           ---------------------------                                    IMPLSCH.377    
C                                                                          IMPLSCH.378    
         DO 2531 M=1,NFRE                                                  IMPLSCH.379    
            DELFL(M) = (1./FR(M))**5.                                      IMPLSCH.380    
 2531    CONTINUE                                                          IMPLSCH.381    
         DO 2532 IJ=IJS,IJL                                                IMPLSCH.382    
            GADIAG(IJ) = FR(MIJ(IJ))**5.                                   IMPLSCH.383    
 2532    CONTINUE                                                          IMPLSCH.384    
C                                                                          IMPLSCH.385    
C*    2.5.4 MERGE TAIL INTO SPECTRA.                                       IMPLSCH.386    
C           ------------------------                                       IMPLSCH.387    
C                                                                          IMPLSCH.388    
         DO 2541 M=1,NFRE                                                  IMPLSCH.389    
            DO 2542 IJ=IJS,IJL                                             IMPLSCH.390    
               FCONST(IJ,M) = 0.                                           IMPLSCH.391    
               TEMP(IJ,M) = GADIAG(IJ)*DELFL(M)                            IMPLSCH.392    
 2542       CONTINUE                                                       IMPLSCH.393    
 2541    CONTINUE                                                          IMPLSCH.394    
         DO 2543 IJ=IJS,IJL                                                IMPLSCH.395    
            J = MIJ(IJ)                                                    IMPLSCH.396    
            DO 2544 M=1,J                                                  IMPLSCH.397    
               FCONST(IJ,M) = 1.                                           IMPLSCH.398    
               TEMP(IJ,M) = 0.                                             IMPLSCH.399    
 2544       CONTINUE                                                       IMPLSCH.400    
 2543    CONTINUE                                                          IMPLSCH.401    
C                                                                          IMPLSCH.402    
         DO 2545 K=1,NANG                                                  IMPLSCH.403    
            DO 2546 IJ=IJS,IJL                                             IMPLSCH.404    
               GADIAG(IJ) = FL3(IJ,K,MIJ(IJ))                              IMPLSCH.405    
 2546       CONTINUE                                                       IMPLSCH.406    
            DO 2547 M=1,NFRE                                               IMPLSCH.407    
               DO 2548 IJ=IJS,IJL                                          IMPLSCH.408    
                   FL3(IJ,K,M) = GADIAG(IJ)*TEMP(IJ,M)                     IMPLSCH.409    
     1                         + FL3(IJ,K,M)*FCONST(IJ,M)                  IMPLSCH.410    
 2548          CONTINUE                                                    IMPLSCH.411    
 2547       CONTINUE                                                       IMPLSCH.412    
 2545    CONTINUE                                                          IMPLSCH.413    
                                                                           IMPLSCH.414    
c extract diagnostics if required                                          IMPLSCH.415    
         if(len_s2.eq.nang*nfre*niblo) then                                IMPLSCH.416    
           WRITE(6,*)'extracting diagnostics Stail'                        GIE0F403.271    
           do l=1,nfre                                                     IMPLSCH.418    
            do m=1,nang                                                    IMPLSCH.419    
             nstart=((l-1)*nang + m-1)*niblo                               IMPLSCH.420    
             do ip=ijs,ijl                                                 IMPLSCH.421    
              stl2(nstart+ip)=(sl(ip,m,l) - temp2(ip,m,l))*delt            IMPLSCH.422    
             enddo                                                         IMPLSCH.423    
            enddo                                                          IMPLSCH.424    
           enddo                                                           IMPLSCH.425    
         endif                                                             IMPLSCH.426    
C                                                                          IMPLSCH.427    
      RETURN                                                               IMPLSCH.428    
      END                                                                  IMPLSCH.429    
*ENDIF                                                                     IMPLSCH.430