FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex, | intent(inout), | dimension (-ntgrid:,:,g_lo%llim_proc:) | :: | g1 | ||
complex, | intent(in), | dimension (-ntgrid:,:,:) | :: | bpar |
subroutine load_ky_bpar(g1, bpar)
use theta_grid, only: ntgrid
use gs2_layouts, only: g_lo, ik_idx, it_idx, is_idx
use dist_fn_arrays, only: vperp2, aj1
use species, only: spec
use run_parameters, only: has_bpar, fbpar
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) :: bpar
complex, dimension(-ntgrid:ntgrid) :: fac
integer :: iglo, it, ik, is
if (.not. (include_bpar .and. has_bpar)) return
! Is this factor of two from the old normalization?
!$OMP PARALLEL DO DEFAULT(none) &
!$OMP PRIVATE(iglo, it, ik, is, fac) &
!$OMP SHARED(g_lo, g1, aky, aj1, vperp2, spec, bpar, fbpar) &
!$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)*aj1(:,iglo) &
*2.0*vperp2(:,iglo)*spec(is)%tz*bpar(:,it,ik)*fbpar
g1(:,1,iglo) = g1(:,1,iglo) + fac
g1(:,2,iglo) = g1(:,2,iglo) + fac
end do
!$OMP END PARALLEL DO
end subroutine load_ky_bpar