SUBROUTINE SIG2P(KMAX,MTV2,MTV3,HDAT,PDAT,PSFCM,H,HP,KST)
c
c subprogram:
c   prgmmr: Qingfu Liu    org:              date: 2000-04-25 
c
c abstract:
c   Convert data from SIG surface to P surface.
c
c usage: call
c   Input: HDAT - DATA at SIG surface
c          KST: not used
C   Ouput: PDAT - DATA at P surface

        PARAMETER (IX=41, JX=41)
 
        REAL HDAT(IX,JX,MTV2),PDAT(IX,JX,MTV3)
        REAL ZS(IX,JX),PS(IX,JX),APS(IX,JX)
        REAL H(IX,JX,KMAX),HP(IX,JX,2*KMAX+1)

c        REAL(4) FHOUR,X(160),SI(KMAX+1),SL(KMAX)
        REAL*4 FHOUR,DUMMY(245)
        COMMON /COEF3/FHOUR,DUMMY
        
        REAL, ALLOCATABLE :: TV(:,:,:),DIV(:,:,:),VORT(:,:,:),
     &                       U(:,:,:),V(:,:,:),SH(:,:,:)
        REAL, ALLOCATABLE :: PSIG(:,:,:),RH(:,:,:),
     &                       APG(:,:,:),T(:,:,:)
        REAL, ALLOCATABLE :: P(:),AP(:)
        REAL, ALLOCATABLE :: DIVP(:,:,:),VORTP(:,:,:),UP(:,:,:),
     &                 VP(:,:,:),RHP(:,:,:),SHP(:,:,:),TP(:,:,:)      

        REAL, ALLOCATABLE :: SI(:),SL(:)
 
        KMAX1=KMAX+1
        NMAX=2*KMAX+1

        ALLOCATE ( SI(KMAX1),SL(KMAX) )

        DO K=1,KMAX1
          SI(K)=DUMMY(K)
        END DO
        DO K=1,KMAX
          SL(K)=DUMMY(KMAX1+K)
        END DO

        ALLOCATE ( TV(IX,JX,KMAX), DIV(IX,JX,KMAX),
     &             VORT(IX,JX,KMAX),U(IX,JX,KMAX),
     &             V(IX,JX,KMAX),SH(IX,JX,KMAX) )

        ALLOCATE ( PSIG(IX,JX,KMAX),RH(IX,JX,KMAX),
     &         APG(IX,JX,KMAX),T(IX,JX,KMAX) )

        ALLOCATE ( P(NMAX),AP(NMAX) )
        ALLOCATE ( DIVP(IX,JX,NMAX),VORTP(IX,JX,NMAX),
     &             UP(IX,JX,NMAX), VP(IX,JX,NMAX),
     &             RHP(IX,JX,NMAX),SHP(IX,JX,NMAX),
     &             TP(IX,JX,NMAX) )

        COEF1=461.5/287.05-1.
        COEF2=287.05/9.8

c Surface Height and Surface Press
        DO J=1,JX
        DO I=1,IX
          ZS(I,J)=HDAT(I,J,1)
          PS(I,J)=EXP(HDAT(I,J,2))*1000.
          APS(I,J)=ALOG(PS(I,J))
        END DO
        END DO

c DIV, VORT, U, V, T and Specific Humidity at Sigma Level
        DO K=1,KMAX
          DO J=1,JX
          DO I=1,IX
            DIV(I,J,K)=HDAT(I,J,KMAX+4+4*(K-1))    
            VORT(I,J,K)=HDAT(I,J,KMAX+5+4*(K-1))   
            U(I,J,K)=HDAT(I,J,KMAX+6+4*(K-1)) 
            V(I,J,K)=HDAT(I,J,KMAX+7+4*(K-1))
            SH(I,J,K)=HDAT(I,J,KMAX*5+3+K)
            TV(I,J,K)=HDAT(I,J,3+K)
            T(I,J,K)=TV(I,J,K)/(1.+COEF1*SH(I,J,K))
          END DO
          END DO
        END DO
     
c Press at Sigma-Level
        DO K=1,KMAX
        DO J=1,JX
        DO I=1,IX
          PSIG(I,J,K)=SL(K)*PS(I,J)
          APG(I,J,K)=ALOG(PSIG(I,J,K))
        END DO
        END DO
        END DO

        DO J=1,JX
        DO I=1,IX
          TVD=TV(I,J,1)
          H(I,J,1)=ZS(I,J)-
     &            COEF2*TVD*(APG(I,J,1)-APS(I,J))        
          DO K=2,KMAX
            TVU=TV(I,J,K)
            H(I,J,K)=H(I,J,K-1)-
     &      COEF2*0.5*(TVD+TVU)*(APG(I,J,K)-APG(I,J,K-1))
            TVD=TVU
          END DO
        END DO
        END DO

c Const. P-Level      
        DO K=1,KMAX
          P(2*K-1)=SI(K)*PSFCM
          P(2*K)=SL(K)*PSFCM
        END DO
        P(NMAX)=SL(KMAX)*0.5*PSFCM
        DO N=1,NMAX
          AP(N)=ALOG(P(N))
        END DO

        GAMA=6.5E-3
        COEF3=COEF2*GAMA
        DO J=1,JX
        DO I=1,IX
          HP(I,J,1)=H(I,J,1)+
     &        T(I,J,1)/GAMA*(1.-(P(1)/PSIG(I,J,1))**COEF3)
          HP(I,J,NMAX)=H(I,J,KMAX)+
     &    T(I,J,KMAX)/GAMA*(1.-(P(NMAX)/PSIG(I,J,KMAX))**COEF3)
          DO N=2,NMAX-1
            K=(N-1)/2+1
            HP(I,J,N)=H(I,J,K)+
     &          T(I,J,K)/GAMA*(1.-(P(N)/PSIG(I,J,K))**COEF3)
          END DO
        END DO
        END DO
 
        DO N=1,NMAX
          K=(N-1)/2+1
c          PRINT*,'Press=',N,P(N)/100.
!          PRINT*,'Press1=',N,K,P(N),HP(20,20,N),H(20,20,K)
        END DO

c RH at K=1 (Sigma=0.995)
!        DO K=1,KMAX
        K=1
        DO J=1,JX
        DO I=1,IX
          DTEMP=T(I,J,K)-273.15
          ES=611.2*EXP(17.67*DTEMP/(DTEMP+243.5))
          SHS=0.622*ES/(PSIG(I,J,K)-0.378*ES)
          RH(I,J,K)=MIN(MAX(SH(I,J,K)/SHS,0.),1.0)
        END DO
        END DO
!        END DO

! Interpolate to Const. Press Level.
        DO J=1,JX
        DO I=1,IX
        DO N=1,NMAX
          IF(P(N).GE.PSIG(I,J,1))THEN        
! below SIGMA K=1
            DIVP(I,J,N)=DIV(I,J,1)
            VORTP(I,J,N)=VORT(I,J,1)
            UP(I,J,N)=U(I,J,1)
            VP(I,J,N)=V(I,J,1)
            RHP(I,J,N)=RH(I,J,1)           ! RH at SIGMA K=1
            TDRY=T(I,J,1)-GAMA*(HP(I,J,N)-H(I,J,1))
            DTEMP=TDRY-273.15
            ES=611.2*EXP(17.67*DTEMP/(DTEMP+243.5))
            SHS=0.622*ES/(P(N)-0.378*ES)
            SHP(I,J,N)=RHP(I,J,N)*SHS
            TP(I,J,N)=TDRY*(1.+COEF1*SHP(I,J,N))
! within domain
           ELSE IF((P(N).LT.PSIG(I,J,1)).AND.
     &             (P(N).GT.PSIG(I,J,KMAX)))THEN                            
             DO L=1,KMAX
              IF((P(N).LT.PSIG(I,J,L)).AND.
     &               (P(N).GE.PSIG(I,J,L+1)))THEN 
                W=(AP(N)-APG(I,J,L))/(APG(I,J,L+1)-APG(I,J,L))
c             W1=(P(N)-PSIG(I,J,L))/(PSIG(I,J,L+1)-PSIG(I,J,L))
                DIVP(I,J,N)=DIV(I,J,L)+
     &                      W*(DIV(I,J,L+1)-DIV(I,J,L))
                VORTP(I,J,N)=VORT(I,J,L)+
     &                      W*(VORT(I,J,L+1)-VORT(I,J,L))
                UP(I,J,N)=U(I,J,L)+W*(U(I,J,L+1)-U(I,J,L))
                VP(I,J,N)=V(I,J,L)+W*(V(I,J,L+1)-V(I,J,L))
                TP(I,J,N)=TV(I,J,L)+W*(TV(I,J,L+1)-TV(I,J,L))
                SHP(I,J,N)=SH(I,J,L)+W*(SH(I,J,L+1)-SH(I,J,L)) 
                GO TO 123
              END IF
             END DO
 123         CONTINUE
! above top
         ELSE IF(P(N).LE.PSIG(I,J,KMAX))THEN
           DIVP(I,J,N)=DIV(I,J,KMAX)
           VORTP(I,J,N)=VORT(I,J,KMAX)
           UP(I,J,N)=U(I,J,KMAX)
           VP(I,J,N)=V(I,J,KMAX)
           TDRY=T(I,J,KMAX)-GAMA*(HP(I,J,N)-H(I,J,KMAX))
           SHP(I,J,N)=SH(I,J,KMAX)
           TP(I,J,N)=TDRY*(1.+COEF1*SHP(I,J,N))
         ELSE
           PRINT*,'SOMETHING IS WRONG'
         END IF

        END DO
        END DO
        END DO

        DO J=1,JX
        DO I=1,IX
          PDAT(I,J,1)=HDAT(I,J,1)
          PDAT(I,J,2)=HDAT(I,J,2)
          PDAT(I,J,3)=HDAT(I,J,3)
          DO N=1,NMAX
            PDAT(I,J,NMAX+4+4*(N-1))=DIVP(I,J,N)
            PDAT(I,J,NMAX+5+4*(N-1))=VORTP(I,J,N)
            PDAT(I,J,NMAX+6+4*(N-1))=UP(I,J,N)
            PDAT(I,J,NMAX+7+4*(N-1))=VP(I,J,N)
            PDAT(I,J,NMAX*5+3+N)=SHP(I,J,N) 
            PDAT(I,J,3+N)=TP(I,J,N)
          END DO
        END DO
        END DO

        DEALLOCATE ( SI,SL )

        DEALLOCATE ( T, TV, DIV, VORT, U, V, SH )

        DEALLOCATE ( PSIG, RH, APG )

        DEALLOCATE ( P, AP )
        DEALLOCATE ( DIVP, VORTP, UP, VP, RHP, SHP, TP )


        END


        SUBROUTINE P2SIG(KMAX,MTV2,MTV3,HDPB,PDPB,PDAT,HDAT,
     &                   PSFCM,H,HP,KST)

c P to SIG conversion
c
c Input: HDPB (perturbation part), PDPB (perturbation part)
c Input: PDAT (total field), PDPB+PDAT = ENV part
C Ouput: HDPB (the value at the top most level kmax is not changed)
c KST: not used

        PARAMETER (IX=41, JX=41)

        REAL HDPB(IX,JX,MTV2),HDAT(IX,JX,MTV2)
        REAL PDPB(IX,JX,MTV3),PDAT(IX,JX,MTV3)
        REAL ZS(IX,JX),PS(IX,JX),APS(IX,JX)
        REAL H(IX,JX,KMAX),HP(IX,JX,2*KMAX+1) 

c        REAL(4) FHOUR,X(160),SI(KMAX+1),SL(KMAX)
        REAL*4 FHOUR,DUMMY(245)
        COMMON /COEF3/FHOUR,DUMMY

        REAL, ALLOCATABLE :: TV(:,:,:),DIV(:,:,:),VORT(:,:,:),
     &                       U(:,:,:),V(:,:,:),SH(:,:,:)
        REAL, ALLOCATABLE :: PSIG(:,:,:),RH(:,:,:),
     &                       APG(:,:,:)
        REAL, ALLOCATABLE :: P(:),AP(:)
        REAL, ALLOCATABLE :: DIVP(:,:,:),VORTP(:,:,:),UP(:,:,:),
     &                       VP(:,:,:),RHP(:,:,:)
        REAL, ALLOCATABLE :: TVP(:,:,:),TVP_E(:,:,:)
        REAL, ALLOCATABLE :: TP_E(:,:,:)
        REAL, ALLOCATABLE :: SHP(:,:,:),SHP_E(:,:,:)
        REAL, ALLOCATABLE :: HT_T(:,:,:),HSH_T(:,:,:)

        REAL, ALLOCATABLE :: SI(:),SL(:)

        KMAX1=KMAX+1
        NMAX=2*KMAX+1

        ALLOCATE ( SI(KMAX1),SL(KMAX) )

        DO K=1,KMAX1
          SI(K)=DUMMY(K)
        END DO
        DO K=1,KMAX
          SL(K)=DUMMY(KMAX1+K)
        END DO

        ALLOCATE ( TV(IX,JX,KMAX), DIV(IX,JX,KMAX),
     &             VORT(IX,JX,KMAX),U(IX,JX,KMAX),
     &             V(IX,JX,KMAX),SH(IX,JX,KMAX) )

        ALLOCATE ( PSIG(IX,JX,KMAX),RH(IX,JX,KMAX),
     &             APG(IX,JX,KMAX) )

        ALLOCATE ( HT_T(IX,JX,KMAX),HSH_T(IX,JX,KMAX) )

        ALLOCATE ( TVP(IX,JX,NMAX),TVP_E(IX,JX,NMAX),
     &             SHP(IX,JX,NMAX),SHP_E(IX,JX,NMAX),
     &             TP_E(IX,JX,NMAX) )

        ALLOCATE ( P(NMAX),AP(NMAX) )
        ALLOCATE ( DIVP(IX,JX,NMAX),VORTP(IX,JX,NMAX),
     &             UP(IX,JX,NMAX), VP(IX,JX,NMAX),
     &             RHP(IX,JX,NMAX) )

        COEF1=461.5/287.05-1.
        COEF2=287.05/9.8

c Surface Height and Surface Press
        DO J=1,JX
        DO I=1,IX
          ZS(I,J)=PDPB(I,J,1)                 ! Full field
          PS(I,J)=EXP(PDPB(I,J,2))*1000.      ! FULL field
          APS(I,J)=ALOG(PS(I,J))
        END DO
        END DO

c DIV, VORT, U, V, T and Specific Humidity at P-Level
        DO J=1,JX
        DO I=1,IX
        DO N=1,NMAX
          DIVP(I,J,N)=PDPB(I,J,NMAX+4+4*(N-1))
          VORTP(I,J,N)=PDPB(I,J,NMAX+5+4*(N-1))
          UP(I,J,N)=PDPB(I,J,NMAX+6+4*(N-1))
          VP(I,J,N)=PDPB(I,J,NMAX+7+4*(N-1))
          SHP(I,J,N)=PDPB(I,J,NMAX*5+3+N)
          SHP_E(I,J,N)=SHP(I,J,N)+PDAT(I,J,NMAX*5+3+N)
          TVP(I,J,N)=PDPB(I,J,3+N)
          TVP_E(I,J,N)=TVP(I,J,N)+PDAT(I,J,3+N)
          TP_E(I,J,N)=TVP_E(I,J,N)/(1.+COEF1*SHP_E(I,J,N))
        END DO
        END DO
        END DO

        DO J=1,JX
        DO I=1,IX
          DO K=1,KMAX-1
            HSH_T(I,J,K)=HDAT(I,J,KMAX*5+3+K)      ! Specific Hum.
            HT_T(I,J,K)=HDAT(I,J,3+K)
          END DO
        END DO
        END DO

c Const. P-Level      
        DO K=1,KMAX
          P(2*K-1)=SI(K)*PSFCM
          P(2*K)=SL(K)*PSFCM
        END DO
        P(NMAX)=SL(KMAX)*0.5*PSFCM
        DO N=1,NMAX
          AP(N)=ALOG(P(N))
        END DO

        GAMA=6.5E-3
        COEF3=COEF2*GAMA
!        DO J=1,JX
!        DO I=1,IX
!          TVD=TVP_E(I,J,1)
!          HP(I,J,1)=ZS(I,J)-
!     &            TP_E(I,J,1)/GAMA*(1.-(PS(I,J)/P(1))**COEF3)
!          DO N=2,NMAX
!            TVU=TVP_E(I,J,N)
!            HP(I,J,N)=HP(I,J,N-1)-
!     &      COEF2*0.5*(TVD+TVU)*(AP(N)-AP(N-1))
!            TVD=TVU
!          END DO
!        END DO
!        END DO

c Press at Sigma-Level
        DO K=1,KMAX
        DO J=1,JX
        DO I=1,IX
          PSIG(I,J,K)=SL(K)*PS(I,J)
          APG(I,J,K)=ALOG(PSIG(I,J,K))
        END DO
        END DO
        END DO


!        DO K=1,KMAX
!          N=2*K
!          DO J=1,JX
!          DO I=1,IX
!            H(I,J,K)=HP(I,J,N)+
!     &        TP_E(I,J,N)/GAMA*(1.-(PSIG(I,J,K)/P(N))**COEF3)
!          END DO
!          END DO
!        END DO

        DO N=1,NMAX
          K=(N-1)/2+1
c          PRINT*,'Press=',N,P(N)/100.
c          PRINT*,'Press2=',N,K,P(N),HP(20,20,N),H(20,20,K)
        END DO
 
c RH at Press level
!        DO N=1,NMAX
        N=1
        DO J=1,JX
        DO I=1,IX
          DTEMP=TP_E(I,J,N)-273.15
          ES=611.2*EXP(17.67*DTEMP/(DTEMP+243.5))
          SHS=0.622*ES/(P(N)-0.378*ES)
          RHP(I,J,N)=MIN(MAX(SHP_E(I,J,N)/SHS,0.),1.0)
        END DO
        END DO
!        END DO

! Interpolate to Sigma Level.
        DO J=1,JX
        DO I=1,IX
        DO K=1,KMAX
          IF(PSIG(I,J,K).GE.P(1))THEN        
! below Press K=1
            DIV(I,J,K)=DIVP(I,J,1)
            VORT(I,J,K)=VORTP(I,J,1)
            U(I,J,K)=UP(I,J,1)
            V(I,J,K)=VP(I,J,1)
            RH(I,J,K)=RHP(I,J,1)           ! RH at SIGMA K=1
            TDRY=TP_E(I,J,1)-GAMA*(H(I,J,K)-HP(I,J,1))
            DTEMP=TDRY-273.15
            ES=611.2*EXP(17.67*DTEMP/(DTEMP+243.5))
            SHS=0.622*ES/(PSIG(I,J,K)-0.378*ES)
            SH_E=RH(I,J,K)*SHS
            SH(I,J,K)=SH_E-HSH_T(I,J,K)           ! Pert. Part
            TV(I,J,K)=TDRY*(1.+COEF1*SH_E)-HT_T(I,J,K)
!            PRINT*,'LLL2=',SHP(I,J,1),SHP_E(I,J,K)
!            PRINT*,'     ',SH(I,J,K),SH_E
! within domain
           ELSE IF((PSIG(I,J,K).LT.P(1)).AND.
     &             (PSIG(I,J,K).GT.P(NMAX)))THEN                            
             DO L=1,NMAX-1
              IF((PSIG(I,J,K).LT.P(L)).AND.
     &               (PSIG(I,J,K).GE.P(L+1)))THEN 
                W=(APG(I,J,K)-AP(L))/(AP(L+1)-AP(L))
c                W1=(PSIG(I,J,K)-P(L))/(P(L+1)-P(L))
                DIV(I,J,K)=DIVP(I,J,L)+
     &                     W*(DIVP(I,J,L+1)-DIVP(I,J,L))
                VORT(I,J,K)=VORTP(I,J,L)+
     &                      W*(VORTP(I,J,L+1)-VORTP(I,J,L))
                U(I,J,K)=UP(I,J,L)+W*(UP(I,J,L+1)-UP(I,J,L))
                V(I,J,K)=VP(I,J,L)+W*(VP(I,J,L+1)-VP(I,J,L))
                TV(I,J,K)=TVP(I,J,L)+W*(TVP(I,J,L+1)-TVP(I,J,L))
              SH(I,J,K)=SHP(I,J,L)+W*(SHP(I,J,L+1)-SHP(I,J,L)) 
                GO TO 123
              END IF
             END DO
 123         CONTINUE
! above top
         ELSE IF(PSIG(I,J,K).LE.P(NMAX))THEN
           DIV(I,J,K)=DIVP(I,J,NMAX)
           VORT(I,J,K)=VORTP(I,J,NMAX)
           U(I,J,K)=UP(I,J,NMAX)
           V(I,J,K)=VP(I,J,NMAX)
           TDRY=TP_E(I,J,NMAX)-GAMA*(H(I,J,K)-HP(I,J,NMAX))
           SH(I,J,K)=SHP(I,J,NMAX)
           SH_E=SH(I,J,K)+HSH_T(I,J,K)
           TV(I,J,K)=TDRY*(1.+COEF1*SH_E)-HT_T(I,J,K)
         ELSE
           PRINT*,'SOMETHING IS WRONG'
         END IF

        END DO
        END DO
        END DO

        DO J=1,JX
        DO I=1,IX
          HDPB(I,J,1)=PDPB(I,J,1)
          HDPB(I,J,2)=PDPB(I,J,2)
          HDPB(I,J,3)=PDPB(I,J,3)
          DO K=1,KMAX-1
            HDPB(I,J,KMAX+4+4*(K-1))=DIV(I,J,K)
            HDPB(I,J,KMAX+5+4*(K-1))=VORT(I,J,K)
            HDPB(I,J,KMAX+6+4*(K-1))=U(I,J,K)
            HDPB(I,J,KMAX+7+4*(K-1))=V(I,J,K)
            HDPB(I,J,KMAX*5+3+K)=SH(I,J,K) 
            HDPB(I,J,3+K)=TV(I,J,K)
          END DO
        END DO
        END DO

        DEALLOCATE ( SI,SL )

        DEALLOCATE ( TV, DIV, VORT, U, V, SH )

        DEALLOCATE ( PSIG, RH, APG )

        DEALLOCATE ( P, AP )
        DEALLOCATE ( DIVP, VORTP, UP, VP, RHP, SHP )

        DEALLOCATE ( TVP, TVP_E, TP_E, SHP_E, HT_T, HSH_T)

        END

C
      SUBROUTINE FIND_NEWCT1(UD,VD)
      PARAMETER (IR=15,IT=24,IX=41,JX=41)
      PARAMETER (ID=41,JD=41,DTX=0.2,DTY=0.2)    ! Search x-Domain (ID-1)*DTX
      DIMENSION TNMX(ID,JD),UD(IX,JX),VD(IX,JX)
      DIMENSION WTM(IR),R0(IT)
      COMMON /POSIT/CLON_NEW,CLAT_NEW,SLON,SLAT,CLON,CLAT,RAD

      COMMON /vect/R0,XVECT(IT),YVECT(IT)
c      COMMON /CT/SLON,SLAT,CLON,CLAT,RAD
c      COMMON /GA/CLON_NEW,CLAT_NEW,R0
C
      PI=ASIN(1.)*2.
      RAD=PI/180.
C
      XLAT = CLAT-(JD-1)*DTY/2.
      XLON = CLON-(ID-1)*DTX/2.
c      print *,'STARTING LAT, LON AT FIND NEW CENTER ',XLAT,XLON
C
      DO I=1,ID
      DO J=1,JD
      TNMX(I,J) = 0.
      BLON = XLON + (I-1)*DTX
      BLAT = XLAT + (J-1)*DTY
C
C.. CALCULATE TANGENTIAL WIND EVERY 1 deg INTERVAL
C..  10*10 deg AROUND 1ST 1ST GUESS VORTEX CENTER
C
      DO 10 JL=1,IR
      WTS= 0.
      DO 20 IL=1,IT
      DR = JL
      DD = (IL-1)*15*RAD
      DLON = DR*COS(DD)
      DLAT = DR*SIN(DD)
      TLON = BLON + DLON
      TLAT = BLAT + DLAT
C.. INTERPOLATION U, V AT TLON,TLAT AND CLACULATE TANGENTIAL WIND
      IDX = floor(TLON) - SLON + 1
      IDY = floor(TLAT) - SLAT + 1
      DXX  = TLON - floor(TLON)
      DYY  = TLAT - floor(TLAT)
C
      X1 = UD(IDX  ,IDY+1)*DYY + UD(IDX  ,IDY)*(1-DYY)
      X2 = UD(IDX+1,IDY+1)*DYY + UD(IDX+1,IDY)*(1-DYY)
      Y1 = UD(IDX+1,IDY  )*DXX + UD(IDX,IDY  )*(1-DXX)
      Y2 = UD(IDX+1,IDY+1)*DXX + UD(IDX,IDY+1)*(1-DXX)
      UT = (X1*(1-DXX)+X2*DXX + Y1*(1-DYY)+Y2*DYY)/2.
      IF(IL.EQ.0.OR.IL.EQ.13) UT = Y1
      IF(IL.EQ.7.OR.IL.EQ.19) UT = X1
C
      X1 = VD(IDX  ,IDY+1)*DYY + VD(IDX  ,IDY)*(1-DYY)
      X2 = VD(IDX+1,IDY+1)*DYY + VD(IDX+1,IDY)*(1-DYY)
      Y1 = VD(IDX+1,IDY  )*DXX + VD(IDX,IDY  )*(1-DXX)
      Y2 = VD(IDX+1,IDY+1)*DXX + VD(IDX,IDY+1)*(1-DXX)
      VT = (X1*(1-DXX)+X2*DXX + Y1*(1-DYY)+Y2*DYY)/2.
      IF(IL.EQ.0.OR.IL.EQ.13) VT = Y1
      IF(IL.EQ.7.OR.IL.EQ.19) VT = X1
C.. TANGENTIAL WIND
      WT = -SIN(DD)*UT + COS(DD)*VT
      WTS = WTS+WT
20    CONTINUE
      WTM(JL) = WTS/24.
10    CONTINUE
C
C Southern Hemisphere
      IF(CLAT_NEW.LT.0)THEN
        DO JL=1,IR
          WTM(JL)=-WTM(JL)
        END DO
      END IF
C EnD SH

      TX = -10000000.
      DO KL = 1,IR
      IF(WTM(KL).GE.TX) THEN
      TX = WTM(KL)
      ENDIF
      ENDDO
C
      TNMX(I,J) = TX
      ENDDO
      ENDDO
C.. FIND NEW CENTER
      TTX = -1000000.
      DO I=1,ID
      DO J=1,JD
      IF(TNMX(I,J).GE.TTX) THEN
      TTX = TNMX(I,J)
      NIC = I
      NJC = J
      ENDIF
      ENDDO
      ENDDO
C
      CLAT_NEW = XLAT + (NJC-1)*DTY
      CLON_NEW = XLON + (NIC-1)*DTX
C
      print *,'NEW CENTER,  I, J IS   ',NIC,NJC
      print *,'NEW CENTER, LAT,LON IS ',CLAT_NEW,CLON_NEW
      print *,'MAX TAN. WIND AT NEW CENTER IS ',TTX
C
      RETURN
      END