Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Interpolator 1d using dg interpolation.
Algorithm described in Crouseilles, Mehrenberger, Vecil, ESAIM:Proceedings, 32, pp. 211-230, 2011.
Derived types and interfaces | |
type | sll_t_dg_interpolator_1d |
1d interpolator using dg More... | |
Functions/Subroutines | |
subroutine, public | sll_s_dg_interpolator_1d_init (self, n_cells, degree, x_min, x_max, type) |
subroutine, public | sll_s_dg_interpolator_1d_free (self) |
subroutine, public | sll_s_dg_interpolator_1d_interpolate_array_disp_periodic (self, num_pts, data, alpha, output_array) |
subroutine, public | sll_s_dg_interpolator_1d_interpolate_array_disp_halo (self, data, alpha, weights1, weights2, output_array) |
Interpolation routine with halo cells. More... | |
subroutine, public | sll_s_dg_interpolator_1d_dg_to_equi_cell (self, npoints, output_array) |
subroutine, public | sll_s_dg_interpolator_1d_dg_to_equi_cell_staggered (self, npoints, output_array) |
real(kind=f64) function | lagrange_poly (self, idx, x) |
Evaluate Lagrange polynomial, original version. Suffers from repeated dereferencing, and repeated difference computation and division. Kept for documentation purposes. More... | |
real(kind=f64) function | lagrange_poly_opt (quadrature_points, quadrature_inv_diffs, degree, idx, x) |
Evaluate Lagrange polynomial, optimized version. More... | |
Variables | |
integer(kind=i32), parameter, public | sll_p_dg_gauss_legendre = 101 |
integer(kind=i32), parameter, public | sll_p_dg_gauss_lobatto = 102 |
integer(kind=i32), parameter, public | sll_p_dg_uniform = 103 |
|
private |
Evaluate Lagrange polynomial, original version. Suffers from repeated dereferencing, and repeated difference computation and division. Kept for documentation purposes.
Definition at line 410 of file sll_m_dg_interpolator_1d.F90.
|
private |
Evaluate Lagrange polynomial, optimized version.
Definition at line 428 of file sll_m_dg_interpolator_1d.F90.
subroutine, public sll_m_dg_interpolator_1d::sll_s_dg_interpolator_1d_dg_to_equi_cell | ( | type(sll_t_dg_interpolator_1d), intent(in) | self, |
integer(kind=i32), intent(in) | npoints, | ||
real(kind=f64), dimension(:, :), intent(out) | output_array | ||
) |
Definition at line 361 of file sll_m_dg_interpolator_1d.F90.
subroutine, public sll_m_dg_interpolator_1d::sll_s_dg_interpolator_1d_dg_to_equi_cell_staggered | ( | type(sll_t_dg_interpolator_1d), intent(in) | self, |
integer(kind=i32), intent(in) | npoints, | ||
real(kind=f64), dimension(:, :), intent(out) | output_array | ||
) |
Definition at line 384 of file sll_m_dg_interpolator_1d.F90.
subroutine, public sll_m_dg_interpolator_1d::sll_s_dg_interpolator_1d_free | ( | class(sll_t_dg_interpolator_1d), intent(inout) | self | ) |
Definition at line 141 of file sll_m_dg_interpolator_1d.F90.
subroutine, public sll_m_dg_interpolator_1d::sll_s_dg_interpolator_1d_init | ( | class(sll_t_dg_interpolator_1d), intent(inout) | self, |
integer(kind=i32), intent(in) | n_cells, | ||
integer(kind=i32), intent(in) | degree, | ||
real(kind=f64), intent(in) | x_min, | ||
real(kind=f64), intent(in) | x_max, | ||
integer(kind=i32), intent(in) | type | ||
) |
[in] | n_cells | No. of cells on dg mesh |
[in] | degree | Degree of the dg space |
[in] | x_min | Lower bound of the domain |
[in] | x_max | Upper bound of the domain |
[in] | type | Descriptor telling if Gauss-Lobatto, Gauss-Legendre or uniform points shall be used as points within the cells |
Definition at line 71 of file sll_m_dg_interpolator_1d.F90.
subroutine, public sll_m_dg_interpolator_1d::sll_s_dg_interpolator_1d_interpolate_array_disp_halo | ( | class(sll_t_dg_interpolator_1d), intent(inout) | self, |
real(kind=f64), dimension(:), intent(in) | data, | ||
real(kind=f64), intent(in) | alpha, | ||
real(kind=f64), dimension(self%degree, self%degree), intent(inout) | weights1, | ||
real(kind=f64), dimension(self%degree, self%degree), intent(inout) | weights2, | ||
real(kind=f64), dimension(self%n_total), intent(inout) | output_array | ||
) |
Interpolation routine with halo cells.
Definition at line 257 of file sll_m_dg_interpolator_1d.F90.
subroutine, public sll_m_dg_interpolator_1d::sll_s_dg_interpolator_1d_interpolate_array_disp_periodic | ( | class(sll_t_dg_interpolator_1d), intent(inout) | self, |
integer(kind=i32), intent(in) | num_pts, | ||
real(kind=f64), dimension(:), intent(in) | data, | ||
real(kind=f64), intent(in) | alpha, | ||
real(kind=f64), dimension(num_pts), intent(out) | output_array | ||
) |
Definition at line 156 of file sll_m_dg_interpolator_1d.F90.
integer(kind=i32), parameter, public sll_p_dg_gauss_legendre = 101 |
Definition at line 47 of file sll_m_dg_interpolator_1d.F90.
integer(kind=i32), parameter, public sll_p_dg_gauss_lobatto = 102 |
Definition at line 48 of file sll_m_dg_interpolator_1d.F90.
integer(kind=i32), parameter, public sll_p_dg_uniform = 103 |
Definition at line 49 of file sll_m_dg_interpolator_1d.F90.