*IF DEF,W01_1A                                                             WVV0F401.6      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.15847  
C                                                                          GTS2F400.15848  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.15849  
C restrictions as set forth in the contract.                               GTS2F400.15850  
C                                                                          GTS2F400.15851  
C                Meteorological Office                                     GTS2F400.15852  
C                London Road                                               GTS2F400.15853  
C                BRACKNELL                                                 GTS2F400.15854  
C                Berkshire UK                                              GTS2F400.15855  
C                RG12 2SZ                                                  GTS2F400.15856  
C                                                                          GTS2F400.15857  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.15858  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.15859  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.15860  
C Modelling at the above address.                                          GTS2F400.15861  
C ******************************COPYRIGHT******************************    GTS2F400.15862  
C                                                                          GTS2F400.15863  
                                                                           PROPDOT.3      

      SUBROUTINE PROPDOT(ishallo, irefra,                                  ,1PROPDOT.4      
*CALL ARGWVAL                                                              PROPDOT.5      
*CALL ARGWVCU                                                              PROPDOT.6      
*CALL ARGWVFD                                                              PROPDOT.7      
*CALL ARGWVGD                                                              PROPDOT.8      
*CALL ARGWVMP                                                              PROPDOT.9      
*CALL ARGWVRF                                                              PROPDOT.10     
*CALL ARGWVSH                                                              PROPDOT.11     
*CALL ARGWVKL                                                              PROPDOT.12     
     & icode)                                                              PROPDOT.13     
                                                                           PROPDOT.14     
*CALL PARWVSH                                                              PROPDOT.15     
                                                                           PROPDOT.16     
*CALL TYPWVCU                                                              PROPDOT.17     
*CALL TYPWVFD                                                              PROPDOT.18     
*CALL TYPWVGD                                                              PROPDOT.19     
*CALL TYPWVMP                                                              PROPDOT.20     
*CALL TYPWVRF                                                              PROPDOT.21     
*CALL TYPWVSH                                                              PROPDOT.22     
*CALL TYPWVKL                                                              PROPDOT.23     
*CALL TYPWVAL                                                              PROPDOT.24     
                                                                           PROPDOT.25     
C ----------------------------------------------------------------------   PROPDOT.26     
C                                                                          PROPDOT.27     
C**** *PROPDOT* - PROPAGATION DOT TERMS FROM DEPTH AND CURRENT GRADIENT.   PROPDOT.28     
C                                                                          PROPDOT.29     
C     H. GUNTHER   GKSS/ECMWF   17/02/91                                   PROPDOT.30     
C                                                                          PROPDOT.31     
C*    PURPOSE.                                                             PROPDOT.32     
C     --------                                                             PROPDOT.33     
C                                                                          PROPDOT.34     
C       COMPUTATION OF COMMON REFDOT FOR PROPAGATION.                      PROPDOT.35     
C                                                                          PROPDOT.36     
C**   INTERFACE.                                                           PROPDOT.37     
C     ----------                                                           PROPDOT.38     
C                                                                          PROPDOT.39     
C       *CALL* *PROPDOT*                                                   PROPDOT.40     
C                                                                          PROPDOT.41     
C     METHOD.                                                              PROPDOT.42     
C     -------                                                              PROPDOT.43     
C                                                                          PROPDOT.44     
C       IN A LOOP OVER THE BLOCKS THE COMMON UBUF IS READ,                 PROPDOT.45     
C       THE DEPTH AND CURRENT GRADIENTS ARE COMPUTED,                      PROPDOT.46     
C       COMMON REFDOT (DEPTH AND CURRENT REFRACTION FOR THETA DOT)         PROPDOT.47     
C       IS COMPUTED AND WRITTEN TO MASS STORAGE (IU16).                    PROPDOT.48     
C       IN CASE OF CURRENT REFRACTION THE COMPLETE SIGMA DOT TERM          PROPDOT.49     
C       IS COMPUTED AND WRITTEN TO IU16 ADDITIONALLY.                      PROPDOT.50     
C       WRITE OPERATIONS ARE NOT DONE FOR COMMON UBUF AND REFDOT           PROPDOT.51     
C       IF THIS IS A ONE BLOCK MODEL.                                      PROPDOT.52     
C                                                                          PROPDOT.53     
C     EXTERNALS.                                                           PROPDOT.54     
C     ----------                                                           PROPDOT.55     
C                                                                          PROPDOT.56     
C       *GRADI*     - COMPUTES DEPTH AND CURRENT GRADIENTS.                PROPDOT.57     
C                                                                          PROPDOT.58     
C     REFERENCE.                                                           PROPDOT.59     
C     ----------                                                           PROPDOT.60     
C                                                                          PROPDOT.61     
C       NONE.                                                              PROPDOT.62     
C                                                                          PROPDOT.63     
C ----------------------------------------------------------------------   PROPDOT.64     
C                                                                          PROPDOT.65     
ccc*CALL PARALL                                                            PROPDOT.66     
C                                                                          PROPDOT.67     
ccc*CALL COMCURR                                                           PROPDOT.68     
C                                                                          PROPDOT.69     
ccc*CALL COMFRED                                                           PROPDOT.70     
C                                                                          PROPDOT.71     
ccc*CALL COMGRID                                                           PROPDOT.72     
C                                                                          PROPDOT.73     
ccc*CALL COMMAP                                                            PROPDOT.74     
C                                                                          PROPDOT.75     
ccc*CALL COMREFD                                                           PROPDOT.76     
C                                                                          PROPDOT.77     
ccc*CALL COMSHAL                                                           PROPDOT.78     
C                                                                          PROPDOT.79     
ccc*CALL COMSOUR                                                           PROPDOT.80     
C                                                                          PROPDOT.81     
ccc*CALL COMSTAT                                                           PROPDOT.82     
C                                                                          PROPDOT.83     
ccc*CALL COMUBUF                                                           PROPDOT.84     
C                                                                          PROPDOT.85     
ccc*CALL COMUNIT                                                           PROPDOT.86     
C                                                                          PROPDOT.87     
C ----------------------------------------------------------------------   PROPDOT.88     
C                                                                          PROPDOT.89     
C       local arrays for one block only                                    PROPDOT.90     
C                                                                          PROPDOT.91     
      DIMENSION DDPHI(NIBLD), DDLAM(NIBLD), DUPHI(NIBLC), DULAM(NIBLC),    PROPDOT.92     
     1          DVPHI(NIBLC), DVLAM(NIBLC), DCO(NIBLD), OMDD(NIBLC)        PROPDOT.93     
C                                                                          PROPDOT.94     
C ----------------------------------------------------------------------   PROPDOT.95     
C                                                                          PROPDOT.96     
ccmh notes - array sl from comSR is used as work space only                PROPDOT.97     
ccmh for shallow water current refraction need array (ij,k,l)              PROPDOT.98     
ccmh for deep water current refraction use array (ij,k)                    PROPDOT.99     
                                                                           PROPDOT.100    
C*    1. IF CARTESIAN PROPAGATION SET COSINE OF LAT TO 1.                  PROPDOT.101    
C         -----------------------------------------------                  PROPDOT.102    
C                                                                          PROPDOT.103    
      WRITE(6,*)'in propdot'                                               GIE0F403.561    
 1000 CONTINUE                                                             PROPDOT.105    
      IF (ICASE.NE.1) THEN                                                 PROPDOT.106    
         DO 1001 IJ = 1,NIBLD                                              PROPDOT.107    
            DCO(IJ) = 1.                                                   PROPDOT.108    
 1001    CONTINUE                                                          PROPDOT.109    
      ENDIF                                                                PROPDOT.110    
C                                                                          PROPDOT.111    
C*    2. LOOP OVER BLOCKS.                                                 PROPDOT.112    
C        -----------------                                                 PROPDOT.113    
C                                                                          PROPDOT.114    
      DO 2000 IG = 1,IGL                                                   PROPDOT.115    
C                                                                          PROPDOT.116    
C*    2.1 IF MULTI BLOCK VERSION.                                          PROPDOT.117    
C         -----------------------                                          PROPDOT.118    
C                                                                          PROPDOT.119    
cccc     IF (IGL.NE.1) THEN ! UMwave needs to do block one also            PROPDOT.120    
C                                                                          PROPDOT.121    
C*    2.1.2 COMPUTE SHALLOW WATER TABLE INDICES. for this block            PROPDOT.122    
c      but not for   block 1 ?? where is indep filled for block one??      PROPDOT.123    
C           ------------------------------------                           PROPDOT.124    
C                                                                          PROPDOT.125    
            IF (ISHALLO.NE.1) THEN                                         PROPDOT.126    
               DO 2121 IJ=1,IJLT(IG)                                       PROPDOT.127    
                if(depth(ij,ig).gt.0.) then                                PROPDOT.128    
                  XD = LOG(DEPTH(IJ,IG)/DEPTHA)/LOG(DEPTHD)+1.             PROPDOT.129    
                  ID = NINT(XD)                                            PROPDOT.130    
                  ID = MAX(ID,1)                                           PROPDOT.131    
                  INDEP(IJ) = MIN(ID,NDEPTH)                               PROPDOT.132    
                else                                                       PROPDOT.133    
      WRITE(6,*)'fatal error in propags: zero depth encountered'           GIE0F403.562    
                 icode=1                                                   PROPDOT.135    
                 goto 999                                                  PROPDOT.136    
                endif                                                      PROPDOT.137    
 2121          CONTINUE                                                    PROPDOT.138    
            ENDIF                                                          PROPDOT.139    
CSHALLOW                                                                   PROPDOT.140    
cccc     ENDIF ! commented out as UMwave needs to do block one also        PROPDOT.141    
C                                                                          PROPDOT.142    
C*    2.2 DEPTH AND CURRENT GRADIENTS. for this block / every block        PROPDOT.143    
C         ----------------------------                                     PROPDOT.144    
C                                                                          PROPDOT.145    
        WRITE(6,*)'calling gradi from propdot'                             GIE0F403.563    
         CALL GRADI (IG, IREFRA, DDPHI, DDLAM, DUPHI,                      PROPDOT.147    
     &               DULAM, DVPHI, DVLAM,                                  PROPDOT.148    
*CALL ARGWVAL                                                              PROPDOT.149    
*CALL ARGWVCU                                                              PROPDOT.150    
*CALL ARGWVGD                                                              PROPDOT.151    
*CALL ARGWVSH                                                              PROPDOT.152    
*CALL ARGWVKL                                                              PROPDOT.153    
     & icode)                                                              PROPDOT.154    
C                                                                          PROPDOT.155    
C*    2.3 COSINE OF LATITUDES IF SPHERICAL PROPAGATION.                    PROPDOT.156    
C         ---------------------------------------------                    PROPDOT.157    
C                                                                          PROPDOT.158    
         IF (ICASE.EQ.1) THEN                                              PROPDOT.159    
            DO 2301 IJ = IJS(IG),IJL(IG)                                   PROPDOT.160    
               JH = KXLT(IJ,IG)                                            PROPDOT.161    
               DCO(IJ) = 1./COSPH(JH)                                      PROPDOT.162    
 2301       CONTINUE                                                       PROPDOT.163    
         ENDIF                                                             PROPDOT.164    
C                                                                          PROPDOT.165    
C*    2.4 DEPTH GRADIENT PART OF SIGMA DOT.                                PROPDOT.166    
C         ---------------------------------                                PROPDOT.167    
C                                                                          PROPDOT.168    
         IF (ISHALLO.NE.1 .AND. IREFRA.EQ.2) THEN                          PROPDOT.169    
            DO 2401 IJ = IJS(IG),IJL(IG)                                   PROPDOT.170    
               OMDD(IJ) = V(IJ,IG)*DDPHI(IJ) +                             PROPDOT.171    
     1                    U(IJ,IG)*DDLAM(IJ)*DCO(IJ)                       PROPDOT.172    
 2401       CONTINUE                                                       PROPDOT.173    
         ENDIF                                                             PROPDOT.174    
C                                                                          PROPDOT.175    
C*    2.5. LOOP OVER DIRECTIONS.                                           PROPDOT.176    
C          ---------------------                                           PROPDOT.177    
C                                                                          PROPDOT.178    
         DO 2501 K=1,NANG                                                  PROPDOT.179    
            SD = SINTH(K)                                                  PROPDOT.180    
            CD = COSTH(K)                                                  PROPDOT.181    
C                                                                          PROPDOT.182    
C*    2.5.1. DEPTH GRADIENT OF THETA DOT.                                  PROPDOT.183    
C            ----------------------------                                  PROPDOT.184    
C                                                                          PROPDOT.185    
            IF (ISHALLO.NE.1) THEN                                         PROPDOT.186    
               DO 2511 IJ = IJS(IG),IJL(IG)                                PROPDOT.187    
                  THDD(IJ,K,ig) = SD*DDPHI(IJ) - CD*DDLAM(IJ)*DCO(IJ)      PROPDOT.188    
 2511          CONTINUE                                                    PROPDOT.189    
            ENDIF                                                          PROPDOT.190    
C                                                                          PROPDOT.191    
C*    2.5.2 SIGMA DOT AND THETA DOT PART FROM CURRENT GRADIENT.            PROPDOT.192    
C           ---------------------------------------------------            PROPDOT.193    
C                                                                          PROPDOT.194    
            IF (IREFRA.EQ.2) THEN                                          PROPDOT.195    
               SS  = SD**2                                                 PROPDOT.196    
               SC  = SD*CD                                                 PROPDOT.197    
               CC  = CD**2                                                 PROPDOT.198    
               DO 2521 IJ = IJS(IG),IJL(IG)                                PROPDOT.199    
ccc old line      SL(IJ,K,NFRE) = -SC*DUPHI(IJ) - CC*DVPHI(IJ)             PROPDOT.200    
              SIDC(IJ,K,NFRE,ig) = -SC*DUPHI(IJ) - CC*DVPHI(IJ)            PROPDOT.201    
     1                          - (SS*DULAM(IJ) + SC*DVLAM(IJ))*DCO(IJ)    PROPDOT.202    
                  THDC(IJ,K,ig) =  SS*DUPHI(IJ) + SC*DVPHI(IJ)             PROPDOT.203    
     1                          - (SC*DULAM(IJ) + CC*DVLAM(IJ))*DCO(IJ)    PROPDOT.204    
 2521          CONTINUE                                                    PROPDOT.205    
C                                                                          PROPDOT.206    
C*    2.5.3 LOOP OVER FREQUENCIES. if shallow water + currents             PROPDOT.207    
C           ----------------------                                         PROPDOT.208    
C                                                                          PROPDOT.209    
               IF (ISHALLO.NE.1) THEN                                      PROPDOT.210    
               DO 2530 M=1,NFRE                                            PROPDOT.211    
                  DO 2531 IJ=IJS(IG),IJL(IG)                               PROPDOT.212    
ccc old line         SL(IJ,K,M) = (SL(IJ,K,NFRE)*TCGOND(INDEP(IJ),M)       PROPDOT.213    
           SIDC(IJ,K,M,ig) = (SIDC(IJ,K,NFRE,ig)*TCGOND(INDEP(IJ),M)       PROPDOT.214    
     1                          + OMDD(IJ)*TSIHKD(INDEP(IJ),M))            PROPDOT.215    
     2                          * TFAK(INDEP(IJ),M)                        PROPDOT.216    
 2531             CONTINUE                                                 PROPDOT.217    
C                                                                          PROPDOT.218    
C*    BRANCH BACK TO 2.5.3 FOR NEXT FREQUENCY.                             PROPDOT.219    
C                                                                          PROPDOT.220    
 2530          CONTINUE                                                    PROPDOT.221    
               ENDIF                                                       PROPDOT.222    
            ENDIF                                                          PROPDOT.223    
C                                                                          PROPDOT.224    
C*    BRANCH BACK TO 2.5 FOR NEXT DIRECTION.                               PROPDOT.225    
C                                                                          PROPDOT.226    
 2501    CONTINUE                                                          PROPDOT.227    
C                                                                          PROPDOT.228    
C*    BRANCH BACK TO 2. FOR NEXT BLOCK.                                    PROPDOT.229    
C                                                                          PROPDOT.230    
 2000 CONTINUE                                                             PROPDOT.231    
                                                                           PROPDOT.232    
  999 continue                                                             PROPDOT.233    
      RETURN                                                               PROPDOT.234    
      END                                                                  PROPDOT.235    
*ENDIF                                                                     PROPDOT.236