Calculates <|field|2 kperp2>_theta / <|field|2>_theta. Useful for simple quasilinear metric
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex, | intent(in), | dimension(-ntgrid:ntgrid, ntheta0, naky) | :: | field |
function get_field_weighted_average_kperp2(field) result(average)
use kt_grids, only: kperp2, naky, ntheta0
use theta_grid, only: ntgrid, field_line_average
implicit none
complex, dimension(-ntgrid:ntgrid, ntheta0, naky), intent(in) :: field
real, dimension(ntheta0, naky) :: average
real, dimension(-ntgrid:ntgrid, ntheta0, naky) :: field_squared
integer :: it, ik
field_squared = abs(field) * abs(field)
average = 0.0
do ik = 1, naky
do it = 1, ntheta0
if (maxval(abs(field_squared(:, it, ik))) <= epsilon(0.0)) cycle
average(it, ik) = field_line_average(field_squared(:, it, ik) * &
kperp2(:, it, ik)) / field_line_average(field_squared(:, it, ik))
end do
end do
end function get_field_weighted_average_kperp2