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, intent(in), optional :: set_pivot_partial
    logical, intent(in), 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