FIXME : Add documentation
subroutine allocate_arrays
use kt_grids, only: ntheta0, naky, is_box
use array_utils, only: zero_array
use theta_grid, only: ntgrid, shat
use dist_fn_arrays, only: g, gnew, g_work
use dist_fn_arrays, only: kx_shift, theta0_shift ! MR
use dist_fn_arrays, only: gexp_1, gexp_2, gexp_3
use dist_fn_arrays, only: antot, antota, antotp
use dist_fn_arrays, only: fieldeq, fieldeqa, fieldeqp
use gs2_layouts, only: g_lo
use nonlinear_terms, only: nonlin, split_nonlinear
use run_parameters, only: has_apar
use array_utils, only: zero_array
use warning_helpers, only: is_zero
#ifdef SHMEM
use shm_mpi3, only : shm_alloc
#endif
implicit none
if (.not. allocated(g)) then
allocate (g (-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
allocate (gnew (-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
allocate (g_work (-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
allocate (g_h (-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
call zero_array(g) ; call zero_array(gnew) ; call zero_array(g_work)
call zero_array(g_h)
if(opt_source)then
allocate (source_coeffs_phim(-ntgrid:ntgrid-1,2,g_lo%llim_proc:g_lo%ulim_alloc))
allocate (source_coeffs_phip(-ntgrid:ntgrid-1,2,g_lo%llim_proc:g_lo%ulim_alloc))
if(has_apar)then
allocate (source_coeffs_aparm(-ntgrid:ntgrid-1,2,g_lo%llim_proc:g_lo%ulim_alloc))
allocate (source_coeffs_aparp(-ntgrid:ntgrid-1,2,g_lo%llim_proc:g_lo%ulim_alloc))
endif
endif
if (nonlin .and. .not. split_nonlinear) then
#ifndef SHMEM
allocate (gexp_1(-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
#else
call shm_alloc(gexp_1, [-ntgrid, ntgrid, 1, 2, g_lo%llim_proc, g_lo%ulim_alloc])
#endif
allocate (gexp_2(-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
allocate (gexp_3(-ntgrid:ntgrid,2,g_lo%llim_proc:g_lo%ulim_alloc))
call zero_array(gexp_1) ; call zero_array(gexp_2) ; call zero_array(gexp_3)
end if
if (abs(g_exb*g_exbfac) > epsilon(0.)) then ! MR
if (is_box .or. is_zero(shat)) then
allocate (kx_shift(naky))
kx_shift = 0.
else
allocate (theta0_shift(naky))
theta0_shift = 0.
endif
endif ! MR end
endif
allocate (antot (-ntgrid:ntgrid,ntheta0,naky))
allocate (antota(-ntgrid:ntgrid,ntheta0,naky))
allocate (antotp(-ntgrid:ntgrid,ntheta0,naky))
call zero_array(antot) ; call zero_array(antota) ; call zero_array(antotp)
allocate (fieldeq (-ntgrid:ntgrid,ntheta0,naky))
allocate (fieldeqa(-ntgrid:ntgrid,ntheta0,naky))
allocate (fieldeqp(-ntgrid:ntgrid,ntheta0,naky))
call zero_array(fieldeq) ; call zero_array(fieldeqa) ; call zero_array(fieldeqp)
end subroutine allocate_arrays