finish_transforms Subroutine

public subroutine finish_transforms()

FIXME : Add documentation

Arguments

None

Contents

Source Code


Source Code

  subroutine finish_transforms
    use redistribute, only : delete_redist
    use fft_work, only: delete_fft, finish_fft_work
#ifdef SHMEM
    use shm_mpi3, only : shm_free
#endif

    if(allocated(xxf)) deallocate(xxf)
    if(allocated(ia)) deallocate(ia)
    if(allocated(iak)) deallocate(iak)
    if(allocated(aidx)) deallocate(aidx)
#ifndef SHMEM
    if(allocated(ag)) deallocate(ag)
#else
    if (associated(ag)) call shm_free(ag)
#endif

    call delete_redist(g2x)
    call delete_redist(x2y)

    if(allocated(fft)) deallocate(fft) 

    !Destroy fftw plans
    !Note delete_fft is safe to call on plans that have not been created
    call delete_fft(yf_fft)
    call delete_fft(yb_fft)
    call delete_fft(xf_fft)
    call delete_fft(xb_fft)
    call delete_fft(zf_fft)
    call delete_fft(xf3d_cr)
    call delete_fft(xf3d_rc)

    !Reset init state flags
    initialized = .false.
    initialized_x = .false.
    initialized_y_fft = .false.
    initialized_x_redist = .false.
    initialized_y_redist = .false.
    initialized_3d = .false.
    xfft_initted = .false.
    initialized_zf = .false.

    !Tidy up fft internals (FFTW3 only)
    call finish_fft_work
  end subroutine finish_transforms