banded_matrix_t Derived Type

type, public :: banded_matrix_t

type to represent a complex banded matrix


Contents


Components

TypeVisibilityAttributesNameInitial
integer, public :: m

number of rows

integer, public :: n

number of columns

integer, public :: kl

number of subdiagonals

integer, public :: ku

number of superdiagonals

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

array containing the 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 $(ku + 1 + i - j, j)$ (with $ku$ the number of superdiagonals).

    Arguments

    TypeIntentOptionalAttributesName
    class(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 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(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(banded_matrix_t), intent(in) :: this

    type instance

    Return Value integer

procedure, public :: get_total_nb_nonzero_elements

  • private pure function get_total_nb_nonzero_elements(this)

    Returns the total number of nonzero elements inside the banded matrix.

    Arguments

    TypeIntentOptionalAttributesName
    class(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 banded matrix is compatibe with another banded matrix. This implies that the following attributes should be equal: - dimensions of the original matrices - number of superdiagonals and subdiagonals - dimensions of the banded matrices themselves Returns .true. if these three criteria are satisfied, .false. otherwise.

    Arguments

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

    type instance

    type(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(banded_matrix_t), intent(inout) :: this

    type instance