![]() |
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.
1.9.1