solve Interface

public interface solve

This interface overloads the solve interface from stdlib_linalg for solving a linear system where is a SymTridiagonal matrix. It also enables to solve a linear system with multiple right-hand sides.

Syntax

   x = solve(A, b [, refine])

Arguments

  • A : Matrix of SymTridiagonal type. It is an intent(in) argument.

  • b : Rank-1 or rank-2 array defining the right-hand side(s). It is an intent(in) argument.

  • refine (optional) : Logical switch to enable solution refinement.

  • x : Solution of the linear system. It has the same type and shape as b.


Functions

private module function solve_multi_rhs(A, b, refine) result(x)

Solve the linear system where is of type SymTridiagonal and B a standard rank-2 array. The solution matrix X has the same dimensions and kind as B.

Arguments

Type IntentOptional Attributes Name
type(SymTridiagonal), intent(in) :: A

Coefficient matrix.

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

Right-hand side vectors.

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

Whether iterative refinement of the solution is used or not.

Return Value real(kind=dp), allocatable, (:,:)

Solution vectors.

private module function solve_single_rhs(A, b, refine) result(x)

Solve the linear system where is of type SymTridiagonal and b a standard rank-1 array. The solution vector x has the same dimension and kind as b.

Arguments

Type IntentOptional Attributes Name
type(SymTridiagonal), intent(in) :: A

Coefficient matrix.

real(kind=dp), intent(in), target :: b(:)

Right-hand side vector.

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

Whether iterative refinement of the solution is used or not.

Return Value real(kind=dp), allocatable, target, (:)

Solution vector.