FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex, | intent(inout), | dimension (-ntgrid:ntgrid,ntheta0,naky) | :: | antot | ||
complex, | intent(inout), | dimension (-ntgrid:ntgrid,ntheta0,naky) | :: | antota | ||
complex, | intent(inout), | dimension (-ntgrid:ntgrid,ntheta0,naky) | :: | antotp | ||
complex, | intent(inout), | dimension (-ntgrid:ntgrid,ntheta0,naky) | :: | tempantot | ||
complex, | intent(inout), | dimension (-ntgrid:ntgrid,ntheta0,naky) | :: | tempantota | ||
complex, | intent(inout), | dimension (-ntgrid:ntgrid,ntheta0,naky) | :: | tempantotp |
subroutine check_getan (antot, antota, antotp, tempantot, tempantota, tempantotp)
use mp, only : iproc
use theta_grid, only: ntgrid
use run_parameters, only: has_phi, has_apar, has_bpar
use kt_grids, only: naky, ntheta0, kwork_filter
use gs2_layouts, only: g_lo, it_idx, ik_idx, gf_lo, idx, proc_id
implicit none
complex, dimension (-ntgrid:ntgrid,ntheta0,naky), intent (inout) :: antot, antota, antotp
complex, dimension (-ntgrid:ntgrid,ntheta0,naky), intent (inout) :: tempantot, tempantota, tempantotp
complex :: tol = (1e-14,1e-14)
integer :: it, ik, igf, ig, iglo
if (has_phi) then
if(any(kwork_filter))then
loop1: do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
if(kwork_filter(it,ik)) cycle
igf = idx(gf_lo,ik,it)
if(proc_id(gf_lo,igf) .eq. iproc) then
do ig=-ntgrid,ntgrid
if(abs(aimag(antot(ig,it,ik)-tempantot(ig,it,ik))).gt.aimag(tol) .or. abs(real(antot(ig,it,ik)-tempantot(ig,it,ik))).gt.real(tol)) then
write(*,*) iproc,'problem with antot gf_lo integration',igf,it,ik,antot(ig,it,ik),tempantot(ig,it,ik)
exit loop1
end if
end do
end if
end do loop1
else
loop2: do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
igf = idx(gf_lo,ik,it)
if(proc_id(gf_lo,igf) .eq. iproc) then
do ig=-ntgrid,ntgrid
if(abs(aimag(antot(ig,it,ik)-antot(ig,it,ik))).gt.aimag(tol) .or. abs(real(antot(ig,it,ik)-antot(ig,it,ik))).gt.real(tol)) then
write(*,*) iproc,'problem with antot gf_lo integration',igf,it,ik,antot(ig,it,ik),tempantot(ig,it,ik)
exit loop2
end if
end do
end if
end do loop2
end if
end if
if (has_apar) then
if(any(kwork_filter))then
loop3: do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
if(kwork_filter(it,ik)) cycle
igf = idx(gf_lo,ik,it)
if(proc_id(gf_lo,igf) .eq. iproc) then
do ig=-ntgrid,ntgrid
if(abs(aimag(antota(ig,it,ik)-tempantota(ig,it,ik))).gt.aimag(tol) .or. abs(real(antota(ig,it,ik)-tempantota(ig,it,ik))).gt.real(tol)) then
write(*,*) iproc,'problem with antota gf_lo integration',igf,it,ik,antota(ig,it,ik),tempantota(ig,it,ik)
exit loop3
end if
end do
end if
end do loop3
else
loop4: do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
igf = idx(gf_lo,ik,it)
if(proc_id(gf_lo,igf) .eq. iproc) then
do ig=-ntgrid,ntgrid
if(abs(aimag(antota(ig,it,ik)-antota(ig,it,ik))).gt.aimag(tol) .or. abs(real(antota(ig,it,ik)-antota(ig,it,ik))).gt.real(tol)) then
write(*,*) iproc,'problem with antota gf_lo integration',igf,it,ik,antota(ig,it,ik),tempantota(ig,it,ik)
exit loop4
end if
end do
end if
end do loop4
end if
end if
if (has_bpar) then
if(any(kwork_filter))then
loop5: do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
if(kwork_filter(it,ik)) cycle
igf = idx(gf_lo,ik,it)
if(proc_id(gf_lo,igf) .eq. iproc) then
do ig=-ntgrid,ntgrid
if(abs(aimag(antotp(ig,it,ik)-tempantotp(ig,it,ik))).gt.aimag(tol) .or. abs(real(antotp(ig,it,ik)-tempantotp(ig,it,ik))).gt.real(tol)) then
write(*,*) iproc,'problem with antotp gf_lo integration',igf,it,ik,antotp(ig,it,ik),tempantotp(ig,it,ik)
exit loop5
end if
end do
end if
end do loop5
else
loop6: do iglo = g_lo%llim_proc, g_lo%ulim_proc
ik = ik_idx(g_lo,iglo)
it = it_idx(g_lo,iglo)
igf = idx(gf_lo,ik,it)
if(proc_id(gf_lo,igf) .eq. iproc) then
do ig=-ntgrid,ntgrid
if(abs(aimag(antotp(ig,it,ik)-antotp(ig,it,ik))).gt.aimag(tol) .or. abs(real(antotp(ig,it,ik)-antotp(ig,it,ik))).gt.real(tol)) then
write(*,*) iproc,'problem with antotp gf_lo integration',igf,it,ik,antotp(ig,it,ik),tempantotp(ig,it,ik)
exit loop6
end if
end do
end if
end do loop6
end if
end if
end subroutine check_getan