subroutine fm_getfieldeq1_nogath (self,phi, apar, bpar, antot, antota, antotp, &
fieldeq, fieldeqa, fieldeqp)
use theta_grid, only: ntgrid, bmag
use kt_grids, only: naky, ntheta0, kperp2, kwork_filter
use run_parameters, only: has_phi, has_apar, has_bpar, beta
use species, only: spec, has_electron_species
use dist_fn, only: gamtot,gamtot1, gamtot2, fl_avg
use dist_fn, only: adiabatic_option_switch, adiabatic_option_fieldlineavg, calculate_flux_surface_average
implicit none
class(fieldmat_type), intent(in) :: self
complex, dimension (-ntgrid:,:,:), intent (in) :: phi, apar, bpar
complex, dimension (-ntgrid:,:,:), intent (in) :: antot, antota, antotp
complex, dimension (-ntgrid:,:,:), intent (in out) ::fieldeq,fieldeqa,fieldeqp
integer :: ik, it, is, ic
if (.not. allocated(fl_avg)) allocate (fl_avg(ntheta0, naky))
fl_avg = 0.
if (.not. has_electron_species(spec)) then
if (adiabatic_option_switch == adiabatic_option_fieldlineavg) then
call calculate_flux_surface_average(fl_avg,antot)
end if
end if
!Now loop over cells and calculate field equation as required.
!Note we only populate the parts of the fieldeq arrays which
!are local to this processor.
!$OMP PARALLEL DO DEFAULT(none) &
!$OMP PRIVATE(ik, it, is, ic) &
!$OMP SHARED(self, kwork_filter, has_phi, antot, gamtot, fl_avg, &
!$OMP fieldeq, bpar, gamtot1, has_apar, has_bpar, fieldeqa, antota, kperp2, apar, &
!$OMP fieldeqp, gamtot2, beta, bmag, phi, antotp) &
!$OMP SCHEDULE(static)
do ik=1,self%naky
!Skip empty cells, note this is slightly different to skipping
!.not.is_local. Skipping empty is probably faster but may be more dangerous
if(self%kyb(ik)%is_empty) cycle
do is=1,self%kyb(ik)%nsupercell
if(self%kyb(ik)%supercells(is)%is_empty) cycle
do ic=1,self%kyb(ik)%supercells(is)%ncell
if(self%kyb(ik)%supercells(is)%cells(ic)%is_empty) cycle
it=self%kyb(ik)%supercells(is)%cells(ic)%it_ind
if(kwork_filter(it,ik)) cycle
!Now fill in data
if(has_phi) then
fieldeq(:,it,ik) = antot(:,it,ik) - &
gamtot(:,it,ik)*phi(:,it,ik) + &
fl_avg(it, ik)
if(has_bpar) fieldeq(:,it,ik)=fieldeq(:,it,ik)+bpar(:,it,ik)*gamtot1(:,it,ik)
endif
if(has_apar) then
fieldeqa(:,it,ik) = antota(:,it,ik) - &
kperp2(:,it,ik)*apar(:,it,ik)
endif
if(has_bpar)then
fieldeqp(:,it,ik) = bpar(:,it,ik) + &
(antotp(:,it,ik)+bpar(:,it,ik)*gamtot2(:,it,ik) + &
0.5*phi(:,it,ik)*gamtot1(:,it,ik))*(beta/bmag**2)
endif
enddo
enddo
enddo
!$OMP END PARALLEL DO
end subroutine fm_getfieldeq1_nogath