Is it valid to do something like:
real(kind=rk), allocatable, target :: arr(:,:)
real(kind=rk), pointer :: ptr(:,:)
allocate(arr(10, 10))
ptr => arr(5:7, 5:7)
arr = 0
ptr(-1, 4) = 1
e.g. create pointer to array subsection and then access indices that are outside the subsection, but exist in the original array?