public recursive subroutine DEF_prefgmres(y, x, f2c, maximum_iterations, level, rtol)
A recursive flexible GMRES with right deflation preconditioning
Be careful!!, after the whole iteration without achieving eps, then the value of j will be "maxit+1".So we need a k.
Attention: h_(i,j)=(w,v_i)=v^H*w, for complex value, so the code should be dot_product(v_i,w)
Arguments
Type
Intent Optional Attributes
Name
complex(kind=realdp),
intent(inout)
::
y (1-LAP:f2c%nxc+LAP,1-LAP:f2c%nyc+LAP)
complex(kind=realdp),
intent(inout)
::
x (1-LAP:f2c%nxc+LAP,1-LAP:f2c%nyc+LAP)
type(TwoGrids ),
intent(inout)
::
f2c
integer,
intent(in),
optional
::
maximum_iterations
integer,
intent(in),
optional
::
level
real(kind=realdp),
intent(in),
optional
::
rtol
proc~~def_prefgmres~~CallsGraph
proc~def_prefgmres
DEF_prefgmres
cdsqrt
cdsqrt
proc~def_prefgmres->cdsqrt
proc~coarsegridpara
CoarseGridpara
proc~def_prefgmres->proc~coarsegridpara
proc~helm_ax_nth
Helm_Ax_nth
proc~def_prefgmres->proc~helm_ax_nth
proc~krylovcslp_invmhx
KrylovCSLP_invMHx
proc~def_prefgmres->proc~krylovcslp_invmhx
proc~mg_dot_prod
mg_dot_prod
proc~def_prefgmres->proc~mg_dot_prod
proc~mg_norm
mg_norm
proc~def_prefgmres->proc~mg_norm
proc~multileveladp_px
MultiLevelADP_Px
proc~def_prefgmres->proc~multileveladp_px
proc~gridbase_extrpltghostbcs
GridBase_ExtrpltGhostBCs
proc~helm_ax_nth->proc~gridbase_extrpltghostbcs
proc~helm_ax_nth_stencils
Helm_Ax_nth_stencils
proc~helm_ax_nth->proc~helm_ax_nth_stencils
proc~helmholtz2d_stencils
Helmholtz2d_stencils
proc~helm_ax_nth->proc~helmholtz2d_stencils
proc~log2
LOG2
proc~helm_ax_nth->proc~log2
proc~mg_check_xy2d
mg_check_xy2d
proc~helm_ax_nth->proc~mg_check_xy2d
proc~grid_destroy
grid_destroy
proc~krylovcslp_invmhx->proc~grid_destroy
proc~gridsys_define
gridsys_define
proc~krylovcslp_invmhx->proc~gridsys_define
proc~red_glk_cslp_gmres
ReD_Glk_CSLP_gmres
proc~krylovcslp_invmhx->proc~red_glk_cslp_gmres
mpi_allreduce
mpi_allreduce
proc~mg_dot_prod->mpi_allreduce
proc~mg_norm->mpi_allreduce
proc~multileveladp_px->proc~helm_ax_nth
proc~multileveladp_px->proc~krylovcslp_invmhx
proc~multileveladp_px->proc~log2
proc~mgcslp_invmhx
MGCSLP_invMHx
proc~multileveladp_px->proc~mgcslp_invmhx
proc~multilevel_invey
MultiLevel_invEy
proc~multileveladp_px->proc~multilevel_invey
proc~ztx
ZTx
proc~multileveladp_px->proc~ztx
proc~zx
Zx
proc~multileveladp_px->proc~zx
proc~helm_ax_nth_stencils->proc~log2
proc~mg_check_x2d
mg_check_x2d
proc~mg_check_xy2d->proc~mg_check_x2d
proc~mg_check_y2d
mg_check_y2d
proc~mg_check_xy2d->proc~mg_check_y2d
proc~mgcslp_invmhx->proc~grid_destroy
proc~mgcslp_invmhx->proc~gridsys_define
proc~f_cycle
F_cycle
proc~mgcslp_invmhx->proc~f_cycle
proc~v_cycle
V_cycle
proc~mgcslp_invmhx->proc~v_cycle
proc~multilevel_invey->proc~def_prefgmres
proc~multilevel_invey->proc~log2
proc~red_glk_cslp_gmres->cdsqrt
proc~red_glk_cslp_gmres->proc~mg_dot_prod
proc~red_glk_cslp_gmres->proc~mg_norm
proc~red_glk_cslp_gmres->proc~log2
proc~cslp_mx_nth
CSLP_Mx_nth
proc~red_glk_cslp_gmres->proc~cslp_mx_nth
proc~ztx->proc~mg_check_xy2d
proc~zx->proc~mg_check_xy2d
proc~cslp_mx_nth->proc~gridbase_extrpltghostbcs
proc~cslp_mx_nth->proc~log2
proc~cslp_mx_nth->proc~mg_check_xy2d
proc~cslp2d_stencils
cslp2d_stencils
proc~cslp_mx_nth->proc~cslp2d_stencils
proc~cslp_mx_nth_stencils
CSLP_Mx_nth_stencils
proc~cslp_mx_nth->proc~cslp_mx_nth_stencils
proc~f_cycle->proc~grid_destroy
proc~f_cycle->proc~f_cycle
proc~f_cycle->proc~v_cycle
proc~coarsegrid_create
coarsegrid_create
proc~f_cycle->proc~coarsegrid_create
proc~cslp_op_bc
CSLP_OP_BC
proc~f_cycle->proc~cslp_op_bc
proc~damp_jacobi_smoother
Damp_Jacobi_smoother
proc~f_cycle->proc~damp_jacobi_smoother
proc~mg_bicgstab
mg_bicgstab
proc~f_cycle->proc~mg_bicgstab
proc~mg_fullgmres
mg_fullgmres
proc~f_cycle->proc~mg_fullgmres
proc~prolongation_en_correct
prolongation_en_correct
proc~f_cycle->proc~prolongation_en_correct
proc~restriction
restriction
proc~f_cycle->proc~restriction
mpi_sendrecv
mpi_sendrecv
proc~mg_check_x2d->mpi_sendrecv
proc~mg_check_y2d->mpi_sendrecv
proc~v_cycle->proc~grid_destroy
proc~v_cycle->proc~v_cycle
proc~v_cycle->proc~coarsegrid_create
proc~v_cycle->proc~cslp_op_bc
proc~v_cycle->proc~damp_jacobi_smoother
proc~v_cycle->proc~mg_bicgstab
proc~v_cycle->proc~mg_fullgmres
proc~v_cycle->proc~prolongation_en_correct
proc~v_cycle->proc~restriction
proc~cslp_mx_nth_stencils->proc~log2
proc~cslp_op_bc->proc~mg_check_xy2d
proc~cslp_op_bc->proc~cslp2d_stencils
proc~if_bcs
if_BCs
proc~cslp_op_bc->proc~if_bcs
proc~damp_jacobi_smoother->proc~mg_check_xy2d
proc~damp_jacobi_smoother->proc~cslp2d_stencils
proc~damp_jacobi_smoother->proc~if_bcs
proc~mg_bicgstab->proc~mg_dot_prod
proc~mg_bicgstab->proc~mg_norm
proc~mg_bicgstab->proc~cslp_op_bc
proc~mg_fullgmres->proc~mg_norm
proc~mg_fullgmres->proc~cslp_op_bc
proc~mg_apply_givens_rotation
mg_apply_givens_rotation
proc~mg_fullgmres->proc~mg_apply_givens_rotation
proc~mg_arnoldi
mg_arnoldi
proc~mg_fullgmres->proc~mg_arnoldi
proc~mg_back_substitute
mg_back_substitute
proc~mg_fullgmres->proc~mg_back_substitute
proc~prolongation_en_correct->proc~mg_check_xy2d
proc~restriction->proc~mg_check_xy2d
proc~mg_checkreal_xy2d
mg_checkreal_xy2d
proc~restriction->proc~mg_checkreal_xy2d
proc~dirichlet
Dirichlet
proc~if_bcs->proc~dirichlet
proc~first_order_neum
first_order_Neum
proc~if_bcs->proc~first_order_neum
proc~mg_apply_givens_rotation->cdsqrt
proc~mg_arnoldi->proc~mg_dot_prod
proc~mg_arnoldi->proc~mg_norm
proc~mg_arnoldi->proc~cslp_op_bc
proc~mg_checkreal_x2d
mg_checkreal_x2d
proc~mg_checkreal_xy2d->proc~mg_checkreal_x2d
proc~mg_checkreal_y2d
mg_checkreal_y2d
proc~mg_checkreal_xy2d->proc~mg_checkreal_y2d
proc~mg_checkreal_x2d->mpi_sendrecv
proc~mg_checkreal_y2d->mpi_sendrecv
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
proc~~def_prefgmres~~CalledByGraph
proc~def_prefgmres
DEF_prefgmres
proc~multileveladp_px
MultiLevelADP_Px
proc~def_prefgmres->proc~multileveladp_px
proc~multilevel_invey
MultiLevel_invEy
proc~multilevel_invey->proc~def_prefgmres
proc~multileveladp_px->proc~multilevel_invey
proc~def_px
DEF_Px
proc~def_px->proc~multileveladp_px
proc~precond_x
Precond_x
proc~precond_x->proc~def_px
proc~full_pgcr
full_pgcr
proc~full_pgcr->proc~precond_x
proc~full_pgmres
full_pgmres
proc~full_pgmres->proc~precond_x
proc~pfgmres
pfgmres
proc~pfgmres->proc~precond_x
proc~pre_fullgmres
Pre_fullgmres
proc~pre_fullgmres->proc~precond_x
proc~prearnoldi
Prearnoldi
proc~pre_fullgmres->proc~prearnoldi
proc~pre_restartgmres
Pre_restartgmres
proc~pre_restartgmres->proc~precond_x
proc~pre_restartgmres->proc~prearnoldi
proc~prearnoldi->proc~precond_x
program~helmholtz_2d
helmholtz_2d
program~helmholtz_2d->proc~full_pgcr
program~helmholtz_2d->proc~full_pgmres
program~helmholtz_2d->proc~pfgmres
program~helmholtz_2d->proc~pre_fullgmres
program~helmholtz_2d->proc~pre_restartgmres
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.