Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Functions/Subroutines | Variables
sll_m_lagrange_interpolation_1d_fast Module Reference

Description

Module for 1D Lagrange interpolation on a uniform grid (only odd order)

Author
Klaus Reuter, MPCDF
Katharina Kormann, IPP; Contact: Katharina Kormann, IPP

This is an alternative implementation of the Lagrange interpolation for equidistant grids. The only function implemented is an interpolation for a given displacement (interpolate_array_disp). The purpose of this implementation is to provide a fast alternative that exploits the simplifications in this special case. Note: The implementation is based on the formulas in Abramowitz and Stegun: Handbook of Mathematical Functions, Chapter 25.2

Functions/Subroutines

subroutine lagr_4pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_4pt (fm1, f0, f1, f2, p)
 single point 4-pt-lagrange interpolation More...
 
subroutine lagr_4pt_vec (fi, fp, p, index_shift)
 vectorizable 4-pt-lagrange interpolation More...
 
subroutine lagr_6pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_6pt (fm2, fm1, f0, f1, f2, f3, p)
 single point 6-pt-lagrange interpolation More...
 
subroutine lagr_6pt_vec (fi, fp, p, index_shift)
 vectorizable 6-pt-lagrange interpolation More...
 
subroutine lagr_8pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_8pt (fm3, fm2, fm1, f0, f1, f2, f3, f4, p)
 single point 8-pt-lagrange interpolation More...
 
subroutine lagr_8pt_vec (fi, fp, p, index_shift)
 vectorizable 6-pt-lagrange interpolation More...
 
subroutine lagr_3pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_3pt (fm1, f0, f1, p)
 single point 3-pt-lagrange interpolation More...
 
subroutine lagr_3pt_vec (fi, fp, p)
 vectorizable 3-pt-lagrange interpolation More...
 
subroutine lagr_5pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_5pt (fm2, fm1, f0, f1, f2, p)
 single point 5-pt-lagrange interpolation More...
 
subroutine lagr_5pt_vec (fi, fp, p)
 vectorizable 5-pt-lagrange interpolation More...
 
subroutine lagr_7pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_7pt (fm3, fm2, fm1, f0, f1, f2, f3, p)
 single point 7-pt-lagrange interpolation More...
 
subroutine lagr_7pt_vec (fi, fp, p)
 vectorizable 7-pt-lagrange interpolation More...
 
subroutine lagr_9pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_9pt (fm4, fm3, fm2, fm1, f0, f1, f2, f3, f4, p)
 single point 9-pt-lagrange interpolation More...
 
subroutine lagr_9pt_vec (fi, fp, p)
 vectorizable 9-pt-lagrange interpolation More...
 
subroutine lagr_11pt_coeff (pp, p)
 Compute coefficients for Lagrange interpolation for normalized displacement p. More...
 
real(kind=f64) function lagr_11pt (fm5, fm4, fm3, fm2, fm1, f0, f1, f2, f3, f4, f5, p)
 single point 11-pt-lagrange interpolation More...
 
subroutine lagr_11pt_vec (fi, fp, p)
 vectorizable 11-pt-lagrange interpolation More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_no_bc (fi, fp, p, stencil)
 Lagrange interpolation, without boundary conditions. One sided a the outermost points. More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodic (fi, fp, p, stencil)
 Lagrange interpolation, periodic boundary conditions. More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodicl (fi, fp, p, stencil)
 Lagrange interpolation, periodic boundary conditions, first value repeated at the end. More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_centered_periodicl (fi, fp, p, stencil)
 Lagrange interpolation centered around the interval of displacement, periodic boundary condtions, first value repeated at the end TODO: Implement order other than 4. More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_fixed_haloc_cells (fi, fp, p, stencil)
 Lagrange interpolation with halo cell boundaries, where the input array already contains halo cells. ==> This is what you would typically use for an MPI decomposition with ghost cells. More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_centered_halo_cells (fi, fp, p, stencil)
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_disp_even_halo_cells (fi, fp, p, stencil)
 Even Lagrange interpolation with halo cells and no interval shift, i.e. p must be between zero and one. More...
 
subroutine, public sll_s_lagrange_interpolation_1d_fast_haloc_cells (fi, fp, p, stencil, index_shift)
 Lagrange interpolation with halo cell boundaries, where the input array already contains halo cells. Different displacements in for each value in the array ==> This is what you would typically use for an MPI decomposition with ghost cells. More...
 

Variables

real(kind=f64), parameter inv_6 = 1._f64/6._f64
 
real(kind=f64), parameter inv_12 = 1._f64/12._f64
 
real(kind=f64), parameter inv_24 = 1._f64/24._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_120 = 1._f64/120._f64
 
real(kind=f64), parameter inv_144 = 1._f64/144._f64
 
real(kind=f64), parameter inv_240 = 1._f64/240._f64
 
real(kind=f64), parameter inv_576 = 1._f64/576._f64
 
real(kind=f64), parameter inv_720 = 1._f64/720._f64
 
real(kind=f64), parameter inv_1440 = 1._f64/1440._f64
 
real(kind=f64), parameter inv_5040 = 1._f64/5040._f64
 
real(kind=f64), parameter inv_14400 = 1._f64/14400._f64
 
real(kind=f64), parameter inv_17280 = 1._f64/17280._f64
 
real(kind=f64), parameter inv_30240 = 1._f64/30240._f64
 
real(kind=f64), parameter inv_40320 = 1._f64/40320._f64
 
real(kind=f64), parameter inv_80640 = 1._f64/80640._f64
 
real(kind=f64), parameter inv_362880 = 1._f64/362880._f64
 
real(kind=f64), parameter inv_3628800 = 1._f64/3628800._f64
 

Function/Subroutine Documentation

◆ lagr_11pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_11pt ( real(kind=f64), intent(in)  fm5,
real(kind=f64), intent(in)  fm4,
real(kind=f64), intent(in)  fm3,
real(kind=f64), intent(in)  fm2,
real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  f3,
real(kind=f64), intent(in)  f4,
real(kind=f64), intent(in)  f5,
real(kind=f64), intent(in)  p 
)
private

single point 11-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm5known function values at point -5 (relative to where we want to interpolate)
[in]fm4known function values at point -4 (relative to where we want to interpolate)
[in]fm3known function values at point -3 (relative to where we want to interpolate)
[in]fm2known function values at point -2 (relative to where we want to interpolate)
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate))
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]f3known function values at point 3 (relative to where we want to interpolate)
[in]f4known function values at point 4 (relative to where we want to interpolate)
[in]f5known function values at point 5 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 498 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_11pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_11pt_coeff ( real(kind=f64), dimension(11), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 478 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_11pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_11pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p 
)
private

vectorizable 11-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing

Definition at line 532 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_3pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_3pt ( real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  p 
)
private

single point 3-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 250 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_3pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_3pt_coeff ( real(kind=f64), dimension(3), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 239 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_3pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_3pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p 
)
private

vectorizable 3-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing

Definition at line 267 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_4pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_4pt ( real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  p 
)
private

single point 4-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate)
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 71 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_4pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_4pt_coeff ( real(kind=f64), dimension(4), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 59 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_4pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_4pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  index_shift 
)
private

vectorizable 4-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing (between 0 and 1)
[in]index_shiftindex shift due to displacement

Definition at line 90 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_5pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_5pt ( real(kind=f64), intent(in)  fm2,
real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  p 
)
private

single point 5-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm2known function values at point -2 (relative to where we want to interpolate)
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate))
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 299 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_5pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_5pt_coeff ( real(kind=f64), dimension(5), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 286 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_5pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_5pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p 
)
private

vectorizable 5-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing

Definition at line 320 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_6pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_6pt ( real(kind=f64), intent(in)  fm2,
real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  f3,
real(kind=f64), intent(in)  p 
)
private

single point 6-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm2known function values at point -2 (relative to where we want to interpolate)
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate)
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]f3known function values at point 3 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 125 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_6pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_6pt_coeff ( real(kind=f64), dimension(6), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 110 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_6pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_6pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  index_shift 
)
private

vectorizable 6-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing (between 0 and 1)
[in]index_shiftindex shift due to displacement

Definition at line 148 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_7pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_7pt ( real(kind=f64), intent(in)  fm3,
real(kind=f64), intent(in)  fm2,
real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  f3,
real(kind=f64), intent(in)  p 
)
private

single point 7-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm3known function values at point -3 (relative to where we want to interpolate)
[in]fm2known function values at point -2 (relative to where we want to interpolate)
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate))
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]f3known function values at point 3 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 356 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_7pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_7pt_coeff ( real(kind=f64), dimension(7), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 341 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_7pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_7pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p 
)
private

vectorizable 7-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing

Definition at line 382 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_8pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_8pt ( real(kind=f64), intent(in)  fm3,
real(kind=f64), intent(in)  fm2,
real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  f3,
real(kind=f64), intent(in)  f4,
real(kind=f64), intent(in)  p 
)
private

single point 8-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm3known function values at point -3 (relative to where we want to interpolate)
[in]fm2known function values at point -2 (relative to where we want to interpolate)
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate)
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]f3known function values at point 3 (relative to where we want to interpolate)
[in]f4known function values at point 4 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 185 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:

◆ lagr_8pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_8pt_coeff ( real(kind=f64), dimension(8), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Parameters
[out]ppLagrange interpolations coefficients
[in]pdisplacement in units of grid spacing

Definition at line 170 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_8pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_8pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  index_shift 
)
private

vectorizable 6-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing (between 0 and 1)
[in]index_shiftindex shift due to displacement

Definition at line 212 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_9pt()

real(kind=f64) function sll_m_lagrange_interpolation_1d_fast::lagr_9pt ( real(kind=f64), intent(in)  fm4,
real(kind=f64), intent(in)  fm3,
real(kind=f64), intent(in)  fm2,
real(kind=f64), intent(in)  fm1,
real(kind=f64), intent(in)  f0,
real(kind=f64), intent(in)  f1,
real(kind=f64), intent(in)  f2,
real(kind=f64), intent(in)  f3,
real(kind=f64), intent(in)  f4,
real(kind=f64), intent(in)  p 
)
private

single point 9-pt-lagrange interpolation

Returns
interpolated value
Parameters
[in]fm4known function values at point -4 (relative to where we want to interpolate)
[in]fm3known function values at point -3 (relative to where we want to interpolate)
[in]fm2known function values at point -2 (relative to where we want to interpolate)
[in]fm1known function values at point -1 (relative to where we want to interpolate)
[in]f0known function values at point 0 (relative to where we want to interpolate)
[in]f1known function values at point 1 (relative to where we want to interpolate))
[in]f2known function values at point 2 (relative to where we want to interpolate)
[in]f3known function values at point 3 (relative to where we want to interpolate)
[in]f4known function values at point 4 (relative to where we want to interpolate)
[in]pdisplacement in units of grid spacing

Definition at line 423 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lagr_9pt_coeff()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_9pt_coeff ( real(kind=f64), dimension(9), intent(out)  pp,
real(kind=f64), intent(in)  p 
)
private

Compute coefficients for Lagrange interpolation for normalized displacement p.

Definition at line 405 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the caller graph for this function:

◆ lagr_9pt_vec()

subroutine sll_m_lagrange_interpolation_1d_fast::lagr_9pt_vec ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p 
)
private

vectorizable 9-pt-lagrange interpolation

Parameters
[in]fiknown function values
[out]fpinterpolated function values
[in]pdisplacement in units of grid spacing

Definition at line 453 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_centered_halo_cells()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_centered_halo_cells ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Definition at line 811 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_centered_periodicl()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_centered_periodicl ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Lagrange interpolation centered around the interval of displacement, periodic boundary condtions, first value repeated at the end TODO: Implement order other than 4.

Definition at line 710 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_even_halo_cells()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_even_halo_cells ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Even Lagrange interpolation with halo cells and no interval shift, i.e. p must be between zero and one.

Parameters
[in]fiinput values at interpolation points
[out]fpinterpolated values
[in]pnormalized displacement
[in]stencilnumber of points in Lagrange interpolation stencil

Definition at line 841 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_fixed_haloc_cells()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_fixed_haloc_cells ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Lagrange interpolation with halo cell boundaries, where the input array already contains halo cells. ==> This is what you would typically use for an MPI decomposition with ghost cells.

Parameters
[in]fi(:)input array of length n, including the halos
[out]fp(:)output array of length n, only the inner part is overwritten (ie boundaries of half stencil width are untouched)
[in]poffset in units of dx (best interpolation result for p close to zero, about [-1,1], but not a requirement)
[in]stencilnumber of points {3,5,7,9,11} in fi used for interpolation

Definition at line 783 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_fixed_no_bc()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_fixed_no_bc ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Lagrange interpolation, without boundary conditions. One sided a the outermost points.

Parameters
[in]fi(:)input array of length n
[out]fp(:)output array of length n
[in]poffset in units of dx (best interpolation result for p close to zero, about [-1,1], but not a requirement)
[in]stencilnumber of points in fi used for interpolation (possible values 3,5)

Definition at line 564 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodic()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodic ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Lagrange interpolation, periodic boundary conditions.

Parameters
[in]fi(:)input array of length n
[out]fp(:)output array of length n
[in]poffset in units of dx (best interpolation result for p close to zero, about [-1,1], but not a requirement)
[in]stencilnumber of points in fi used for interpolation (currently possible values 3,5)

Definition at line 609 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodicl()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_disp_fixed_periodicl ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), intent(in)  p,
integer(kind=i32), intent(in)  stencil 
)

Lagrange interpolation, periodic boundary conditions, first value repeated at the end.

Parameters
[in]fi(:)input array of length n+1
[out]fp(:)output array of length n+1
[in]poffset in units of dx (best interpolation result for p close to zero, about [-1,1], but not a requirement)
[in]stencilnumber of points in fi used for interpolation (currently possible values 3,5)

Definition at line 663 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_lagrange_interpolation_1d_fast_haloc_cells()

subroutine, public sll_m_lagrange_interpolation_1d_fast::sll_s_lagrange_interpolation_1d_fast_haloc_cells ( real(kind=f64), dimension(:), intent(in)  fi,
real(kind=f64), dimension(:), intent(out)  fp,
real(kind=f64), dimension(:), intent(in)  p,
integer(kind=i32), intent(in)  stencil,
integer(kind=i32), intent(in)  index_shift 
)

Lagrange interpolation with halo cell boundaries, where the input array already contains halo cells. Different displacements in for each value in the array ==> This is what you would typically use for an MPI decomposition with ghost cells.

Parameters
[in]fi(:)input array of length n, including the halos
[out]fp(:)output array of length n, only the inner part is overwritten (ie boundaries of half stencil width are untouched)
[in]p(:)offsets in units of dx (best interpolation result for p close to zero, about [-1,1], but not a requirement)
[in]stencilnumber of points {3,5,7,9,11} in fi used for interpolation

Definition at line 876 of file sll_m_lagrange_interpolation_1d_fast.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ inv_12

real(kind=f64), parameter inv_12 = 1._f64/12._f64
private

Definition at line 36 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_120

real(kind=f64), parameter inv_120 = 1._f64/120._f64
private

Definition at line 40 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_144

real(kind=f64), parameter inv_144 = 1._f64/144._f64
private

Definition at line 41 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_1440

real(kind=f64), parameter inv_1440 = 1._f64/1440._f64
private

Definition at line 45 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_14400

real(kind=f64), parameter inv_14400 = 1._f64/14400._f64
private

Definition at line 47 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_17280

real(kind=f64), parameter inv_17280 = 1._f64/17280._f64
private

Definition at line 48 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_24

real(kind=f64), parameter inv_24 = 1._f64/24._f64
private

Definition at line 37 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_240

real(kind=f64), parameter inv_240 = 1._f64/240._f64
private

Definition at line 42 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_30240

real(kind=f64), parameter inv_30240 = 1._f64/30240._f64
private

Definition at line 49 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_36

real(kind=f64), parameter inv_36 = 1._f64/36._f64
private

Definition at line 38 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_362880

real(kind=f64), parameter inv_362880 = 1._f64/362880._f64
private

Definition at line 52 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_3628800

real(kind=f64), parameter inv_3628800 = 1._f64/3628800._f64
private

Definition at line 53 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_40320

real(kind=f64), parameter inv_40320 = 1._f64/40320._f64
private

Definition at line 50 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_48

real(kind=f64), parameter inv_48 = 1._f64/48._f64
private

Definition at line 39 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_5040

real(kind=f64), parameter inv_5040 = 1._f64/5040._f64
private

Definition at line 46 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_576

real(kind=f64), parameter inv_576 = 1._f64/576._f64
private

Definition at line 43 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_6

real(kind=f64), parameter inv_6 = 1._f64/6._f64
private

Definition at line 35 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_720

real(kind=f64), parameter inv_720 = 1._f64/720._f64
private

Definition at line 44 of file sll_m_lagrange_interpolation_1d_fast.F90.

◆ inv_80640

real(kind=f64), parameter inv_80640 = 1._f64/80640._f64
private

Definition at line 51 of file sll_m_lagrange_interpolation_1d_fast.F90.

    Report Typos and Errors