Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
|
Splines in pp form.
Implement splines on a uniform grid, periodic boundaries implemented for degree 0-6 and clamped boundaries for degree 1-3
Derived types and interfaces | |
type | sll_t_spline_pp_1d |
arbitrary degree 1d spline More... | |
type | sll_t_spline_pp_2d |
arbitrary degree 2d spline More... | |
type | sll_t_spline_pp_3d |
arbitrary degree 3d spline More... | |
Functions/Subroutines | |
subroutine, public | sll_s_spline_pp_pp_to_b_1d (self, n_cells, pp_coeffs, b_coeffs) |
Compute b_coeffs from coefficients of the monomials (in pp_coeffs) More... | |
subroutine | sll_s_spline_pp_b_to_pp_1d_clamped (self, n_cells, b_coeffs, pp_coeffs) |
Convert 1d spline in B form to spline in pp form for clamped spline. More... | |
subroutine | sll_s_spline_pp_b_to_pp_1d_clamped_clampeddiri (self, n_cells, b_coeffs, pp_coeffs) |
Convert 1d spline in B form to spline in pp form for clamped spline and Dirichlet conditions on the right boundary. More... | |
subroutine, public | sll_s_spline_pp_b_to_pp_1d (self, n_cells, b_coeffs, pp_coeffs) |
Convert 1d spline in B form to spline in pp form with periodic boundary conditions. More... | |
subroutine | sll_s_spline_pp_b_to_pp_1d_cell (self, b_coeffs, pp_coeffs) |
Convert 1d spline in B form in a cell to spline in pp form with periodic boundary conditions. More... | |
subroutine | sll_s_spline_pp_b_to_pp_1d_cella (degree, pp_b, b_coeffs, pp_coeffs) |
Convert 1d spline in B form in a cell to spline in pp form for specified pp_coefficients of the b_splines. More... | |
subroutine, public | sll_s_spline_pp_b_to_pp_2d_periodic (self, n_cells, b_coeffs, pp_coeffs) |
Convert 2d spline in B form to spline in pp form with periodic boundary conditions This is a special case of the procedure sll_s_spline_pp_b_to_pp_2d for the double periodic case to avoid the select case statements. More... | |
subroutine, public | sll_s_spline_pp_b_to_pp_2d (self, n_cells, b_coeffs, pp_coeffs) |
Convert 2d spline in B form to spline in pp form. More... | |
subroutine | sll_s_spline_pp_b_to_pp_2d_cell (spline1, spline2, n_cells, b_coeffs, pp_coeffs, i, j) |
Convert 2d spline in B form in a cell to spline in pp form with periodic boundary conditions. More... | |
subroutine, public | sll_s_spline_pp_b_to_pp_3d (self, n_cells, b_coeffs, pp_coeffs) |
Convert 3d spline in B form to spline in pp form with periodic boundary conditions. More... | |
subroutine | sll_s_spline_pp_b_to_pp_3d_cell (self, n_cells, b_coeffs, pp_coeffs, i, j, k) |
Convert 3d spline in B form in a cell to spline in pp form with periodic boundary conditions. More... | |
subroutine | sll_s_spline_pp_b_to_pp_3d_cella (self, n_cells, b_coeffs, pp_coeffs, i, j, k) |
Convert 3d spline in B form in a cell to spline in pp form with clamped boundary in first direction and periodic boundary conditions in the other directions. More... | |
subroutine | sll_s_spline_pp_b_to_pp_3d_cella2f (self, n_cells, b_coeffs, pp_coeffs, i, j, k) |
Convert 3d spline in B form in a cell to spline in pp form with clamped boundary in all three directions. More... | |
subroutine | sll_s_spline_pp_b_to_pp_3d_cellaf (self, n_cells, b_coeffs, pp_coeffs, i, j, k) |
Convert 3d spline in B form in a cell to spline in pp form with clamped boundary in all three directions. More... | |
subroutine, public | sll_s_spline_pp_b_to_pp_3d_clamped (self, n_cells, b_coeffs, pp_coeffs) |
Convert 3d spline in B form to spline in pp form for clamped spline. More... | |
subroutine, public | sll_s_spline_pp_b_to_pp_3d_clamped_2full (self, n_cells, b_coeffs, pp_coeffs) |
Convert 3d spline in B form to spline in pp form for clamped spline. More... | |
subroutine | sll_s_spline_pp_b_to_pp_3d_clamped_full (self, n_cells, b_coeffs, pp_coeffs) |
Convert 3d spline in B form to spline in pp form for clamped spline. More... | |
subroutine, public | sll_s_spline_evaluate_basis_b_form_1d_clamped (self, n_cells, b_coeffs, val) |
subroutine, public | sll_s_spline_evaluate_basis_b_form_1d_periodic (self, n_cells, b_coeffs, val) |
subroutine | sll_s_spline_evaluate_basis_pp_form_1d (self, n_cells, pp_coeffs, val) |
subroutine, public | sll_s_spline_evaluate_basis_b_form_3d_clamped (self, n_cells, b_coeffs, val) |
subroutine, public | sll_s_spline_evaluate_basis_b_form_3d_periodic (self, n_cells, b_coeffs, val) |
subroutine | sll_s_spline_evaluate_basis_pp_form_3d (self, n_cells, pp_coeffs, val) |
subroutine, public | sll_s_spline_pp_horner_m_1d (self, val, degree, x) |
Perform a 1d hornerschema on the poly_coeffs. More... | |
subroutine, public | sll_s_spline_pp_horner_m_2d (self, val, degree, x) |
Perform two times a 1d hornerschema on the poly_coeffs. More... | |
subroutine, public | sll_s_spline_pp_horner_m_3d (self, val, degree, x) |
Perform three times a 1d hornerschema on the poly_coeffs. More... | |
subroutine, public | sll_s_spline_pp_horner_primitive_1d (val, degree, pp_coeffs, x) |
Perform a 1d hornerschema on the pp_coeffs evaluate at x. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_1d (degree, pp_coeffs, x, index) |
Perform a 1d hornerschema on the pp_coeffs at index. More... | |
real(kind=f64) function | sll_f_spline_pp_horner_derivative_1d (degree, pp_coeffs, x, index) |
Perform a 1d hornerschema on the pp_coeffs at index. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_2d (degree, pp_coeffs, x, indices, n_cells) |
Perform a 2d hornerschema on the pp_coeffs at the indices. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_3d (degree, pp_coeffs, x, indices, n_cells) |
Perform a 3d hornerschema on the pp_coeffs at the indices. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_3d_d1 (degree, pp_coeffs, x, indices, n_cells) |
Perform a 3d hornerschema on the pp_coeffs at the indices. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_3d_d2 (degree, pp_coeffs, x, indices, n_cells) |
Perform a 3d hornerschema on the pp_coeffs at the indices. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_3d_d3 (degree, pp_coeffs, x, indices, n_cells) |
Perform a 3d hornerschema on the pp_coeffs at the indices. More... | |
real(kind=f64) function, public | sll_f_spline_pp_horner_derivative_3d (degree, pp_coeffs, x, indices, n_cells, component) |
Perform a 3d hornerschema on the pp_coeffs at the indices. More... | |
subroutine, public | sll_s_spline_pp_init_1d (self, degree, n_cells, boundary) |
Initialize sll_t_spline_pp_1d object (Set poly_coeffs depending on degree) More... | |
subroutine, public | sll_s_spline_pp_init_2d (self, degree, n_cells, boundary) |
Initialize sll_t_spline_pp_2d object. More... | |
subroutine, public | sll_s_spline_pp_init_3d (self, degree, n_cells, boundary) |
Initialize sll_t_spline_pp_3d object. More... | |
subroutine, public | sll_s_spline_pp_free_1d (self) |
Destructor 1d. More... | |
subroutine, public | sll_s_spline_pp_free_2d (self) |
Destructor 2d. More... | |
subroutine, public | sll_s_spline_pp_free_3d (self) |
Destructor 3d. More... | |
Variables | |
integer(kind=i32), parameter, public | sll_p_boundary_periodic = 0 |
Parameter to specify boundary conditions. More... | |
integer(kind=i32), parameter, public | sll_p_boundary_clamped = 1 |
Parameter specifying clamped boundary conditions. More... | |
integer(kind=i32), parameter, public | sll_p_boundary_clamped_clampeddiri = 2 |
Parameter specifying clamped boundary conditions with the last point left out (for Dirichlet conditions on the right side of the domain) More... | |
integer(kind=i32), parameter, public | sll_p_boundary_clampeddiri = 3 |
Parameter specifying clamped boundary conditions with the first and last point left out (for Dirichlet conditions) More... | |
integer(kind=i32), parameter, public | sll_p_boundary_clampeddiri_clamped = 4 |
Parameter specifying clamped boundary conditions with the first point left out (for Dirichlet conditions on the left side of the domain) More... | |
integer(kind=i32), parameter, public | sll_p_boundary_clamped_square = 5 |
Parameter specifying clamped boundary conditions with square spline for the 0-form, boundary spline of degree 2 is set to zero. More... | |
integer(kind=i32), parameter, public | sll_p_boundary_clamped_cubic = 6 |
Parameter specifying clamped boundary conditions with a cubic spline for the 0-form, boundary spline of degree 3 is set to zero. More... | |
real(kind=f64), parameter | inv_2 = 1._f64/2._f64 |
real(kind=f64), parameter | inv_3 = 1._f64/3._f64 |
real(kind=f64), parameter | inv_4 = 1._f64/4._f64 |
real(kind=f64), parameter | inv_6 = 1._f64/6._f64 |
real(kind=f64), parameter | inv_7 = 1._f64/7._f64 |
real(kind=f64), parameter | inv_8 = 1._f64/8._f64 |
real(kind=f64), parameter | inv_12 = 1._f64/12._f64 |
real(kind=f64), parameter | inv_16 = 1._f64/16._f64 |
real(kind=f64), parameter | inv_18 = 1._f64/18._f64 |
real(kind=f64), parameter | inv_20 = 1._f64/20._f64 |
real(kind=f64), parameter | inv_24 = 1._f64/24._f64 |
real(kind=f64), parameter | inv_30 = 1._f64/30._f64 |
real(kind=f64), parameter | inv_36 = 1._f64/36._f64 |
real(kind=f64), parameter | inv_48 = 1._f64/48._f64 |
real(kind=f64), parameter | inv_60 = 1._f64/60._f64 |
real(kind=f64), parameter | inv_72 = 1._f64/72._f64 |
real(kind=f64), parameter | inv_80 = 1._f64/80._f64 |
real(kind=f64), parameter | inv_120 = 1._f64/120._f64 |
real(kind=f64), parameter | inv_240 = 1._f64/240._f64 |
real(kind=f64), parameter | inv_144 = 1._f64/144._f64 |
real(kind=f64), parameter | inv_720 = 1._f64/720._f64 |
real(kind=f64), parameter | inv_5040 = 1._f64/5040._f64 |
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_1d | ( | integer(kind=i32), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), intent(in) | x, | ||
integer(kind=i32), intent(in) | index | ||
) |
Perform a 1d hornerschema on the pp_coeffs at index.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | index | index of cell in which is x |
Definition at line 1174 of file sll_m_splines_pp.F90.
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_2d | ( | integer(kind=i32), dimension(2), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(2), intent(in) | x, | ||
integer(kind=i32), dimension(2), intent(in) | indices, | ||
integer(kind=i32), dimension(2), intent(in) | n_cells | ||
) |
Perform a 2d hornerschema on the pp_coeffs at the indices.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | indices | indices of cell in which is x |
[in] | n_cells | number of gridcells |
Perform a 1d hornerschema in the first dimension
Perform a 1d hornerschema in the second dimension
Definition at line 1208 of file sll_m_splines_pp.F90.
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_3d | ( | integer(kind=i32), dimension(3), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(3), intent(in) | x, | ||
integer(kind=i32), dimension(3), intent(in) | indices, | ||
integer(kind=i32), dimension(3), intent(in) | n_cells | ||
) |
Perform a 3d hornerschema on the pp_coeffs at the indices.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | indices | indices of cell in which is x |
[in] | n_cells | number of gridcells |
Perform a 1d hornerschema in the first dimension
Perform a 2d hornerschema in the second and third dimension
Definition at line 1226 of file sll_m_splines_pp.F90.
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_3d_d1 | ( | integer(kind=i32), dimension(3), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(3), intent(in) | x, | ||
integer(kind=i32), dimension(3), intent(in) | indices, | ||
integer(kind=i32), dimension(3), intent(in) | n_cells | ||
) |
Perform a 3d hornerschema on the pp_coeffs at the indices.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | indices | indices of cell in which is x |
[in] | n_cells | number of gridcells |
Perform a 1d hornerschema in the first dimension
Perform a 2d hornerschema in the second and third dimension
Perform a 1d hornerschema in the first dimension
Perform a 1d hornerschema in the second dimension
Definition at line 1250 of file sll_m_splines_pp.F90.
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_3d_d2 | ( | integer(kind=i32), dimension(3), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(3), intent(in) | x, | ||
integer(kind=i32), dimension(3), intent(in) | indices, | ||
integer(kind=i32), dimension(3), intent(in) | n_cells | ||
) |
Perform a 3d hornerschema on the pp_coeffs at the indices.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | indices | indices of cell in which is x |
[in] | n_cells | number of gridcells |
Perform a 1d hornerschema in the first dimension
Perform a 2d hornerschema in the second and third dimension
Perform a 1d hornerschema in the first dimension
Perform a 1d hornerschema in the second dimension
Definition at line 1282 of file sll_m_splines_pp.F90.
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_3d_d3 | ( | integer(kind=i32), dimension(3), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(3), intent(in) | x, | ||
integer(kind=i32), dimension(3), intent(in) | indices, | ||
integer(kind=i32), dimension(3), intent(in) | n_cells | ||
) |
Perform a 3d hornerschema on the pp_coeffs at the indices.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | indices | indices of cell in which is x |
[in] | n_cells | number of gridcells |
Perform a 1d hornerschema in the first dimension
Perform a 2d hornerschema in the second and third dimension
Perform a 1d hornerschema in the first dimension
Perform a 1d hornerschema in the second dimension
Definition at line 1314 of file sll_m_splines_pp.F90.
|
private |
Perform a 1d hornerschema on the pp_coeffs at index.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | index | index of cell in which is x |
Definition at line 1191 of file sll_m_splines_pp.F90.
real(kind=f64) function, public sll_m_splines_pp::sll_f_spline_pp_horner_derivative_3d | ( | integer(kind=i32), dimension(3), intent(in) | degree, |
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(3), intent(in) | x, | ||
integer(kind=i32), dimension(3), intent(in) | indices, | ||
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
integer(kind=i32), intent(in) | component | ||
) |
Perform a 3d hornerschema on the pp_coeffs at the indices.
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
[in] | indices | indices of cell in which is x |
[in] | n_cells | number of gridcells |
Perform a 1d hornerschema in the first dimension
Perform a 2d hornerschema in the second and third dimension
Definition at line 1346 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_evaluate_basis_b_form_1d_clamped | ( | type(sll_t_spline_pp_1d), intent(in) | self, |
integer(kind=i32), intent(in) | n_cells, | ||
real(kind=f64), dimension(n_cells + self%degree), intent(in) | b_coeffs, | ||
real(kind=f64), dimension(:), intent(out) | val | ||
) |
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | val | array of values |
Definition at line 1009 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_evaluate_basis_b_form_1d_periodic | ( | type(sll_t_spline_pp_1d), intent(in) | self, |
integer(kind=i32), intent(in) | n_cells, | ||
real(kind=f64), dimension(n_cells), intent(in) | b_coeffs, | ||
real(kind=f64), dimension(:), intent(out) | val | ||
) |
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | val | array of values |
Definition at line 1023 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_evaluate_basis_b_form_3d_clamped | ( | type(sll_t_spline_pp_3d), intent(inout) | self, |
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
real(kind=f64), dimension((n_cells(1) + self%spline1%degree)*n_cells(2)*n_cells(3)), intent(in) | b_coeffs, | ||
real(kind=f64), dimension(:), intent(out) | val | ||
) |
[in,out] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | val | array of values |
Definition at line 1053 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_evaluate_basis_b_form_3d_periodic | ( | type(sll_t_spline_pp_3d), intent(inout) | self, |
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
real(kind=f64), dimension(n_cells(1)*n_cells(2)*n_cells(3)), intent(in) | b_coeffs, | ||
real(kind=f64), dimension(:), intent(out) | val | ||
) |
[in,out] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | val | array of values |
Definition at line 1065 of file sll_m_splines_pp.F90.
|
private |
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | pp_coeffs | coefficients of sp |
[out] | val | array of values |
Definition at line 1037 of file sll_m_splines_pp.F90.
|
private |
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | pp_coeffs | coefficients of sp |
[out] | val | array of values |
Definition at line 1077 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_b_to_pp_1d | ( | type(sll_t_spline_pp_1d), intent(in) | self, |
integer(kind=i32), intent(in) | n_cells, | ||
real(kind=f64), dimension(n_cells), intent(in) | b_coeffs, | ||
real(kind=f64), dimension(self%degree + 1, n_cells), intent(out) | pp_coeffs | ||
) |
Convert 1d spline in B form to spline in pp form with periodic boundary conditions.
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 209 of file sll_m_splines_pp.F90.
|
private |
Convert 1d spline in B form in a cell to spline in pp form with periodic boundary conditions.
[in] | self | arbitrary degree 1d spline |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 227 of file sll_m_splines_pp.F90.
|
private |
Convert 1d spline in B form in a cell to spline in pp form for specified pp_coefficients of the b_splines.
[in] | degree | spline degree |
[in] | pp_b | pp coefficients of the b spline in this interval |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 245 of file sll_m_splines_pp.F90.
|
private |
Convert 1d spline in B form to spline in pp form for clamped spline.
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 155 of file sll_m_splines_pp.F90.
|
private |
Convert 1d spline in B form to spline in pp form for clamped spline and Dirichlet conditions on the right boundary.
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 181 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_b_to_pp_2d | ( | type(sll_t_spline_pp_2d), intent(inout) | self, |
integer(kind=i32), dimension(2), intent(in) | n_cells, | ||
real(kind=f64), dimension(:), intent(in) | b_coeffs, | ||
real(kind=f64), dimension((self%spline1%degree + 1)*(self%spline2%degree + 1), n_cells(1)*n_cells(2)), intent(out) | pp_coeffs | ||
) |
Convert 2d spline in B form to spline in pp form.
[in,out] | self | arbitrary degree 2d spline |
[in] | n_cells | number of gridcells |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 284 of file sll_m_splines_pp.F90.
|
private |
Convert 2d spline in B form in a cell to spline in pp form with periodic boundary conditions.
[in,out] | spline1 | arbitrary degree 1d spline |
[in,out] | spline2 | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[in,out] | pp_coeffs | coefficients of spline in pp-form |
[in] | j | indices |
convert b-coefficients in pp-coefficients in first dimension
use of modulo for boundary cells in second dimension
use of modulo for boundary cells in both dimensions
convert b-coefficients in pp_coefficients in second dimension
Definition at line 477 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_b_to_pp_2d_periodic | ( | type(sll_t_spline_pp_2d), intent(inout) | self, |
integer(kind=i32), dimension(2), intent(in) | n_cells, | ||
real(kind=f64), dimension(n_cells(1)*n_cells(2)), intent(in) | b_coeffs, | ||
real(kind=f64), dimension((self%spline1%degree + 1)*(self%spline2%degree + 1), n_cells(1)*n_cells(2)), intent(out) | pp_coeffs | ||
) |
Convert 2d spline in B form to spline in pp form with periodic boundary conditions This is a special case of the procedure sll_s_spline_pp_b_to_pp_2d for the double periodic case to avoid the select case statements.
[in,out] | self | arbitrary degree 2d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 265 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_b_to_pp_3d | ( | type(sll_t_spline_pp_3d), intent(inout) | self, |
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
real(kind=f64), dimension(n_cells(1)*n_cells(2), n_cells(2)), intent(in) | b_coeffs, | ||
real(kind=f64), dimension((self%spline1%degree + 1)*(self%spline2%degree + 1)*(self%spline3%degree + 1), n_cells(1)*n_cells(2)*n_cells(3)), intent(out) | pp_coeffs | ||
) |
Convert 3d spline in B form to spline in pp form with periodic boundary conditions.
[in,out] | self | arbitrary degree 2d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 528 of file sll_m_splines_pp.F90.
|
private |
Convert 3d spline in B form in a cell to spline in pp form with periodic boundary conditions.
[in,out] | self | arbitrary degree 3d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[in,out] | pp_coeffs | coefficients of spline in pp-form |
[in] | k | indices |
convert b-coefficients in pp-coefficients in first dimension
use of modulo for boundary cells in third dimension
use of modulo for boundary cells in second and third dimension
use of modulo for boundary cells in all three dimensions
convert b-coefficients in pp-coefficients in second dimension
convert b-coefficients in pp-coefficients in third dimension
Definition at line 546 of file sll_m_splines_pp.F90.
|
private |
Convert 3d spline in B form in a cell to spline in pp form with clamped boundary in first direction and periodic boundary conditions in the other directions.
[in,out] | self | arbitrary degree 3d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[in,out] | pp_coeffs | coefficients of spline in pp-form |
[in] | k | indices |
convert b-coefficients in pp-coefficients in first dimension
use of modulo for boundary cells in third dimension
use of modulo for boundary cells in second and third dimension
use of modulo for boundary cells in all three dimensions
use of modulo for boundary cells in all three dimensions
convert b-coefficients in pp-coefficients in second dimension
convert b-coefficients in pp-coefficients in third dimension
Definition at line 630 of file sll_m_splines_pp.F90.
|
private |
Convert 3d spline in B form in a cell to spline in pp form with clamped boundary in all three directions.
[in,out] | self | arbitrary degree 3d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[in,out] | pp_coeffs | coefficients of spline in pp-form |
[in] | k | indices |
convert b-coefficients in pp-coefficients in first dimension
use of modulo for boundary cells in second dimension
convert b-coefficients in pp-coefficients in second dimension
convert b-coefficients in pp-coefficients in third dimension
Definition at line 724 of file sll_m_splines_pp.F90.
|
private |
Convert 3d spline in B form in a cell to spline in pp form with clamped boundary in all three directions.
[in,out] | self | arbitrary degree 3d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[in,out] | pp_coeffs | coefficients of spline in pp-form |
[in] | k | indices |
convert b-coefficients in pp-coefficients in first dimension
convert b-coefficients in pp-coefficients in second dimension
convert b-coefficients in pp-coefficients in third dimension
Definition at line 833 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_b_to_pp_3d_clamped | ( | type(sll_t_spline_pp_3d), intent(inout) | self, |
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
real(kind=f64), dimension((n_cells(1) + self%spline1%degree)*n_cells(2)*n_cells(3)), intent(in) | b_coeffs, | ||
real(kind=f64), dimension((self%spline1%degree + 1)*(self%spline2%degree + 1)*(self%spline3%degree + 1), n_cells(1)*n_cells(2)*n_cells(3)), intent(out) | pp_coeffs | ||
) |
Convert 3d spline in B form to spline in pp form for clamped spline.
[in,out] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 957 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_b_to_pp_3d_clamped_2full | ( | type(sll_t_spline_pp_3d), intent(inout) | self, |
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
real(kind=f64), dimension((n_cells(1) + self%spline1%degree)*n_cells(2)*(n_cells(3) + self%spline3%degree)), intent(in) | b_coeffs, | ||
real(kind=f64), dimension((self%spline1%degree + 1)*(self%spline2%degree + 1)*(self%spline3%degree + 1), n_cells(1)*n_cells(2)*n_cells(3)), intent(out) | pp_coeffs | ||
) |
Convert 3d spline in B form to spline in pp form for clamped spline.
[in,out] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 974 of file sll_m_splines_pp.F90.
|
private |
Convert 3d spline in B form to spline in pp form for clamped spline.
[in,out] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[in] | b_coeffs | coefficients of spline in B-form |
[out] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 992 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_free_1d | ( | type(sll_t_spline_pp_1d), intent(inout) | self | ) |
Destructor 1d.
[in,out] | self | arbitrary degree 1d spline |
Definition at line 1684 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_free_2d | ( | type(sll_t_spline_pp_2d), intent(inout) | self | ) |
Destructor 2d.
[in,out] | self | arbitrary degree 2d spline |
Definition at line 1695 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_free_3d | ( | type(sll_t_spline_pp_3d), intent(inout) | self | ) |
Destructor 3d.
[in,out] | self | arbitrary degree 3d spline |
Definition at line 1704 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_horner_m_1d | ( | type(sll_t_spline_pp_1d), intent(in) | self, |
real(kind=f64), dimension(:), intent(out) | val, | ||
integer(kind=i32), intent(in) | degree, | ||
real(kind=f64), intent(in) | x | ||
) |
Perform a 1d hornerschema on the poly_coeffs.
[in] | self | arbitrary degree 1d spline |
[out] | val | array of values |
[in] | degree | degree of the spline |
[in] | x | point at which we evaluate our spline |
Definition at line 1113 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_horner_m_2d | ( | type(sll_t_spline_pp_2d), intent(in) | self, |
real(kind=f64), dimension(:, :), intent(out) | val, | ||
integer(kind=i32), dimension(2), intent(in) | degree, | ||
real(kind=f64), dimension(2), intent(in) | x | ||
) |
Perform two times a 1d hornerschema on the poly_coeffs.
[in] | self | arbitrary degree 2d spline |
[out] | val | array of values |
[in] | degree | degree of the spline |
[in] | x | point at which we evaluate our spline |
Definition at line 1126 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_horner_m_3d | ( | type(sll_t_spline_pp_3d), intent(in) | self, |
real(kind=f64), dimension(:, :), intent(out) | val, | ||
integer(kind=i32), dimension(3), intent(in) | degree, | ||
real(kind=f64), dimension(3), intent(in) | x | ||
) |
Perform three times a 1d hornerschema on the poly_coeffs.
[in] | self | arbitrary degree 3d spline |
[out] | val | array of values |
[in] | degree | degree of the spline |
[in] | x | point at which we evaluate our spline |
Definition at line 1142 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_horner_primitive_1d | ( | real(kind=f64), dimension(:), intent(out) | val, |
integer(kind=i32), intent(in) | degree, | ||
real(kind=f64), dimension(:, :), intent(in) | pp_coeffs, | ||
real(kind=f64), intent(in) | x | ||
) |
Perform a 1d hornerschema on the pp_coeffs evaluate at x.
[out] | val | array of values |
[in] | degree | degree of the spline |
[in] | pp_coeffs | coefficients of spline in pp-form |
[in] | x | point at which we evaluate our spline |
Definition at line 1161 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_init_1d | ( | type(sll_t_spline_pp_1d), intent(out) | self, |
integer(kind=i32), intent(in) | degree, | ||
integer(kind=i32), intent(in) | n_cells, | ||
integer(kind=i32), intent(in), optional | boundary | ||
) |
Initialize sll_t_spline_pp_1d object (Set poly_coeffs depending on degree)
[out] | self | arbitrary degree 1d spline |
[in] | degree | degree of spline |
[in] | n_cells | number of gridcells |
Definition at line 1386 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_init_2d | ( | type(sll_t_spline_pp_2d) | self, |
integer(kind=i32), dimension(2), intent(in) | degree, | ||
integer(kind=i32), dimension(2), intent(in) | n_cells, | ||
integer(kind=i32), dimension(2), intent(in), optional | boundary | ||
) |
Initialize sll_t_spline_pp_2d object.
self | arbitrary degree 2d spline | |
[in] | degree | degrees of the 1d splines |
[in] | n_cells | number of gridcells in every dimension |
[in] | boundary | boundary conditions |
Definition at line 1639 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_init_3d | ( | type(sll_t_spline_pp_3d) | self, |
integer(kind=i32), dimension(3), intent(in) | degree, | ||
integer(kind=i32), dimension(3), intent(in) | n_cells, | ||
integer(kind=i32), dimension(3), intent(in), optional | boundary | ||
) |
Initialize sll_t_spline_pp_3d object.
self | arbitrary degree 3d spline | |
[in] | degree | degrees of the 1d splines |
[in] | n_cells | number of gridcells in every dimension |
[in] | boundary | boundary conditions |
Definition at line 1656 of file sll_m_splines_pp.F90.
subroutine, public sll_m_splines_pp::sll_s_spline_pp_pp_to_b_1d | ( | type(sll_t_spline_pp_1d), intent(in) | self, |
integer(kind=i32), intent(in) | n_cells, | ||
real(kind=f64), dimension(self%degree + 1, 0:n_cells - 1), intent(in) | pp_coeffs, | ||
real(kind=f64), dimension(0:n_cells - 1), intent(out) | b_coeffs | ||
) |
Compute b_coeffs from coefficients of the monomials (in pp_coeffs)
[in] | self | arbitrary degree 1d spline |
[in] | n_cells | number of gridcells |
[out] | b_coeffs | coefficients of spline in B-form |
[in] | pp_coeffs | coefficients of spline in pp-form |
Definition at line 135 of file sll_m_splines_pp.F90.
|
private |
Definition at line 75 of file sll_m_splines_pp.F90.
|
private |
Definition at line 86 of file sll_m_splines_pp.F90.
|
private |
Definition at line 88 of file sll_m_splines_pp.F90.
|
private |
Definition at line 76 of file sll_m_splines_pp.F90.
|
private |
Definition at line 77 of file sll_m_splines_pp.F90.
|
private |
Definition at line 69 of file sll_m_splines_pp.F90.
|
private |
Definition at line 78 of file sll_m_splines_pp.F90.
|
private |
Definition at line 79 of file sll_m_splines_pp.F90.
|
private |
Definition at line 87 of file sll_m_splines_pp.F90.
|
private |
Definition at line 70 of file sll_m_splines_pp.F90.
|
private |
Definition at line 80 of file sll_m_splines_pp.F90.
|
private |
Definition at line 81 of file sll_m_splines_pp.F90.
|
private |
Definition at line 71 of file sll_m_splines_pp.F90.
|
private |
Definition at line 82 of file sll_m_splines_pp.F90.
|
private |
Definition at line 91 of file sll_m_splines_pp.F90.
|
private |
Definition at line 72 of file sll_m_splines_pp.F90.
|
private |
Definition at line 83 of file sll_m_splines_pp.F90.
|
private |
Definition at line 73 of file sll_m_splines_pp.F90.
|
private |
Definition at line 84 of file sll_m_splines_pp.F90.
|
private |
Definition at line 90 of file sll_m_splines_pp.F90.
|
private |
Definition at line 74 of file sll_m_splines_pp.F90.
|
private |
Definition at line 85 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_clamped = 1 |
Parameter specifying clamped boundary conditions.
Definition at line 62 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_clamped_clampeddiri = 2 |
Parameter specifying clamped boundary conditions with the last point left out (for Dirichlet conditions on the right side of the domain)
Definition at line 63 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_clamped_cubic = 6 |
Parameter specifying clamped boundary conditions with a cubic spline for the 0-form, boundary spline of degree 3 is set to zero.
Definition at line 67 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_clamped_square = 5 |
Parameter specifying clamped boundary conditions with square spline for the 0-form, boundary spline of degree 2 is set to zero.
Definition at line 66 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_clampeddiri = 3 |
Parameter specifying clamped boundary conditions with the first and last point left out (for Dirichlet conditions)
Definition at line 64 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_clampeddiri_clamped = 4 |
Parameter specifying clamped boundary conditions with the first point left out (for Dirichlet conditions on the left side of the domain)
Definition at line 65 of file sll_m_splines_pp.F90.
integer(kind=i32), parameter, public sll_p_boundary_periodic = 0 |
Parameter to specify boundary conditions.
Parameter specifying periodic boundary conditions
Definition at line 61 of file sll_m_splines_pp.F90.