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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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. |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | iRow | ||||
integer, | private | :: | iCol | ||||
integer, | private | :: | iCell | ||||
integer, | private | :: | iStrip | ||||
integer, | private | :: | strip_ub | ||||
real(kind=rk), | private | :: | mval |