Code source du test de l'adjoint du filtre récursif 1D

!
!----------------------------------------------------------------------
!
! T E S T   A D J O I N T   R E C U R S I V E    F I L T E R
!
!----------------------------------------------------------------------
!
   SUBROUTINE test_recursive_filter_adj_1d_r(A, alpha)
!
! test of 1D adjoint recursive filter for reals
!
      IMPLICIT NONE
!
      REAL, DIMENSION(:), INTENT(in)  :: A
      REAL, INTENT(in)                :: alpha
!
      INTEGER                         :: N
      REAL                                  :: zpdx, zpdy
      REAL, DIMENSION(:), ALLOCATABLE :: B, C 
!
! Look for dimensions
!
      N    = SIZE(A,1)
!
! Allocate arrays
!
      ALLOCATE( B(N) )
      ALLOCATE( C(N) )
!
! Compute R(1/2).dx
!
      B(:) = A(:)
      CALL recursive_filter(B,alpha,1)
      zpdy = SUM(B*B)
!
! Compute R(1/2)T.R(1/2).dx
!
      C(:) = B(:)
      CALL recursive_filter_adj(C,alpha,1)
      zpdx = SUM(A*C)
!
! Test if (R(1/2).dx)T.W.R(1/2).dx = dxT.(R(1/2)T.W.R(1/2).dx
! with W = I
!
      WRITE(*,*)
      WRITE(*,*)'Test recursive_filter_adj'
      WRITE(*,*)"Difference = ",ABS(zpdx - zpdy)/ABS(zpdx)
      WRITE(*,*)
!
   END SUBROUTINE test_recursive_filter_adj_1d_r



Nicolas Daget 2006-03-21