LinearSolver_ Derived Type

type, public :: LinearSolver_


Contents


Components

TypeVisibility AttributesNameInitial
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=int32), 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-08)
logical, public :: ReadyForFix =.false.

Type-Bound Procedures

procedure, public :: init => initLinearSolver

  • public subroutine initLinearSolver(obj, NumberOfNode, DOF)

    Arguments

    Type IntentOptional AttributesName
    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 AttributesName
    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 AttributesName
    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 :: import => importLinearSolver

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

    Arguments

    Type IntentOptional AttributesName
    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 :: fix => fixLinearSolver

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

    Arguments

    Type IntentOptional AttributesName
    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
    logical, intent(in), optional :: debug

procedure, public :: solve => solveLinearSolver

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

    Arguments

    Type IntentOptional AttributesName
    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 AttributesName
    class(LinearSolver_), intent(in) :: obj

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

procedure, public :: globalVector => globalVectorLinearSolver

  • public function globalVectorLinearSolver(obj) result(ret)

    Arguments

    Type IntentOptional AttributesName
    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 AttributesName
    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 AttributesName
    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 AttributesName
    class(LinearSolver_), intent(inout) :: obj
    logical, intent(in), optional :: debug

procedure, public :: getCOOFormat => getCOOFormatLinearSolver

procedure, public :: exportAsCOO => exportAsCOOLinearSolver

procedure, public :: exportRHS => exportRHSLinearSolver

  • public subroutine exportRHSLinearSolver(obj, name)

    Arguments

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