program sandbox implicit none real, dimension(2, 2) :: p real, dimension(:, :), allocatable :: q integer i, n n = 3 allocate(q(2, 2*n)) print *, "p" p = reshape([1, 3, 2, 4], shape(p)) do i=1, 2 print *, p(i, :) end do print *, "spread" q = reshape(spread(transpose(p), 2, n), [2, 2*n], order=[2, 1]) do i=1, 2 print *, q(i, :) end do deallocate(q) end program sandbox