DirectMethod Derived Type

type, public :: DirectMethod


Inherits

type~~directmethod~~InheritsGraph type~directmethod DirectMethod type~directmethodrequirements DirectMethodRequirements type~directmethod->type~directmethodrequirements requirements type~methodqr MethodQR type~directmethod->type~methodqr qr_method type~methodtypedirect MethodTypeDirect type~directmethod->type~methodtypedirect method_type

Inherited by

type~~directmethod~~InheritedByGraph type~directmethod DirectMethod type~linalg linalg type~linalg->type~directmethod direct

Type-Bound Procedures

procedure, public :: set_method

  • private subroutine set_method(this, method, set_pivot_partial, set_pivot_total)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectMethod), intent(inout) :: this
    type(MethodTypeDirect), intent(in) :: method
    logical, optional :: set_pivot_partial
    logical, optional :: set_pivot_total

procedure, public :: set_qr_method

  • private subroutine set_qr_method(this, qr_method)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectMethod), intent(inout) :: this
    type(MethodQR), intent(in) :: qr_method

procedure, public :: solve => DirectMethod_solve

  • private function DirectMethod_solve(this, A, b) result(x)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectMethod), intent(in) :: this
    real(kind=dp), intent(in), DIMENSION(:,:) :: A
    real(kind=dp), intent(in), DIMENSION(:) :: b

    Return Value real(kind=dp), DIMENSION(SIZE(A, 1))

procedure, public :: test_matrix

  • private subroutine test_matrix(this, A, strict_mode)

    Arguments

    Type IntentOptional Attributes Name
    class(DirectMethod), intent(inout) :: this
    real(kind=dp), intent(in), DIMENSION(:,:) :: A
    logical, intent(in), optional :: strict_mode

Source Code

    TYPE :: DirectMethod
        PRIVATE
        TYPE(MethodTypeDirect) :: method_type = METHOD_DIRECT_NONE
        TYPE(MethodQR) :: qr_method = QR_GRAM_SCHMIDT
        LOGICAL :: use_partial_pivot = .FALSE.
        LOGICAL :: use_total_pivot = .FALSE.
        TYPE(DirectMethodRequirements) :: requirements
        PROCEDURE(solve_interface_Direct), PASS(this), POINTER :: solve_method => NULL()

        CONTAINS

        PROCEDURE :: set_method => set_method
        PROCEDURE :: set_qr_method => set_qr_method
        PROCEDURE :: solve => DirectMethod_solve
        PROCEDURE :: test_matrix => test_matrix

    END TYPE DirectMethod