ply_transform_matrix Subroutine

private subroutine ply_transform_matrix(max_modes, v)

Compute the transformation matrix for a projection to the left and right half-interval of Legendre polynomials for the given maximal number of modes.

Note: The transformation matrices to each subinterval are triangular, and the diagonal entries are the same. To save memory both matrices are stored in a single 2 dimensional array of size (max_modes, max_modes).

This matrix only needs to be computed once for a sufficiently high order, as submatices out of it can by used to perform the transformation for any lower polynomial degree.


integer, intent(in) :: max_modes

The maximal number of modes to compute the transformation for.

The resulting matrix v will be max_modes x max_modes large and can be used for the transformation of all polynomials with up to this many modes.

real(kind=rk), intent(out), allocatable:: v(:,:)

The transformation matrix.

Upper triangular matrix is created for shifting and lower triangular for (-1) * shifting. For the right interval we interpret the first index as row index and the second as column. For the left interval this is reverted and we interpret the first index as columns of the matrix.


proc~~ply_transform_matrix~~CallsGraph proc~ply_transform_matrix ply_transform_matrix proc~ply_beta ply_beta proc~ply_transform_matrix->proc~ply_beta proc~ply_alpha_beta ply_alpha_beta proc~ply_transform_matrix->proc~ply_alpha_beta proc~ply_alpha ply_alpha proc~ply_transform_matrix->proc~ply_alpha proc~ply_alpha_frac ply_alpha_frac proc~ply_transform_matrix->proc~ply_alpha_frac

Called by

proc~~ply_transform_matrix~~CalledByGraph proc~ply_transform_matrix ply_transform_matrix proc~ply_subsampledata~2 ply_subsampleData proc~ply_subsampledata~2->proc~ply_transform_matrix proc~ply_poly_transformation ply_Poly_Transformation proc~ply_poly_transformation->proc~ply_subsampledata~2



integer, private :: m
integer, private :: orig
real(kind=rk), private :: shifting
real(kind=rk), private :: scaling