20 #include "sll_memory.h"
21 #include "sll_working_precision.h"
43 sll_int32 :: pade_case
50 procedure, pass(gyroaverage) :: initialize => &
52 procedure, pass(gyroaverage) :: compute_gyroaverage => &
66 sll_real64,
intent(in) :: eta_min(2)
67 sll_real64,
intent(in) :: eta_max(2)
68 sll_int32,
intent(in) :: nc(2)
69 sll_int32,
optional :: pade_case(2)
72 sll_allocate(gyroaverage, ierr)
89 sll_real64,
intent(in) :: eta_min(2)
90 sll_real64,
intent(in) :: eta_max(2)
91 sll_int32,
intent(in) :: nc(2)
92 sll_int32,
optional :: pade_case(2)
94 if (.not. (
present(pade_case)))
then
95 gyroaverage%pade_case = 0
96 elseif ((pade_case(1) == 0) .and. (pade_case(2) == 2))
then
97 gyroaverage%pade_case = 1
98 elseif ((pade_case(1) == 0) .and. (pade_case(2) == 4))
then
99 gyroaverage%pade_case = 2
100 elseif ((pade_case(1) == 2) .and. (pade_case(2) == 4))
then
101 gyroaverage%pade_case = 3
103 print *,
'#bad value of pade_case=', gyroaverage%pade_case
104 print *,
'#not implemented'
105 print *,
'#in initialize_gyroaverage_2d_polar_pade_solver'
118 sll_real64,
intent(in) :: larmor_rad
119 sll_real64,
dimension(:, :),
intent(inout) :: f
121 select case (gyroaverage%pade_case)
131 print *,
'#bad value of pade_case=', gyroaverage%pade_case
132 print *,
'#not implemented'
133 print *,
'compute_gyroaverage_2d_polar_pade'
type(gyroaverage_2d_polar_pade_solver) function, pointer, public sll_f_new_gyroaverage_2d_polar_pade_solver(eta_min, eta_max, Nc, pade_case)
subroutine initialize_gyroaverage_2d_polar_pade_solver(gyroaverage, eta_min, eta_max, Nc, pade_case)
subroutine compute_gyroaverage_2d_polar_pade(gyroaverage, larmor_rad, f)
subroutine, public sll_s_compute_gyroaverage_pade_polar(gyro, f, rho)
type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_f_new_plan_gyroaverage_polar_pade(eta_min, eta_max, Nc)
subroutine, public sll_s_compute_gyroaverage_pade_high_order_polar(gyro, f, rho, order)