cfft_2d_backward Subroutine

public subroutine cfft_2d_backward(func)

Arguments

Type IntentOptional Attributes Name
complex(kind=8), intent(inout), dimension(:,:) :: func

Calls

proc~~cfft_2d_backward~2~~CallsGraph proc~cfft_2d_backward~2 cfft_2d_backward cfft2b cfft2b proc~cfft_2d_backward~2->cfft2b cfft2i cfft2i proc~cfft_2d_backward~2->cfft2i

Called by

proc~~cfft_2d_backward~2~~CalledByGraph proc~cfft_2d_backward~2 cfft_2d_backward interface~ifft2~2 ifft2 interface~ifft2~2->proc~cfft_2d_backward~2

Source Code

  subroutine cfft_2d_backward(func)
    complex(8),dimension(:,:),intent(inout) :: func
    real(8),dimension(:),allocatable      :: wsave,work
    integer                               :: L,M,lenwrk,lensav,ldim,inc,ier
    L      = size(func,1)
    M      = size(func,2)
    lenwrk = 2*L*M
    lensav = 2*(L+M) + int(log(dble(L))/log(2.d0))+int(log(dble(M))/log(2.d0)) + 8
    ldim   = L
    allocate(wsave(lensav))
    allocate(work(lenwrk))
    call cfft2i(L,M,wsave,lensav,ier)
    if(ier==2)stop "cfft_2d_backward: LENSAV not big enough"
    if(ier==20)stop "cfft_2d_backward: input error returned by lower level routine"
    call cfft2b(ldim,L,M,func,wsave,lensav,work,lenwrk,ier)
    deallocate(wsave,work)
    select case(ier)
    case (0)
       return
    case (5)
       stop "cfft_2d_backward: L > LDIM"
    case (2)
       stop "cfft_2d_backward: LENSAV not big enough"
    case (3)
       stop "cfft_2d_backward: LENWRK not big enough"
    case (20)
       stop "cfft_2d_backward: input error returned by lower level routine"
    end select
  end subroutine cfft_2d_backward