tools.f
上传用户:ls4004p
上传日期:2007-08-05
资源大小:2314k
文件大小:3k
源码类别:

并行计算

开发平台:

Matlab

  1.       SUBROUTINE InitTapered(Coeff, Num, MinCoeff)
  2.       IMPLICIT NONE
  3.       INCLUDE 'param.f'
  4.       REAL Coeff(MaxTapeCoeff), MinCoeff, a
  5.       INTEGER Num, i
  6. C      PRINT*
  7. C      PRINT*, 'Begin InitTapered :'
  8.       a = - log(MinCoeff) / (Num-1)**2
  9. C      PRINT*, '      damping coeff. for tapered border: a= ', a
  10.       DO i=1, Num
  11.          Coeff(i) = exp(-(Num-i)**2 * a)
  12.       ENDDO
  13. C      PRINT*, 'Call InitTapered was succesful'
  14.       RETURN
  15.       END
  16. C____________________________________________________________________
  17.       SUBROUTINE Taper(Ux, Uz, Coeff, nx, nz, nCoeff)
  18.       IMPLICIT NONE
  19.       INCLUDE 'param.f'
  20.       
  21.       INTEGER nx, nz, nCoeff, r, c,k
  22.       REAL Ux(Maxcols,Maxrows),Uz(Maxcols,Maxrows),Coeff(MaxTapeCoeff)
  23. C     Rand (Ux)
  24.       DO k=1 , NCoeff
  25.          c = k
  26.          DO r=1, nz-k+1
  27.             Ux(c,r) = Ux(c,r) * Coeff(k)
  28.          ENDDO
  29.          r = nz - k + 1
  30.          DO c= k+1 , nx-k-1
  31.             Ux(c,r) = Ux(c,r) * Coeff(k)
  32.          ENDDO
  33.          c = nx-k
  34.          DO r = nz-k+1 , 1 , -1
  35.             Ux(c,r) = Ux(c,r) * Coeff(k)
  36.          ENDDO
  37.       ENDDO
  38. C     Rand (Uz)
  39.       DO k=1 , NCoeff
  40.          c = k
  41.          DO r=1, nz-k
  42.             Uz(c,r) = Uz(c,r) * Coeff(k)
  43.          ENDDO
  44.          r = nz - k 
  45.          DO c= k+1 , nx-k
  46.             Uz(c,r) = Uz(c,r) * Coeff(k)
  47.          ENDDO
  48.          c = nx-k+1
  49.          DO r = nz-k , 1 , -1
  50.             Uz(c,r) = Uz(c,r) * Coeff(k)
  51.          ENDDO
  52.       ENDDO
  53.       RETURN
  54.       END      
  55. C____________________________________________________________________
  56.       SUBROUTINE taper42d(Ux, Uz, Coeff, nx, nz, nCoeff)
  57.       IMPLICIT NONE
  58.       
  59.       INCLUDE 'param.f'
  60.       REAL Ux(Maxcols,Maxrows), Uz(Maxcols,Maxrows), Coeff(MaxTapeCoeff)
  61.       INTEGER nx, nz, nCoeff, r, c, rr
  62. C     Rand (Ux)
  63.       DO r=0, nCoeff-1
  64.          rr=r+1
  65.          DO c=1+r, nx-rr
  66.             Ux(c,rr) = Ux(c,rr) * Coeff(rr)
  67.          ENDDO
  68.          DO c=2+r, nz-r
  69.             Ux(nx-rr,c) = Ux(nx-rr,c) * Coeff(rr)
  70.          ENDDO
  71.          DO c=(nx-1)-rr, rr, -1
  72.             Ux(c,nz-r) = Ux(c,nz-r) * Coeff(rr)
  73.          ENDDO
  74.          DO c=nz-rr, 1+rr, -1
  75.             Ux(rr,c) = Ux(rr,c) * Coeff(rr)
  76.          ENDDO
  77.       ENDDO
  78. C     Rand (Uz)
  79.       DO r=0, nCoeff-1
  80.          rr = r+1
  81.          DO c=1+r, nx-r
  82.             Uz(c,rr) = Uz(c,rr) * Coeff(rr)
  83.          ENDDO
  84.          DO c=2+r, (nz-rr)
  85.             Uz(nx-r,c) = Uz(nx-r,c) * Coeff(rr)
  86.          ENDDO
  87.          DO c=(nx-1)-r, rr, -1
  88.             Uz(c,nz-rr) = Uz(c,nz-rr) * Coeff(rr)
  89.          ENDDO
  90.          DO c=(nz-rr-1), 1+rr, -1
  91.             Uz(rr,c) = Uz(rr,c) * Coeff(rr)
  92.          ENDDO
  93.       ENDDO
  94.       RETURN
  95.       END
  96. C-------------------------------------------------------------------------