Creates row and column images of a matrix.
Type | Intent | Optional | 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 |
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