SymTridiagonal Derived Type

type, public :: SymTridiagonal

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


Constructor

public interface SymTridiagonal

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

Syntax

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

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

   dv = [(i, i=1, n)]; ev = [(2*i, i=1, n)]
   A = Tridiagonal(dv, ev)
  • Construct a SymTridiagonal matrix with constant diagonals:
   integer, parameter :: n
   real(dp), parameter :: d = 1.0_dp, e = 2.0_dp
   type(SymTridiagonal) :: A

   A = SymTridiagonal(d, e, n)

Note

Only double precision is currently supported for this matrix type.

Note

If is known to be symmetric positive definite, it can be constructed as A = SymTridiagonal(dv, ev, ifposdef=.true.):w

  • private pure module function construct(dv, ev, isposdef) result(A)

    Construct a SymTridiagonal matrix from the rank-1 arrays dv and ev.

    Arguments

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

    SymTridiagonal elements of the matrix.

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

    SymTridiagonal elements of the matrix.

    logical(kind=lk), intent(in), optional :: isposdef

    Whether A is positive-definite or not.

    Return Value type(SymTridiagonal)

    Symmetric Tridiagonal matrix.

  • private pure module function construct_constant(d, e, n, isposdef) result(A)

    Construct a SymTridiagonal matrix with constant diagonal elements.

    Arguments

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

    SymTridiagonal elements of the matrix.

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

    SymTridiagonal elements of the matrix.

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

    Dimension of the matrix.

    logical(kind=lk), intent(in), optional :: isposdef

    Whether A is positive-definite or not.

    Return Value type(SymTridiagonal)

    Symmetric Tridiagonal matrix.

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

    Construct a SymTridiagonal matrix filled with zeros.

    Arguments

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

    Dimension of the matrix.

    Return Value type(SymTridiagonal)

    Symmetric Tridiagonal matrix.