get mapping info
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(nd_to_2d_mapping), | intent(in) | :: | map |
index mapping data. |
||
integer, | intent(out), | optional | :: | ndim_nd |
number of dimensions number of dimensions that map to first 2d index number of dimensions that map to first 2d index |
|
integer, | intent(out), | optional | :: | ndim1_2d |
number of dimensions number of dimensions that map to first 2d index number of dimensions that map to first 2d index |
|
integer, | intent(out), | optional | :: | ndim2_2d |
number of dimensions number of dimensions that map to first 2d index number of dimensions that map to first 2d index |
|
integer(kind=int_8), | intent(out), | optional, | DIMENSION(2) | :: | dims_2d_i8 | |
integer, | intent(out), | optional, | DIMENSION(2) | :: | dims_2d |
2d dimensions |
integer, | intent(out), | optional, | DIMENSION(ndims_mapping(map)) | :: | dims_nd |
nd dimensions |
integer, | intent(out), | optional, | DIMENSION(ndims_mapping_row(map)) | :: | dims1_2d |
dimensions that map to first 2d index |
integer, | intent(out), | optional, | DIMENSION(ndims_mapping_column(map)) | :: | dims2_2d |
dimensions that map to second 2d index |
integer, | intent(out), | optional, | DIMENSION(ndims_mapping_row(map)) | :: | map1_2d |
indices that map to first 2d index |
integer, | intent(out), | optional, | DIMENSION(ndims_mapping_column(map)) | :: | map2_2d |
indices that map to second 2d index |
integer, | intent(out), | optional, | DIMENSION(ndims_mapping(map)) | :: | map_nd |
inverse of [map1_2d, map2_2d] |
integer, | intent(out), | optional | :: | base |
base index |
|
logical, | intent(out), | optional | :: | col_major |
is index in column major order |
PURE SUBROUTINE dbcsr_t_get_mapping_info(map, ndim_nd, ndim1_2d, ndim2_2d, dims_2d_i8, dims_2d, dims_nd, dims1_2d, dims2_2d, &
map1_2d, map2_2d, map_nd, base, col_major)
!! get mapping info
TYPE(nd_to_2d_mapping), INTENT(IN) :: map
!! index mapping data.
INTEGER, INTENT(OUT), OPTIONAL :: ndim_nd, ndim1_2d, ndim2_2d
!! number of dimensions
!! number of dimensions that map to first 2d index
!! number of dimensions that map to first 2d index
INTEGER(KIND=int_8), DIMENSION(2), INTENT(OUT), OPTIONAL :: dims_2d_i8
INTEGER, DIMENSION(2), INTENT(OUT), OPTIONAL :: dims_2d
!! 2d dimensions
INTEGER, DIMENSION(ndims_mapping(map)), &
INTENT(OUT), OPTIONAL :: dims_nd
!! nd dimensions
INTEGER, DIMENSION(ndims_mapping_row(map)), INTENT(OUT), &
OPTIONAL :: dims1_2d
!! dimensions that map to first 2d index
INTEGER, DIMENSION(ndims_mapping_column(map)), INTENT(OUT), &
OPTIONAL :: dims2_2d
!! dimensions that map to second 2d index
INTEGER, DIMENSION(ndims_mapping_row(map)), INTENT(OUT), &
OPTIONAL :: map1_2d
!! indices that map to first 2d index
INTEGER, DIMENSION(ndims_mapping_column(map)), INTENT(OUT), &
OPTIONAL :: map2_2d
!! indices that map to second 2d index
INTEGER, DIMENSION(ndims_mapping(map)), &
INTENT(OUT), OPTIONAL :: map_nd
!! inverse of [map1_2d, map2_2d]
INTEGER, INTENT(OUT), OPTIONAL :: base
!! base index
LOGICAL, INTENT(OUT), OPTIONAL :: col_major
!! is index in column major order
IF (PRESENT(ndim_nd)) ndim_nd = map%ndim_nd
IF (PRESENT(ndim1_2d)) ndim1_2d = map%ndim1_2d
IF (PRESENT(ndim2_2d)) ndim2_2d = map%ndim2_2d
IF (PRESENT(dims_2d_i8)) dims_2d_i8(:) = map%dims_2d(:)
IF (PRESENT(dims_2d)) dims_2d(:) = INT(map%dims_2d(:))
IF (PRESENT(dims_nd)) THEN
dims_nd(:) = map%dims_nd(:)
END IF
IF (PRESENT(dims1_2d)) THEN
dims1_2d(:) = map%dims1_2d
END IF
IF (PRESENT(dims2_2d)) THEN
dims2_2d(:) = map%dims2_2d
END IF
IF (PRESENT(map1_2d)) THEN
map1_2d(:) = map%map1_2d
END IF
IF (PRESENT(map2_2d)) THEN
map2_2d(:) = map%map2_2d
END IF
IF (PRESENT(map_nd)) THEN
map_nd(:) = map%map_nd(:)
END IF
IF (PRESENT(base)) THEN
base = map%base
END IF
IF (PRESENT(col_major)) THEN
col_major = map%col_major
END IF
END SUBROUTINE dbcsr_t_get_mapping_info