"nl": Two k⊥ modes set to constant amplitude. Controlled by:
ky
indices of modes: ikkkx
indices of modes: itt subroutine ginit_nl
use species, only: spec
use theta_grid, only: ntgrid
use kt_grids, only: naky, ntheta0
use le_grids, only: forbid, il_is_wfb
use dist_fn_arrays, only: g, gnew
use gs2_layouts, only: g_lo, ik_idx, it_idx, il_idx, is_idx
use array_utils, only: copy, zero_array
implicit none
complex, dimension (-ntgrid:ntgrid,ntheta0,naky) :: phi
integer :: iglo
integer :: ig, ik, it, il, is, j
call zero_array(phi)
do j = 1, 2
ik = ikk(j)
it = itt(j)
do ig = -ntgrid, ntgrid
! phi(ig,it,ik) = cmplx(1.0, 0.0)*sin(theta(ig))
phi(ig,it,ik) = cmplx(1.0, 0.0)!*sin(theta(ig))
end do
! do ig = -ntgrid/2, ntgrid/2
! phi(ig,it,ik) = cmplx(1.0, 1.0)
! end do
if (chop_side) then
if (left) then
phi(:-1,it,ik) = 0.0
else
phi(1:,it,ik) = 0.0
end if
end if
end do
! reality condition for k_theta = 0 component:
do it = 1, ntheta0/2
phi(:,it+(ntheta0+1)/2,1) = conjg(phi(:,(ntheta0+1)/2+1-it,1))
enddo
! charge dependence keeps initial Phi from being too small
do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
il = il_idx(g_lo,iglo)
is = is_idx(g_lo,iglo)
g(:,1,iglo) = -phi(:,it,ik)*phiinit*spec(is)%z
where (forbid(:,il)) g(:,1,iglo) = 0.0
g(:,2,iglo) = g(:,1,iglo)
if (il_is_wfb(il)) g(:,:,iglo) = 0.0
end do
call copy(g, gnew)
end subroutine ginit_nl