!
!----------------------------------------------------------------------
!
! 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