sym_tridiagonal Interface

public interface sym_tridiagonal

(Specifications) This interface provides different methods to construct a symmetric tridiagonal matrix. Only the non-zero elements of are stored, i.e.

Syntax

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

   du = [(i, i=1, n-1)]
   dv = [(2*i, i=1, n)]
   A = sym_tridiagonal(du, dv)
  • Construct a real symmetric tridiagonal matrix with constant diagonals:
   integer, parameter :: n
   real(dp), parameter :: a = 1.0_dp, b = 1.0_dp
   type(sym_tridiagonal_rdp_type) :: A

   A = sym_tridiagonal(a, b, n)

Functions

private module function initialize_constant_sym_tridiagonal_impure_cdp(du, dv, n, err) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(in) :: du

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_constant_sym_tridiagonal_impure_csp(du, dv, n, err) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

Type IntentOptional Attributes Name
complex(kind=sp), intent(in) :: du

Symmetric tridiagonal matrix elements.

complex(kind=sp), intent(in) :: dv

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_constant_sym_tridiagonal_impure_dp(du, dv, n, err) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

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

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_constant_sym_tridiagonal_impure_sp(du, dv, n, err) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: du

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_constant_sym_tridiagonal_pure_cdp(du, dv, n) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(in) :: du

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

Return Value type(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_constant_sym_tridiagonal_pure_csp(du, dv, n) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

Type IntentOptional Attributes Name
complex(kind=sp), intent(in) :: du

Symmetric tridiagonal matrix elements.

complex(kind=sp), intent(in) :: dv

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

Return Value type(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_constant_sym_tridiagonal_pure_dp(du, dv, n) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

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

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

Return Value type(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_constant_sym_tridiagonal_pure_sp(du, dv, n) result(A)

Construct a symmetric tridiagonal matrix with scalar elements.

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: du

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

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

Matrix dimension.

Return Value type(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_sym_tridiagonal_impure_cdp(du, dv, err) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(in) :: du(:)

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_sym_tridiagonal_impure_csp(du, dv, err) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

Type IntentOptional Attributes Name
complex(kind=sp), intent(in) :: du(:)

Symmetric tridiagonal matrix elements.

complex(kind=sp), intent(in) :: dv(:)

Symmetric tridiagonal matrix elements.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_sym_tridiagonal_impure_dp(du, dv, err) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

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

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

private module function initialize_sym_tridiagonal_impure_sp(du, dv, err) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: du(:)

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

type(linalg_state_type), intent(out) :: err

Error Handling.

Return Value type(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_sym_tridiagonal_pure_cdp(du, dv) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(in) :: du(:)

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

Return Value type(sym_tridiagonal_cdp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_sym_tridiagonal_pure_csp(du, dv) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

Type IntentOptional Attributes Name
complex(kind=sp), intent(in) :: du(:)

Symmetric tridiagonal matrix elements.

complex(kind=sp), intent(in) :: dv(:)

Symmetric tridiagonal matrix elements.

Return Value type(sym_tridiagonal_csp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_sym_tridiagonal_pure_dp(du, dv) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

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

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

Return Value type(sym_tridiagonal_dp_type)

Corresponding symmetric tridiagonal matrix.

private pure module function initialize_sym_tridiagonal_pure_sp(du, dv) result(A)

Construct a symmetric tridiagonal matrix from rank-1 arrays du and dv.

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: du(:)

Symmetric tridiagonal matrix elements.

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

Symmetric tridiagonal matrix elements.

Return Value type(sym_tridiagonal_sp_type)

Corresponding symmetric tridiagonal matrix.