FIXME : Add documentation
subroutine nprocs_e()
use species, only : nspec
use kt_grids, only: naky, ntheta0
use le_grids, only: nlambda
use theta_grid, only: ntgrid
use gs2_layouts, only: layout, factors
implicit none
integer :: nlfacs, nkxfacs, nkyfacs, nsgfacs, nspfacs, ntgfacs
integer, dimension(:,:), allocatable :: facs
integer :: maxfacs
integer, allocatable, dimension(:):: spfacs, lfacs, sgfacs, tgfacs, kxfacs, kyfacs
integer, dimension(6) :: nfac, sdim
character(3), dimension(6):: sym
write (report_unit, fmt="('#proc sweetspots for e_lo, up to:',i8)") npmax
maxfacs=max(nspec,nlambda,2,2*ntgrid+1,ntheta0,naky)/2+1
allocate (spfacs(maxfacs),lfacs(maxfacs),sgfacs(maxfacs),tgfacs(maxfacs),kxfacs(maxfacs),kyfacs(maxfacs),facs(maxfacs,6))
call factors (nspec, nspfacs, spfacs)
call factors (nlambda, nlfacs, lfacs)
call factors (2, nsgfacs, sgfacs)
call factors (2*ntgrid+1, ntgfacs, tgfacs)
call factors (ntheta0, nkxfacs, kxfacs)
call factors (naky, nkyfacs, kyfacs)
select case (layout)
case ('lexys','lxyes')
sym = (/ "s ","y ","x ","l ","sgn","tg " /)
sdim = (/ nspec, naky, ntheta0, nlambda, 2, 2*ntgrid+1 /)
nfac= (/ nspfacs, nkyfacs, nkxfacs, nlfacs, nsgfacs, ntgfacs /)
facs(:,1)=spfacs; facs(:,2)=kyfacs; facs(:,3)=kxfacs
facs(:,4)=lfacs; facs(:,5)=sgfacs; facs(:,6)=tgfacs
call wsweetspots(sym,sdim,nfac,facs,npmax,LUN=report_unit)
case ('lyxes')
sym = (/ "s ","x ","y ","l ","sgn","tg " /)
sdim = (/ nspec, ntheta0, naky, nlambda, 2, 2*ntgrid+1 /)
nfac= (/ nspfacs, nkxfacs, nkyfacs, nlfacs, nsgfacs, ntgfacs /)
facs(:,1)=spfacs; facs(:,2)=kxfacs; facs(:,3)=kyfacs
facs(:,4)=lfacs; facs(:,5)=sgfacs; facs(:,6)=tgfacs
call wsweetspots(sym,sdim,nfac,facs,npmax,LUN=report_unit)
case ('xyles')
sym = (/ "s ","l ","y ","x ","sgn","tg " /)
sdim = (/ nspec, nlambda, naky, ntheta0, 2, 2*ntgrid+1 /)
nfac= (/ nspfacs, nlfacs, nkyfacs, nkxfacs, nsgfacs, ntgfacs /)
facs(:,1)=spfacs; facs(:,2)=lfacs; facs(:,3)=kyfacs
facs(:,4)=kxfacs; facs(:,5)=sgfacs; facs(:,6)=tgfacs
call wsweetspots(sym,sdim,nfac,facs,npmax,LUN=report_unit)
case ('yxles','yxels')
sym = (/ "s ","l ","x ","y ","sgn","tg " /)
sdim = (/ nspec, nlambda, ntheta0, naky, 2, 2*ntgrid+1 /)
nfac= (/ nspfacs, nlfacs, nkxfacs, nkyfacs, nsgfacs, ntgfacs /)
facs(:,1)=spfacs; facs(:,2)=lfacs; facs(:,3)=kxfacs
facs(:,4)=kyfacs; facs(:,5)=sgfacs; facs(:,6)=tgfacs
call wsweetspots(sym,sdim,nfac,facs,npmax,LUN=report_unit)
end select
deallocate (facs,spfacs,lfacs,sgfacs,tgfacs,kxfacs,kyfacs)
end subroutine nprocs_e