DEF_prefgmres Subroutine

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 IntentOptional 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

Calls

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

Called by

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