Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Derived types and interfaces | |
type | sll_t_nufft_2d |
Nufft object for 2d interpolation. It contains fft plan and 1d array to pass data to nufft2d subroutine from nufft package. More... | |
Functions/Subroutines | |
subroutine | sll_s_nufft_2d_init (self, nc_eta1, eta1_min, eta1_max, nc_eta2, eta2_min, eta2_max) |
Allocate and initialize data and prepare the fft plan. More... | |
subroutine | sll_s_nufft_2d_free (self) |
Delete the nufft object. More... | |
subroutine | sll_s_nufft_2d_compute_fft (self, f_in) |
Compute the fft and prepare data for nufft call. More... | |
real(kind=f64) function | sll_f_nufft_2d_interpolate_value_from_fft (self, x, y) |
Interpolate single value when the fft is already compute. More... | |
subroutine | sll_s_nufft_2d_interpolate_array_values (self, f_in, x, y, f_out) |
Compute the fft and interpolate array values. More... | |
subroutine | sll_s_nufft_2d_interpolate_array_values_axi (self, f, x, y) |
Compute the fft and interpolate array values when x and y could be outside the domaine. Useful for rotation and axisymetric geometry. More... | |
subroutine | sll_s_nufft_2d_interpolate_array_from_fft (self, x, y, f) |
Compute the fft and interpolate array values when x and y are surely inside the domain. Optimized version for advector. More... | |
type sll_m_nufft_interpolation::sll_t_nufft_2d |
Nufft object for 2d interpolation. It contains fft plan and 1d array to pass data to nufft2d subroutine from nufft package.
Definition at line 13 of file sll_m_nufft_interpolation.F90.
Class Members | ||
---|---|---|
real(kind=f64) | epsnufft | |
real(kind=f64) | eta1_max | |
real(kind=f64) | eta1_min | |
real(kind=f64) | eta2_max | |
real(kind=f64) | eta2_min | |
complex(kind=f64), dimension(:), allocatable | f1 | |
complex(kind=f64), dimension(:), allocatable | f1d | |
complex(kind=f64), dimension(:), allocatable | f2 | |
complex(kind=f64), dimension(:, :), allocatable | fcmplx | |
type(sll_t_fft) | fft | |
integer(kind=i32), dimension(:), allocatable | i | |
integer(kind=i32), dimension(:), allocatable | j | |
integer(kind=i32) | nc_eta1 | |
integer(kind=i32) | nc_eta2 | |
real(kind=f64), dimension(:), allocatable | x | |
real(kind=f64), dimension(:), allocatable | y |
real(kind=f64) function sll_m_nufft_interpolation::sll_f_nufft_2d_interpolate_value_from_fft | ( | type(sll_t_nufft_2d) | self, |
real(kind=f64), intent(in) | x, | ||
real(kind=f64), intent(in) | y | ||
) |
Interpolate single value when the fft is already compute.
Definition at line 122 of file sll_m_nufft_interpolation.F90.
subroutine sll_m_nufft_interpolation::sll_s_nufft_2d_compute_fft | ( | type(sll_t_nufft_2d) | self, |
real(kind=f64), dimension(:, :), intent(in) | f_in | ||
) |
Compute the fft and prepare data for nufft call.
Definition at line 93 of file sll_m_nufft_interpolation.F90.
subroutine sll_m_nufft_interpolation::sll_s_nufft_2d_free | ( | type(sll_t_nufft_2d) | self | ) |
Delete the nufft object.
Definition at line 76 of file sll_m_nufft_interpolation.F90.
subroutine sll_m_nufft_interpolation::sll_s_nufft_2d_init | ( | type(sll_t_nufft_2d) | self, |
integer(kind=i32), intent(in) | nc_eta1, | ||
real(kind=f64), intent(in) | eta1_min, | ||
real(kind=f64), intent(in) | eta1_max, | ||
integer(kind=i32), intent(in) | nc_eta2, | ||
real(kind=f64), intent(in) | eta2_min, | ||
real(kind=f64), intent(in) | eta2_max | ||
) |
Allocate and initialize data and prepare the fft plan.
self | nufft 2d object | |
[in] | nc_eta1 | number of cells on x1 |
[in] | nc_eta2 | number of cells on x2 |
[in] | eta1_min | left |
[in] | eta1_max | right |
[in] | eta2_min | bottom |
[in] | eta2_max | top |
Definition at line 37 of file sll_m_nufft_interpolation.F90.
subroutine sll_m_nufft_interpolation::sll_s_nufft_2d_interpolate_array_from_fft | ( | type(sll_t_nufft_2d) | self, |
real(kind=f64), dimension(:, :), intent(in) | x, | ||
real(kind=f64), dimension(:, :), intent(in) | y, | ||
real(kind=f64), dimension(:, :), intent(out) | f | ||
) |
Compute the fft and interpolate array values when x and y are surely inside the domain. Optimized version for advector.
Definition at line 235 of file sll_m_nufft_interpolation.F90.
subroutine sll_m_nufft_interpolation::sll_s_nufft_2d_interpolate_array_values | ( | type(sll_t_nufft_2d) | self, |
real(kind=f64), dimension(:, :), intent(in) | f_in, | ||
real(kind=f64), dimension(:, :), intent(in) | x, | ||
real(kind=f64), dimension(:, :), intent(in) | y, | ||
real(kind=f64), dimension(:, :), intent(out) | f_out | ||
) |
Compute the fft and interpolate array values.
Definition at line 165 of file sll_m_nufft_interpolation.F90.
subroutine sll_m_nufft_interpolation::sll_s_nufft_2d_interpolate_array_values_axi | ( | type(sll_t_nufft_2d) | self, |
real(kind=f64), dimension(:, :), intent(inout) | f, | ||
real(kind=f64), dimension(:, :), intent(in) | x, | ||
real(kind=f64), dimension(:, :), intent(in) | y | ||
) |
Compute the fft and interpolate array values when x and y could be outside the domaine. Useful for rotation and axisymetric geometry.
Definition at line 182 of file sll_m_nufft_interpolation.F90.