FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex, | intent(inout), | dimension (-ntgrid:,:,g_lo%llim_proc:) | :: | g1 | ||
complex, | intent(in), | dimension (-ntgrid:,:,:) | :: | apar |
subroutine load_ky_apar(g1, apar)
use theta_grid, only: ntgrid
use gs2_layouts, only: g_lo, ik_idx, it_idx, is_idx
use dist_fn_arrays, only: vpa, aj0
use species, only: spec
use run_parameters, only: has_apar, fapar
use kt_grids, only: aky
use constants, only: zi
implicit none
complex, dimension (-ntgrid:,:,g_lo%llim_proc:), intent (in out) :: g1
complex, dimension (-ntgrid:,:,:), intent (in) :: apar
complex, dimension(-ntgrid:ntgrid) :: fac
integer :: iglo, it, ik, is
if(.not. (include_apar .and. has_apar)) return
!$OMP PARALLEL DO DEFAULT(none) &
!$OMP PRIVATE(iglo, it, ik, is, fac) &
!$OMP SHARED(g_lo, g1, vpa, aky, aj0, spec, apar, fapar) &
!$OMP SCHEDULE(static)
do iglo = g_lo%llim_proc, g_lo%ulim_proc
it = it_idx(g_lo,iglo)
ik = ik_idx(g_lo,iglo)
is = is_idx(g_lo,iglo)
fac = zi*aky(ik)*aj0(:,iglo)*spec(is)%stm*apar(:,it,ik)*fapar
g1(:,1,iglo) = g1(:,1,iglo) - fac*vpa(:,1,iglo)
g1(:,2,iglo) = g1(:,2,iglo) - fac*vpa(:,2,iglo)
end do
!$OMP END PARALLEL DO
end subroutine load_ky_apar