hermitian_banded_matrix_t Derived Type

type, public :: hermitian_banded_matrix_t

type to represent a complex Hermitian banded matrix


Contents


Components

TypeVisibilityAttributesNameInitial
integer, public :: n

number of rows/columns

character, public :: uplo

store upper ("U") or lower ("L") triangular part

integer, public :: kd

number of sub/superdiagonals

complex(kind=dp), public, allocatable:: AB(:,:)

the matrix in banded storage


Type-Bound Procedures

procedure, public :: get_element

  • private pure function get_element(this, row, col) result(element)

    Retrieves the element at position (row, col) of the original matrix. See the LAPACK documentation, element $a_{ij}$ of the original matrix is stored at position $(kd + 1 + i - j, j)$ if uplo = "U" and at position $(1 + i - j, j)$ if uplo = "L" in the banded storage.

    Arguments

    TypeIntentOptionalAttributesName
    class(hermitian_banded_matrix_t), intent(in) :: this

    type instance

    integer, intent(in) :: row

    the row index of the original position

    integer, intent(in) :: col

    the column index of the original position

    Return Value complex(kind=dp)

    the element at the original position (row, col)

procedure, public :: set_element

  • private pure subroutine set_element(this, row, col, element)

    Sets the element $a_{ij}$ of the original array into the banded structure. The row and col arguments refer to the row and column indices of the element in the original array. This routine has no effect if the location falls outside of the banded structure.

    Arguments

    TypeIntentOptionalAttributesName
    class(hermitian_banded_matrix_t), intent(inout) :: this

    type instance

    integer, intent(in) :: row

    row index of element

    integer, intent(in) :: col

    column index of element

    complex(kind=dp), intent(in) :: element

    value for the element at (row, col)

procedure, public :: get_total_nb_elements

  • private pure function get_total_nb_elements(this)

    Returns the total number of elements inside the banded matrix

    Arguments

    TypeIntentOptionalAttributesName
    class(hermitian_banded_matrix_t), intent(in) :: this

    type instance

    Return Value integer

procedure, public :: is_compatible_with

  • private pure function is_compatible_with(this, other)

    Checks if a Hermitian band matrix is compatible with another Hermitian band matrix. This implies that the following attributes should be equal: - number of rows/columns - number of sub/superdiagonals - storage of upper or lower triangular part - dimensions of the banded matrices themselves Returns .true. if all criteria are satisfied, .false. otherwise.

    Arguments

    TypeIntentOptionalAttributesName
    class(hermitian_banded_matrix_t), intent(in) :: this

    type instance

    class(hermitian_banded_matrix_t), intent(in) :: other

    other banded matrix

    Return Value logical

procedure, public :: destroy

  • private pure subroutine destroy(this)

    Destructor, deallocates the datastructure.

    Arguments

    TypeIntentOptionalAttributesName
    class(hermitian_banded_matrix_t), intent(inout) :: this

    type instance