cprecon Function

public function cprecon(v, M1)

This is an preconditioner for complex-type input v, i.e. M1^(-1)v We can manully call different preconditioners here. Here only use multigrid-based CLSP

Arguments

Type IntentOptional Attributes Name
complex(kind=realdp), intent(in) :: v(:,:)
type(preconditioner), intent(in) :: M1

Return Value complex(kind=realdp), (size(v,1),size(v,2))


Calls

proc~~cprecon~~CallsGraph proc~cprecon cprecon proc~mgcslp_invmx MGCSLP_invMx proc~cprecon->proc~mgcslp_invmx proc~f_cycle F_cycle proc~mgcslp_invmx->proc~f_cycle proc~finestgrid_define finestgrid_define proc~mgcslp_invmx->proc~finestgrid_define proc~grid_destroy grid_destroy proc~mgcslp_invmx->proc~grid_destroy proc~v_cycle V_cycle proc~mgcslp_invmx->proc~v_cycle proc~f_cycle->proc~f_cycle proc~f_cycle->proc~grid_destroy 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 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~cslp2d_stencils cslp2d_stencils proc~cslp_op_bc->proc~cslp2d_stencils proc~if_bcs if_BCs proc~cslp_op_bc->proc~if_bcs proc~mg_check_xy2d mg_check_xy2d proc~cslp_op_bc->proc~mg_check_xy2d proc~damp_jacobi_smoother->proc~cslp2d_stencils proc~damp_jacobi_smoother->proc~if_bcs proc~damp_jacobi_smoother->proc~mg_check_xy2d proc~mg_bicgstab->proc~cslp_op_bc proc~mg_dot_prod mg_dot_prod proc~mg_bicgstab->proc~mg_dot_prod proc~mg_norm mg_norm proc~mg_bicgstab->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~mg_fullgmres->proc~mg_norm 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 cdsqrt cdsqrt proc~mg_apply_givens_rotation->cdsqrt proc~mg_arnoldi->proc~cslp_op_bc proc~mg_arnoldi->proc~mg_dot_prod proc~mg_arnoldi->proc~mg_norm 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~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 mpi_allreduce mpi_allreduce proc~mg_dot_prod->mpi_allreduce proc~mg_norm->mpi_allreduce mpi_sendrecv mpi_sendrecv proc~mg_check_x2d->mpi_sendrecv proc~mg_check_y2d->mpi_sendrecv proc~mg_checkreal_x2d->mpi_sendrecv proc~mg_checkreal_y2d->mpi_sendrecv

Called by

proc~~cprecon~~CalledByGraph proc~cprecon cprecon interface~operator(SLASH) OPERATOR(/) interface~operator(SLASH)->proc~cprecon