FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real, | intent(inout), | dimension (:,yxf_lo%llim_proc:) | :: | yxf | ||
complex, | intent(out), | dimension (:,:,g_lo%llim_proc:) | :: | g |
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) /= 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