checks if symmetries of two matrices are compatible for copying \brief data from matrix_a(source) to matrix_b(target)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character, | intent(in) | :: | matrix_type_a | |||
character, | intent(in) | :: | matrix_type_b |
LOGICAL FUNCTION symmetry_compatible(matrix_type_a, matrix_type_b)
!! checks if symmetries of two matrices are compatible for copying
!! \brief data from matrix_a(source) to matrix_b(target)
CHARACTER, INTENT(IN) :: matrix_type_a, matrix_type_b
symmetry_compatible = .FALSE.
SELECT CASE (matrix_type_a)
CASE (dbcsr_type_no_symmetry)
SELECT CASE (matrix_type_b)
CASE (dbcsr_type_no_symmetry)
symmetry_compatible = .TRUE.
END SELECT
CASE (dbcsr_type_symmetric, dbcsr_type_hermitian)
SELECT CASE (matrix_type_b)
CASE (dbcsr_type_symmetric, dbcsr_type_hermitian)
symmetry_compatible = .TRUE.
END SELECT
CASE (dbcsr_type_antisymmetric, dbcsr_type_antihermitian)
SELECT CASE (matrix_type_b)
CASE (dbcsr_type_antisymmetric, dbcsr_type_antihermitian)
symmetry_compatible = .TRUE.
END SELECT
CASE DEFAULT
DBCSR_ABORT("Invalid matrix type.")
END SELECT
END FUNCTION symmetry_compatible