ply_l2_projection Subroutine

private subroutine ply_l2_projection(nDofs, nIndeps, projected, original, matrix)

Actual implementation of the matrix operation to change between nodal and modal representations.

The operation is applied simultaneously to nIndeps 1D sections of the provided original data. These 1D sections have to run fastest in the original array and will be transposed (running slowest in the projected array). The actual direction of the operation depends on the passed matrix. matrix = l2p%leg2node will do the modal to nodal transformation matrix = l2p%node2leg will do the nodal to modal transformation


integer, intent(in) :: nDofs

Number of degree of freedoms

integer, intent(in) :: nIndeps

Number of values that can be computed independently.

real(kind=rk), intent(out) :: projected(nIndeps,nDofs)

Projected data.

Size has to be nIndeps*size(matrix,1), and the layout is changed here when compared to the original array, as the projected direction moves to the end.

real(kind=rk), intent(in) :: original(nDofs,nIndeps)

Original data.

Size has to be size(matrix,1) and the direction to be projected has to be the fastest running one.

real(kind=rk), intent(in) :: matrix(nDofs,nDofs)

Matrix to apply in this operation.

The matrix defines wether this is a modal to nodal transformation or the other way around.

Called by

proc~~ply_l2_projection~~CalledByGraph proc~ply_l2_projection ply_l2_projection proc~ply_l2p_trafo_1d ply_l2p_trafo_1D proc~ply_l2p_trafo_1d->proc~ply_l2_projection proc~ply_l2p_trafo_2d ply_l2p_trafo_2D proc~ply_l2p_trafo_2d->proc~ply_l2_projection proc~ply_l2p_trafo_3d ply_l2p_trafo_3D proc~ply_l2p_trafo_3d->proc~ply_l2_projection proc~ply_poly_project_m2n_multivar ply_poly_project_m2n_multiVar proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_1d proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_2d proc~ply_poly_project_m2n_multivar->proc~ply_l2p_trafo_3d proc~ply_poly_project_n2m_multivar ply_poly_project_n2m_multiVar proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_1d proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_2d proc~ply_poly_project_n2m_multivar->proc~ply_l2p_trafo_3d interface~ply_poly_project_m2n ply_poly_project_m2n interface~ply_poly_project_m2n->proc~ply_poly_project_m2n_multivar interface~ply_poly_project_n2m ply_poly_project_n2m interface~ply_poly_project_n2m->proc~ply_poly_project_n2m_multivar proc~create_target create_target proc~create_target->interface~ply_poly_project_n2m



integer, private :: iRow
integer, private :: iCol
integer, private :: iCell
integer, private :: iStrip
integer, private :: strip_ub
real(kind=rk), private :: mval