solver3d_CERFACS_t Derived Type

type, public, extends(solver3d_t) :: solver3d_CERFACS_t

Iterative 3D solver based on CERFACS library


Finalization Procedures

final :: destructor_CERFACS


Type-Bound Procedures

procedure, public :: create => create_CERFACS

  • interface

    public module subroutine create_CERFACS(self, comm, krylov_method, ndim_loc, resmax, matvec, precondl, precondr, maxiter, nrestart, dbgout)

    Initialisation of 3d solver

    Arguments

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

    CERFACS solver

    integer, intent(in) :: comm

    MPI communicator

    character(len=*), intent(in) :: krylov_method

    Krylov method to be used, available options are: - RGMRES

    integer, intent(in) :: ndim_loc

    Local dimension (on rank) of matrix

    real(kind=FP), intent(in) :: resmax

    Maximum allowed tolerance of solution x on normalised residual

    procedure(matvec_interface) :: matvec

    Routine performing matrix vector multiplication

    procedure(precond_interface), optional :: precondl

    Routine performing left preconditioning

    procedure(precond_interface), optional :: precondr

    Routine performing right preconditioning

    integer, intent(in), optional :: maxiter

    TODO

    integer, intent(in), optional :: nrestart

    TODO

    integer, intent(in), optional :: dbgout

    Debug output level

procedure, public :: solve => solve_CERFACS

  • interface

    public module subroutine solve_CERFACS(self, comm, rhs, sol, res, info, res_true)

    Solves 3d problem

    Arguments

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

    CERFACS solver

    integer, intent(in) :: comm

    TODO

    real(kind=FP), intent(in), dimension(self%ndim_loc) :: rhs

    Right hand side

    real(kind=FP), intent(inout), dimension(self%ndim_loc) :: sol

    Solution on output, on input initial guess

    real(kind=FP), intent(out) :: res

    Residuum of preconditioned system

    integer, intent(out) :: info

    On succesful solve (info>0) the number of iterations

    real(kind=FP), intent(out), optional :: res_true

    Residuum of unpreconditioned system