inverse2_5d Subroutine

private subroutine inverse2_5d(yxf, g)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
real, intent(inout), dimension (:,yxf_lo%llim_proc:) :: yxf
complex, intent(out), dimension (:,:,g_lo%llim_proc:) :: g

Contents

Source Code


Source Code

  subroutine inverse2_5d (yxf, g)
    use gs2_layouts, only: g_lo, yxf_lo, ik_idx
    implicit none
    real, dimension (:,yxf_lo%llim_proc:), intent (in out) :: yxf
    complex, dimension (:,:,g_lo%llim_proc:), intent (out) :: g
    integer :: iglo
    real :: scale
    call inverse_y (yxf, xxf)
    call inverse_x (xxf, g)

    scale = xb_fft%scale * yb_fft%scale
    !CMR+GC: 2/9/2013
    ! Following large loop can be eliminated if gs2 used standard Fourier coefficients.
    ! (See above comment in transform2_5d.)
    !

    !$OMP PARALLEL DO DEFAULT(none) &
    !$OMP SHARED(g_lo, g, scale) &
    !$OMP SCHEDULE(dynamic)
    do iglo = g_lo%llim_proc, g_lo%ulim_proc
       if (ik_idx(g_lo, iglo) .ne. 1) then
          g(:,:,iglo) = g(:,:,iglo)  * (scale * 2.0)
       else
          g(:,:,iglo) = g(:,:,iglo)  * scale
       end if
    end do
    !$OMP END PARALLEL DO
  end subroutine inverse2_5d