dbcsr_set_block_pointer_2d_s Subroutine

private subroutine dbcsr_set_block_pointer_2d_s(matrix, pointer_any, rsize, csize, base_offset)

Sets a pointer, possibly using the buffers.

Arguments

Type IntentOptional Attributes Name
type(dbcsr_type), intent(in) :: matrix

Matrix to use

real(kind=real_4), DIMENSION(:, :), POINTER :: pointer_any

The pointer to set

integer, intent(in) :: rsize

Row size of block to point to Column size of block to point to

integer, intent(in) :: csize

Row size of block to point to Column size of block to point to

integer, intent(in) :: base_offset

The block pointer


Source Code

      SUBROUTINE dbcsr_set_block_pointer_2d_s ( &
         matrix, pointer_any, rsize, csize, base_offset)
     !! Sets a pointer, possibly using the buffers.

         TYPE(dbcsr_type), INTENT(IN)              :: matrix
        !! Matrix to use
         REAL(kind=real_4), DIMENSION(:, :), POINTER         :: pointer_any
        !! The pointer to set
         INTEGER, INTENT(IN)                      :: rsize, csize
        !! Row size of block to point to
        !! Column size of block to point to
         INTEGER, INTENT(IN)                      :: base_offset
        !! The block pointer

         CHARACTER(len=*), PARAMETER :: &
            routineN = 'dbcsr_set_block_pointer_2d_s'

         INTEGER                                  :: error_handler
         REAL(kind=real_4), DIMENSION(:), POINTER           :: lin_blk_p

!   ---------------------------------------------------------------------------

         IF (careful_mod) CALL timeset(routineN, error_handler)
         CALL dbcsr_get_data(matrix%data_area, lin_blk_p, &
                             lb=base_offset, ub=base_offset + rsize*csize - 1)
         CALL pointer_rank_remap2(pointer_any, rsize, csize, &
                                  lin_blk_p)
         IF (careful_mod) CALL timestop(error_handler)
      END SUBROUTINE dbcsr_set_block_pointer_2d_s