dbcsr_make_images Subroutine

private subroutine dbcsr_make_images(source, normalized, target_image_dist, predistribute, no_copy_data, scale_value)

Creates row and column images of a matrix.

Arguments

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

input matrix

type(dbcsr_2d_array_type), intent(out) :: normalized

image array of the normalized matrix

type(dbcsr_imagedistribution_obj), intent(in) :: target_image_dist

normalize to this image distribution

character(len=1), intent(in), optional :: predistribute

predistribute data for multiplication

logical, intent(in), optional :: no_copy_data

try to not merge data at the end

type(dbcsr_scalar_type), intent(in), optional :: scale_value

scale with this value


Source Code

   SUBROUTINE dbcsr_make_images(source, normalized, target_image_dist, &
                                predistribute, no_copy_data, scale_value)
      !! Creates row and column images of a matrix.

      TYPE(dbcsr_type), INTENT(IN)                       :: source
         !! input matrix
      TYPE(dbcsr_2d_array_type), INTENT(OUT)             :: normalized
         !! image array of the normalized matrix
      TYPE(dbcsr_imagedistribution_obj), INTENT(IN)      :: target_image_dist
         !! normalize to this image distribution
      CHARACTER, INTENT(IN), OPTIONAL                    :: predistribute
         !! predistribute data for multiplication
      LOGICAL, INTENT(IN), OPTIONAL                      :: no_copy_data
         !! try to not merge data at the end
      TYPE(dbcsr_scalar_type), INTENT(IN), OPTIONAL      :: scale_value
         !! scale with this value

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

      IF (dbcsr_cfg%use_mpi_rma%val) &
         DBCSR_ABORT("RMA algo not supported here!")
      IF (.NOT. dbcsr_valid_index(source)) &
         DBCSR_ABORT("Matrix not initialized.")
      CALL make_images(source, normalized, &
                       target_image_dist, desymmetrize=dbcsr_has_symmetry(source), &
                       predistribute=predistribute, &
                       no_copy_data=no_copy_data, &
                       scale_value=scale_value)
      normalized%image_dist = target_image_dist
      CALL dbcsr_image_dist_hold(normalized%image_dist)
   END SUBROUTINE dbcsr_make_images