
      SUBROUTINE DIFF
C     SUBROUTINE TO COMPUTE DIFFRACTION ATTENUATION
C
      COMMON /NR/ JZ,W,SW3,SW4,SA3,SA4,SAFO
          COMMON /MAR14/D3,D4,T5
      COMMON /M/F,D,NS,A,DH,DHS,S,E,POL,KM
      COMMON /MP/ H1E,H2E,H1G,H2G,DLS1,DLS2,DL1,DL2,DL,DL5,TE1,TE2,TE,KL
      COMMON /MLDS/ AG,AD,AS,ACR,AED,MD,AH50,AH5,D5,MS,AES,DX,H5
      REAL NS,MD,MDO,MS,MSS,MDS,K1,K2,K3,K4
      FNA(C)=6.02+9.11*C-1.27*C*C
      FNB(C)=12.953+20.*ALOG10(C)
      FNC(C)=416.4*F**.3333333333*(1.607-C)
      FND(C)=(.36278/(C*F)**.3333333333)*1./((E-1.)**2+X*X)**.25
      FNE(C)=C*SQRT(E*E+X*X)
      RDL=DL
      KK=0
10    KK=KK+1
      D3=DL+.5*(A*A/F)**.3333333333
      IF (D3 .LT. DLS) D3=DLS
      D4=D3+(A*A/F)**.3333333333
      T3=TE+D3/A
      T4=TE+D4/A
C
C     CALCULATION OF KNIFE EDGE DIFFRACTION
C
      V13=1.2915*T3*SQRT(F*DL1*(D3-DL)/(D3-DL2))
      V23=1.2915*T3*SQRT(F*DL2*(D3-DL)/(D3-DL1))
      V14=1.2915*T4*SQRT(F*DL1*(D4-DL)/(D4-DL2))
      V24=1.2915*T4*SQRT(F*DL2*(D4-DL)/(D4-DL1))
      AV13=FNA(V13)
      IF(V13 .GT. 2.4) AV13=FNB(V13)
      AV23=FNA(V23)
      IF(V23.GT.2.4) AV23=FNB(V23)
      AV14=FNA(V14)
      IF(V14.GT.2.4) AV14=FNB(V14)
      AV24=FNA(V24)
      IF(V24.GT.2.4) AV24=FNB(V24)
      AK3=AV13+AV23
      AK4=AV14+AV24
C
C     CALCULATION OF ROUNDED EARTH DIFFRACTION
C
      A1=DL1*DL1/(.002*H1E)
      A2=DL2*DL2/(.002*H2E)
      A3=(D3-DL)/T3
      A4=(D4-DL)/T4
      X=18000.*S/F
      K1=FND(A1)
      K2=FND(A2)
      K3=FND(A3)
      K4=FND(A4)
      IF (POL .EQ. -1.) GO TO 15
      K1=FNE(K1)
      K2=FNE(K2)
      K3=FNE(K3)
      K4=FNE(K4)
15    B1=FNC(K1)
      B2=FNC(K2)
      B3=FNC(K3)
      B4=FNC(K4)
      X1=B1*DL1/A1**.6666666666
      X2=B2*DL2/A2**.66666666666
      X3=B3*(D3-DL)/A3**.666666666+X1+X2
      X4=B4*(D4-DL)/A4**.666666666+X1+X2
      XL1=450./ABS(ALOG10(K1)**3)
      XL2=450./ABS(ALOG10(K2)**3)
      IF(X1.LE.0..OR.X1.GT. 200. .OR.K1 .LT. 0..OR. K1.GT. .00001)
     CGO TO 999
16      T=40.*ALOG10(X1)-117.
        T1=-117.
        T2=AMIN1((ABS(T)),(ABS(T1)))
        FX1=T
        IF (T2 .EQ. ABS(T1)) FX1=T1
999   CONTINUE
17    IF(X2.LE.0..OR. X2.GT.200. .OR. K2 .LT.0..OR. K2.GT. .00001)
     CGO TO 998
        T=40.*ALOG10(X2)-117.
        T1=-117.
        T2=AMIN1((ABS(T)),(ABS(T1)))
        FX2=T
        IF (T2 .EQ. ABS(T1)) FX2=T1
998   CONTINUE
19    IF(X1 .LE.0. .OR.X1 .GT.200. .OR.K1 .LE. .00001 .OR. K1 .GE. 1.
     C) GO TO 997
        FX1=40.*ALOG10(X1)-117.
        IF (X1 .LE. XL1) FX1=20.*ALOG10(K1)+2.5*1. E-5*X1*X1/K1-15.
997   CONTINUE
C!!!22    IF(X2 .GT.0. .AND.X2 .LE.200 .AND.K2 .GT. .00001 .AND. K1 .LT. 1.
22    IF(X2 .LE.0. .OR.X2 .GT.200 .OR.K2 .LE. .00001 .OR. K2 .GE. 1.
     C) GO TO 996
        FX2=40.*ALOG10(X2)-117.
        IF (X2 .LE. XL2) FX2=20.*ALOG10(K2)+2.5*1. E-5*X2*X2/K2-15.
996   CONTINUE
24    W1=.0134*X1*EXP(-.005*X1)
      W2=.0134*X2*EXP(-.005*X2)
      IF(X1.GT.200. .AND. X1.LE.2000.)
     C FX1=W1*(40.*ALOG10(X1)-117.)+(1.-W1)*(.05751*X1-10.*ALOG10(X1))
      IF(X2 .GT. 200 .AND. X2 .LE. 2000.)
     CFX2=W2*(40.*ALOG10(X2)-117.)+(1.-W2)*(.05751*X2-10.*ALOG10(X2))
      IF(X1.GT. 2000.) FX1=.05751*X1-10.*ALOG10(X1)
      IF(X2 .GT. 2000.) FX2=.05751*X2-10.*ALOG10(X2)
      GX3=.05751*X3-10.*ALOG10(X3)
      GX4=.05751*X4-10.*ALOG10(X4)
      AR3=GX3-FX1-FX2-20.
      AR4=GX4-FX1-FX2-20.

C
C     COMBINATION OF ROUNDED EARTH AND KNIFE EDGE DIFFRACTION
C
28    DHD3=DH*(1.-.8 *EXP(-.02*D3))
      DHD4=DH*(1.-.8 *EXP(-.02*D4))
      P13=SQRT((H1E*H2E)/(H1G*H2G))+(A*TE+DL)/D3
      P14=SQRT((H1E*H2E)/(H1G*H2G))+(A*TE+DL)/D4
      DOL3=AMIN1(1000.,(DHD3*F/299.7925))
      DOL4=AMIN1(1000.,(DHD4*F/299.7925))
63    W3=1./(1.+.1     *SQRT(DOL3*P13))
      W4=1./(1.+.1     *SQRT(DOL4*P14))
31    A3=(1.-W3)*AK3+W3*AR3
      A4=(1.-W4)*AK4+W4*AR4
      MD=(A4-A3)/(D4-D3)
      AED=A4-MD*D4
      DHDLS=DH*(1.-.8*EXP(-.02*DLS))
      SHDLS=.78*DHDLS*EXP(-.5*(DHDLS**.25))
      AFO=5.*ALOG10(1.+H1G*H2G*F*SHDLS*.00001)
      AFO=AMIN1(AFO,15.)
91    AED=AED+AFO
      IF (KM .EQ. 2) GO TO 40
      IF (KK.EQ. 2) GO TO 20
         SAFO=AFO
      SW3=W3
      SW4=W4
      SA3=A3
      SA4=A4
29    AD=AED+MD*D
32    TD=(TE+D/A)*D
      SDL1=DL1
      SDL2=DL2
      SDL=DL
      STE1=TE1
      STE2=TE2
      STE=TE
C
C     CALCULATION OF SCATTER ATTENUATION
C
      CALL SCATT
      IF (H5 .LE. 10.)  AES=AH5 -MS*D5
      IF (H5 .LE. 10.) AS=AES+MS*D
      IF(H5.LE.10.) GO TO 30
      MDS=MD
      AEDS=AED
      DH=0.
      GO TO 10
20    ADO=AED
      MDO=MD
      MD=MDS
      AED=AEDS
      DX1=(AH50-MS*D5-ADO)/(MDO-MS)
      DX2=(RDL+.25*(A*A/F)**.3333333333*ALOG10(F))
      DXO=DX1*(3.-.2*H5)+DX2*(.2*H5-2.)
      AXO=ADO+MDO*DXO
      ASX=AXO+(AH5-AH50)
      AES=ASX-MS*DXO
      AS=AES+MS*D
30    DX=(AES-AED)/(MD-MS)
      DXN=DL+.25*(A*A/F)**.3333333333*ALOG10(F)
C!!!  IF (DXN .GT. DX) AES=AED+(MD-MS)*DX
      IF (DXN .GT. DX) AES=AED+(MD-MS)*DXN
      IF (DXN .GT. DX) AS=AES+MS*D
      IF (DXN .GT. DX) DX=DXN
      ACR=AD
      IF (D .GT. DX) ACR=AS
      DL1=SDL1
      DL2=SDL2
      DL=SDL
      TE1=STE1
      TE2=STE2
      TE=STE
      DH=DHS
41    CONTINUE
40    RETURN
      END
C
C	END
C	END
C	END
