Tridiagonal Derived Type

type, public :: Tridiagonal

Base type used to define a Tridiagonal matrix of size [n, n] with diagonals given by rank-1 arrays dl (size n), dv (size n-1) and du (size n-1).


Constructor

public interface Tridiagonal

This interface provides different methods to construct a Tridiagonal matrix. Only the non-zero elements of are stored, i.e.

Syntax

  • Construct a Tridiagonal matrix filled with zeros:
   integer, parameter :: n = 100
   type(Tridiagonal) :: A

   A = Tridiagonal(n)
  • Construct a Tridiagonal matrix from rank-1 arrays:
   integer, parameter :: n
   real(dp), allocatable :: dl(:), dv(:), du(:)
   type(Tridiagonal) :: A
   integer :: i

   dl = [(i, i=1, n-1)]; dv = [(2*i, i=1, n)]; du = [(3*i, i=1, n)]
   A = Tridiagonal(dl, dv, du)
  • Construct a Tridiagonal matrix with constant diagonals:
   integer, parameter :: n
   real(dp), parameter :: a = 1.0_dp, b = 1.0_dp, c = 2.0_dp
   type(Tridiagonal) :: A

   A = Tridiagonal(a, b, c, n)

Note

Only double precision is currently supported for this matrix type.

  • private pure module function construct(dl, dv, du) result(A)

    Construct a Tridiagonal matrix from the rank-1 arrays dl, dv and du.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(in) :: dl(:)

    Tridiagonal elements of the matrix.

    real(kind=dp), intent(in) :: dv(:)

    Tridiagonal elements of the matrix.

    real(kind=dp), intent(in) :: du(:)

    Tridiagonal elements of the matrix.

    Return Value type(Tridiagonal)

    Tridiagonal matrix.

  • private pure module function construct_constant(dl, dv, du, n) result(A)

    Construct a Tridiagonal matrix with constant diagonal elements.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(in) :: dl

    Tridiagonal elements of the matrix.

    real(kind=dp), intent(in) :: dv

    Tridiagonal elements of the matrix.

    real(kind=dp), intent(in) :: du

    Tridiagonal elements of the matrix.

    integer(kind=ilp), intent(in) :: n

    Dimension of the matrix.

    Return Value type(Tridiagonal)

    Tridiagonal matrix.

  • private pure module function initialize(n) result(A)

    Construct a Tridiagonal matrix filled with zeros.

    Arguments

    Type IntentOptional Attributes Name
    integer(kind=ilp), intent(in) :: n

    Dimension of the matrix.

    Return Value type(Tridiagonal)

    Tridiagonal matrix.