LinearSolver_ Derived Type

type, public :: LinearSolver_


Components

Type Visibility Attributes Name Initial
real(kind=real64), public, allocatable :: a(:,:)
real(kind=real64), public, allocatable :: b(:)
real(kind=real64), public, allocatable :: x(:)
real(kind=real64), public, allocatable :: a_e(:,:,:)
real(kind=real64), public, allocatable :: b_e(:,:)
real(kind=real64), public, allocatable :: x_e(:,:)
real(kind=real64), public, allocatable :: val(:)
integer(kind=int32), public, allocatable :: index_I(:)
integer(kind=int32), public, allocatable :: index_J(:)
integer(kind=int32), public, allocatable :: row_domain_id(:)
integer(kind=int32), public, allocatable :: column_domain_id(:)
real(kind=real64), public, allocatable :: CRS_val(:)
integer(kind=int64), public, allocatable :: CRS_index_I(:)
integer(kind=int32), public, allocatable :: CRS_index_J(:)
integer(kind=int32), public, allocatable :: CRS_row_domain_id(:)
integer(kind=int32), public, allocatable :: CRS_column_domain_id(:)
integer(kind=int32), public, allocatable :: b_Index_J(:)
integer(kind=int32), public, allocatable :: b_Domain_ID(:)
logical, public, allocatable :: Locked(:)
integer(kind=int32), public, allocatable :: NumberOfNode(:)
integer(kind=int32), public :: DOF = 1
logical, public :: debug = .false.
integer(kind=int32), public, allocatable :: connectivity(:,:)
integer(kind=int32), public :: itrmax = 1000000
integer(kind=int32), public :: currentID = 1
integer(kind=int32), public :: b_currentID = 1
real(kind=real64), public :: er0 = dble(1.0e-10)
logical, public :: ReadyForFix = .false.

Type-Bound Procedures

procedure, public :: init => initLinearSolver

  • public subroutine initLinearSolver(obj, NumberOfNode, DOF)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    integer(kind=int32), intent(in), optional :: NumberOfNode(:)
    integer(kind=int32), intent(in), optional :: DOF

procedure, public :: set => setLinearSolver

  • public recursive subroutine setLinearSolver(obj, low, column, entryvalue, init, row_DomainID, column_DomainID)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    integer(kind=int32), intent(in), optional :: low
    integer(kind=int32), intent(in), optional :: column
    real(kind=real64), intent(in), optional :: entryvalue
    logical, intent(in), optional :: init
    integer(kind=int32), intent(in), optional :: row_DomainID
    integer(kind=int32), intent(in), optional :: column_DomainID

procedure, public :: assemble => assembleLinearSolver

  • public recursive subroutine assembleLinearSolver(obj, connectivity, DOF, eMatrix, eVector, DomainIDs)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    integer(kind=int32), intent(in) :: connectivity(:)
    integer(kind=int32), intent(in) :: DOF
    real(kind=real64), intent(in), optional :: eMatrix(:,:)
    real(kind=real64), intent(in), optional :: eVector(:)
    integer(kind=int32), intent(in), optional :: DomainIDs(:)

procedure, public, pass :: importLinearSolver

  • public subroutine importLinearSolver(obj, a, x, b, a_e, b_e, x_e, connectivity, val, index_I, index_J)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    real(kind=8), intent(in), optional :: a(:,:)
    real(kind=8), intent(in), optional :: x(:)
    real(kind=8), intent(in), optional :: b(:)
    real(kind=8), intent(in), optional :: a_e(:,:,:)
    real(kind=8), intent(in), optional :: b_e(:,:)
    real(kind=8), intent(in), optional :: x_e(:,:)
    integer(kind=int32), intent(in), optional :: connectivity(:,:)
    real(kind=8), intent(in), optional :: val(:)
    integer(kind=int32), intent(in), optional :: index_I(:)
    integer(kind=int32), intent(in), optional :: index_J(:)

procedure, public, pass :: importCRS_LinearSolver

generic, public :: import => importLinearSolver, importCRS_LinearSolver

  • public subroutine importLinearSolver(obj, a, x, b, a_e, b_e, x_e, connectivity, val, index_I, index_J)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    real(kind=8), intent(in), optional :: a(:,:)
    real(kind=8), intent(in), optional :: x(:)
    real(kind=8), intent(in), optional :: b(:)
    real(kind=8), intent(in), optional :: a_e(:,:,:)
    real(kind=8), intent(in), optional :: b_e(:,:)
    real(kind=8), intent(in), optional :: x_e(:,:)
    integer(kind=int32), intent(in), optional :: connectivity(:,:)
    real(kind=8), intent(in), optional :: val(:)
    integer(kind=int32), intent(in), optional :: index_I(:)
    integer(kind=int32), intent(in), optional :: index_J(:)
  • public subroutine importCRS_LinearSolver(this, CRS)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: this
    type(CRS_), intent(in) :: CRS

procedure, public :: fix => fixLinearSolver

  • public recursive subroutine fixLinearSolver(obj, nodeid, entryvalue, entryID, DOF, row_DomainID, nodeids, entryvalues, debug)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    integer(kind=int32), intent(in) :: nodeid
    real(kind=real64), intent(in) :: entryvalue
    integer(kind=int32), intent(in), optional :: entryID
    integer(kind=int32), intent(in), optional :: DOF
    integer(kind=int32), intent(in), optional :: row_DomainID
    integer(kind=int32), intent(in), optional :: nodeids(:)
    integer(kind=int32), intent(in), optional :: entryvalues(:)
    logical, intent(in), optional :: debug

procedure, public :: solve => solveLinearSolver

  • public subroutine solveLinearSolver(obj, Solver, MPI, OpenCL, CUDAC, preconditioning, CRS)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    character(len=*), intent(in) :: Solver
    logical, intent(in), optional :: MPI
    logical, intent(in), optional :: OpenCL
    logical, intent(in), optional :: CUDAC
    logical, intent(in), optional :: preconditioning
    logical, intent(in), optional :: CRS

procedure, public :: show => showLinearSolver

procedure, public :: globalMatrix => globalMatrixLinearSolver

  • public function globalMatrixLinearSolver(obj) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(in) :: obj

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

procedure, public :: globalVector => globalVectorLinearSolver

  • public function globalVectorLinearSolver(obj) result(ret)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(in) :: obj

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

procedure, public :: convertCOOtoCRS => convertCOOtoCRSLinearSolver

procedure, public :: matmulCRS => matmulCRSLinearSolver

  • public function matmulCRSLinearSolver(obj, openMP) result(mm)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    logical, intent(in), optional :: openMP

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

procedure, public :: matmulCOO => matmulCOOLinearSolver

  • public function matmulCOOLinearSolver(obj, openMP) result(mm)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    logical, intent(in), optional :: openMP

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

procedure, public :: prepareFix => prepareFixLinearSolver

  • public subroutine prepareFixLinearSolver(obj, debug)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    logical, intent(in), optional :: debug

procedure, public :: getCOOFormat => getCOOFormatLinearSolver

procedure, public :: exportAsCOO => exportAsCOOLinearSolver

  • public subroutine exportAsCOOLinearSolver(obj, name)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    character(len=*), intent(in) :: name

procedure, public :: exportRHS => exportRHSLinearSolver

  • public subroutine exportRHSLinearSolver(obj, name)

    Arguments

    Type IntentOptional Attributes Name
    class(LinearSolver_), intent(inout) :: obj
    character(len=*), intent(in) :: name