I think reshape is the only intrinsic possibility. But it is not too difficult to use with a bit of elegant writing, like,
integer(IK) , parameter :: nd = 3_IK, np = 5_IK
real(RK) , parameter :: Sample(nd,np) = reshape([ 0.706046088019609031832846377421_RK, 0.031832846377421276922984960890_RK, 0.276922984960890706046088019609_RK &
, 0.046171390631154097131781235848_RK, 0.097131781235848823457828327293_RK, 0.823457828327293046171390631154_RK &
, 0.694828622975817317099480060861_RK, 0.317099480060861950222048838355_RK, 0.950222048838355694828622975817_RK &
, 0.034446080502909438744359656398_RK, 0.438744359656398381558457093008_RK, 0.381558457093008034446080502909_RK &
, 0.765516788149002795199901137063_RK, 0.795199901137063186872604554379_RK, 0.186872604554379765516788149002_RK &
], shape = shape(Sample))
Just pay attention to the column-wise ordering of the elements when reshape occurs. If you like the lines of the code to truly represent the rows of the matrix, you can simply apply the transpose intrinsic to the reshaped matrix,
! A lower triangle matrix.
real(RK) , parameter :: MatLow(nd,nd) = transpose(reshape( [ 1.00_RK, 0._RK, 0._RK &
, 0.25_RK, +1.391941090707505_RK, 0._RK &
, 1.00_RK, -0.538815906080325_RK, 1.307546335452338_RK ], shape = shape(MatLow)))