fft_obj_Init Subroutine

private impure subroutine fft_obj_Init(this, block, parallel)

Initializes the FFT object.

Type Bound

fft_obj

Arguments

Type IntentOptional Attributes Name
class(fft_obj), intent(inout) :: this

A FFT object

type(block_obj), intent(in), target :: block

A block object

type(parallel_obj), intent(in), target :: parallel

Parallel structure to link with


Calls

proc~~fft_obj_init~~CallsGraph proc~fft_obj_init fft_obj%fft_obj_Init proc~fft_obj_getoriginallayout fft_obj%fft_obj_GetOriginalLayout proc~fft_obj_init->proc~fft_obj_getoriginallayout proc~fft_obj_setcontigdirection fft_obj%fft_obj_SetContigDirection proc~fft_obj_init->proc~fft_obj_setcontigdirection

Source Code

    impure subroutine fft_obj_Init(this,block,parallel)
      !> Initializes the FFT object.
      implicit none
      class(fft_obj),     intent(inout) :: this                                !! A FFT object
      type(block_obj),    intent(in),    &
                                 target :: block                               !! A block object
      type(parallel_obj), intent(in),    &
                                 target :: parallel                            !! Parallel structure to link with

      ! Point to the master objects
      this%parallel => parallel
      this%block    => block

      ! Allocate buffers and displacements needed for transpose
      allocate(this%s_counts(this%parallel%nproc))
      allocate(this%s_displs(this%parallel%nproc))
      allocate(this%s_ptr   (this%parallel%nproc))
      allocate(this%r_counts(this%parallel%nproc))
      allocate(this%r_displs(this%parallel%nproc))
      allocate(this%r_ptr   (this%parallel%nproc))

      call this%GetOriginalLayout()

      call this%SetContigDirection()

      return
    end subroutine fft_obj_Init