MKLPardisoSolver_t Derived Type

type, public, extends(GenericLinSolver_t) :: MKLPardisoSolver_t


Components

Type Visibility Attributes Name Initial
class(JacobianComputer_t), public, allocatable :: Jacobian
logical, public :: converged = .FALSE.
logical, public :: withMPI = .FALSE.
integer, public :: DimPrb
integer, public :: globalDimPrb
integer, public :: niter = 0
integer, public :: JacobianComputation = NUMERICAL_JACOBIAN
type(DGSem), public, pointer :: p_sem => null()
type(csrMat_t), public :: A
type(csrMat_t), public, pointer :: ALU
type(PETSCMatrix_t), public :: PETScA
real(kind=RP), public, DIMENSION(:), ALLOCATABLE :: x
real(kind=RP), public, DIMENSION(:), ALLOCATABLE :: b
real(kind=RP), public :: Ashift
logical, public :: AIsPrealloc
logical, public :: Variable_dt
logical, public :: AIsPetsc = .false.
integer, public :: mtype
integer, public, ALLOCATABLE :: perm(:)
integer, public, POINTER :: Pardiso_iparm(:) => NULL()
integer(kind=AddrInt), public, POINTER :: Pardiso_pt(:) => NULL()

Type-Bound Procedures

procedure, public :: SetRHSValues

  • private subroutine SetRHSValues(this, nvalues, irow, values)

    Arguments

    Type IntentOptional Attributes Name
    class(GenericLinSolver_t), intent(inout) :: this
    integer, intent(in) :: nvalues
    integer, intent(in), DIMENSION(:) :: irow
    real(kind=RP), intent(in), DIMENSION(:) :: values

procedure, public :: AssemblyRHS

  • private subroutine AssemblyRHS(this)

    Arguments

    Type IntentOptional Attributes Name
    class(GenericLinSolver_t), intent(inout) :: this

procedure, public :: ComputeANextStep

  • private function ComputeANextStep(this) result(ComputeA)

    Arguments

    Type IntentOptional Attributes Name
    class(GenericLinSolver_t), intent(in) :: this

    Return Value logical

procedure, public :: construct => ConstructMKLContext

  • private subroutine ConstructMKLContext(this, DimPrb, globalDimPrb, nEqn, controlVariables, sem, MatrixShiftFunc)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout), TARGET :: this
    integer, intent(in) :: DimPrb
    integer, intent(in) :: globalDimPrb
    integer, intent(in) :: nEqn
    type(FTValueDictionary), intent(in), optional :: controlVariables
    type(DGSem), optional, TARGET :: sem
    procedure(MatrixShift_FCN) :: MatrixShiftFunc

procedure, public :: ComputeAndFactorizeJacobian => MKL_ComputeAndFactorizeJacobian

  • private subroutine MKL_ComputeAndFactorizeJacobian(self, nEqn, nGradEqn, F_J, dt, eps, mode_in)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: self
    integer, intent(in) :: nEqn
    integer, intent(in) :: nGradEqn
    procedure(ComputeTimeDerivative_f) :: F_J
    real(kind=RP), intent(in) :: dt
    real(kind=RP), intent(in) :: eps
    integer, intent(in) :: mode_in

procedure, public :: ReFactorizeJacobian => MKL_ReFactorizeJacobian

  • private subroutine MKL_ReFactorizeJacobian(self)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: self

procedure, public :: solve

  • private subroutine solve(this, nEqn, nGradEqn, ComputeTimeDerivative, tol, maxiter, time, dt, ComputeA)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout), target :: this
    integer, intent(in) :: nEqn
    integer, intent(in) :: nGradEqn
    procedure(ComputeTimeDerivative_f) :: ComputeTimeDerivative
    real(kind=RP), optional :: tol
    integer, optional :: maxiter
    real(kind=RP), optional :: time
    real(kind=RP), optional :: dt
    logical, intent(inout), optional :: ComputeA

procedure, public :: SolveLUDirect => MKL_SolveLUDirect

  • private subroutine MKL_SolveLUDirect(self, error_out)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: self
    integer, intent(out), optional :: error_out

procedure, public :: SetRHSValue => MKL_SetRHSValue

  • private subroutine MKL_SetRHSValue(this, irow, value)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    integer, intent(in) :: irow
    real(kind=RP), intent(in) :: value

procedure, public :: SetRHS => MKL_SetRHS

  • private subroutine MKL_SetRHS(this, RHS)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    real(kind=RP), intent(in) :: RHS(this%DimPrb)

procedure, public :: GetXValue => MKL_GetXValue

  • private subroutine MKL_GetXValue(this, irow, x_i)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    integer, intent(in) :: irow
    real(kind=RP), intent(out) :: x_i

procedure, public :: GetX => MKL_GetX

  • private function MKL_GetX(this) result(x)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this

    Return Value real(kind=RP), (this%DimPrb)

procedure, public :: destroy => MKL_destroy

  • private subroutine MKL_destroy(this)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this

procedure, public :: SetOperatorDt

  • private subroutine SetOperatorDt(this, dt)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    real(kind=RP), intent(in) :: dt

procedure, public :: ReSetOperatorDt

  • private subroutine ReSetOperatorDt(this, dt)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    real(kind=RP), intent(in) :: dt

procedure, public :: ComputeJacobianMKL

  • private subroutine ComputeJacobianMKL(this, dt, time, nEqn, nGradEqn, ComputeTimeDerivative)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    real(kind=RP), intent(in) :: dt
    real(kind=RP), intent(in) :: time
    integer, intent(in) :: nEqn
    integer, intent(in) :: nGradEqn
    procedure(ComputeTimeDerivative_f) :: ComputeTimeDerivative

procedure, public :: FactorizeJacobian => MKL_FactorizeJacobian

  • private subroutine MKL_FactorizeJacobian(self)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: self

procedure, public :: SetJacobian => MKL_SetJacobian

  • private subroutine MKL_SetJacobian(this, Matrix)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    class(Matrix_t), intent(in) :: Matrix

procedure, public :: Getxnorm => MKL_GetXnorm

  • private function MKL_GetXnorm(this, TypeOfNorm) result(xnorm)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this
    character(len=*) :: TypeOfNorm

    Return Value real(kind=RP)

procedure, public :: Getrnorm

  • private function Getrnorm(this) result(rnorm)

    Arguments

    Type IntentOptional Attributes Name
    class(MKLPardisoSolver_t), intent(inout) :: this

    Return Value real(kind=RP)