helmholtz_2d Program

Uses

  • program~~helmholtz_2d~~UsesGraph program~helmholtz_2d helmholtz_2d module~analytical_sol analytical_sol program~helmholtz_2d->module~analytical_sol module~comm_variable comm_variable program~helmholtz_2d->module~comm_variable module~define_grid define_grid program~helmholtz_2d->module~define_grid module~define_rhs define_rhs program~helmholtz_2d->module~define_rhs module~idrs_module idrs_module program~helmholtz_2d->module~idrs_module module~mpi_setup mpi_setup program~helmholtz_2d->module~mpi_setup module~read_setup read_setup program~helmholtz_2d->module~read_setup module~solvers solvers program~helmholtz_2d->module~solvers module~user_module user_module program~helmholtz_2d->module~user_module module~wavenumber wavenumber program~helmholtz_2d->module~wavenumber module~write_data write_data program~helmholtz_2d->module~write_data mpi mpi program~helmholtz_2d->mpi module~analytical_sol->module~comm_variable module~analytical_sol->mpi module~comm_variable->mpi module~define_grid->module~comm_variable module~define_grid->mpi module~define_rhs->module~comm_variable module~define_rhs->mpi module~idrs_module->module~comm_variable module~idrs_module->module~mpi_setup module~idrs_module->module~read_setup module~idrs_module->module~user_module module~idrs_module->mpi module~mpi_setup->module~comm_variable module~mpi_setup->mpi module~read_setup->module~comm_variable module~read_setup->mpi module~solvers->module~comm_variable module~solvers->module~read_setup module~solvers->mpi module~cslp_solver CSLP_Solver module~solvers->module~cslp_solver module~deflaion_setup deflaion_setup module~solvers->module~deflaion_setup module~operators operators module~solvers->module~operators module~user_module->module~comm_variable module~user_module->mpi module~user_module->module~cslp_solver module~user_module->module~deflaion_setup module~user_module->module~operators module~wavenumber->module~comm_variable module~wavenumber->module~mpi_setup module~wavenumber->mpi module~write_data->module~comm_variable module~write_data->mpi module~cslp_solver->module~comm_variable module~cslp_solver->module~mpi_setup module~cslp_solver->module~wavenumber module~cslp_solver->mpi module~cslp_solver->module~operators module~smoother smoother module~cslp_solver->module~smoother module~deflaion_setup->module~comm_variable module~deflaion_setup->module~mpi_setup module~deflaion_setup->module~wavenumber module~deflaion_setup->mpi module~deflaion_setup->module~cslp_solver module~deflaion_setup->module~operators module~operators->module~comm_variable module~operators->module~mpi_setup module~operators->module~wavenumber module~operators->mpi module~define_bc define_BC module~operators->module~define_bc module~define_bc->module~comm_variable module~define_bc->module~wavenumber module~smoother->module~comm_variable module~smoother->module~mpi_setup module~smoother->module~operators module~smoother->module~define_bc

Parallel proconditioned Krylov slover for 2D Helmholtz equation


Calls

program~~helmholtz_2d~~CallsGraph program~helmholtz_2d helmholtz_2d interface~idrs IDRS program~helmholtz_2d->interface~idrs mpi_allreduce mpi_allreduce program~helmholtz_2d->mpi_allreduce mpi_barrier mpi_barrier program~helmholtz_2d->mpi_barrier mpi_comm_rank mpi_comm_rank program~helmholtz_2d->mpi_comm_rank mpi_comm_size mpi_comm_size program~helmholtz_2d->mpi_comm_size mpi_finalize mpi_finalize program~helmholtz_2d->mpi_finalize mpi_init mpi_init program~helmholtz_2d->mpi_init mpi_reduce mpi_reduce program~helmholtz_2d->mpi_reduce mpi_wtime mpi_wtime program~helmholtz_2d->mpi_wtime proc~const_k Const_K program~helmholtz_2d->proc~const_k proc~define_marmousi_grid define_marmousi_grid program~helmholtz_2d->proc~define_marmousi_grid proc~define_uniform_grid define_uniform_grid program~helmholtz_2d->proc~define_uniform_grid proc~define_wedge_grid define_wedge_grid program~helmholtz_2d->proc~define_wedge_grid proc~exact_2dcloseoff exact_2DCloseOff program~helmholtz_2d->proc~exact_2dcloseoff proc~exact_2dpointsource_1stsomer exact_2DPointSource_1stSomer program~helmholtz_2d->proc~exact_2dpointsource_1stsomer proc~exact_2dpointsource_dirichlet exact_2DPointSource_Dirichlet program~helmholtz_2d->proc~exact_2dpointsource_dirichlet proc~full_pgcr full_pgcr program~helmholtz_2d->proc~full_pgcr proc~full_pgmres full_pgmres program~helmholtz_2d->proc~full_pgmres proc~fullgmres fullgmres program~helmholtz_2d->proc~fullgmres proc~log2 LOG2 program~helmholtz_2d->proc~log2 proc~part2d part2d program~helmholtz_2d->proc~part2d proc~pfgmres pfgmres program~helmholtz_2d->proc~pfgmres proc~pre_fullgmres Pre_fullgmres program~helmholtz_2d->proc~pre_fullgmres proc~pre_restartgmres Pre_restartgmres program~helmholtz_2d->proc~pre_restartgmres proc~read_parameter read_parameter program~helmholtz_2d->proc~read_parameter proc~read_wavenumber_k_marmousi read_wavenumber_k_marmousi program~helmholtz_2d->proc~read_wavenumber_k_marmousi proc~restartgmres restartgmres program~helmholtz_2d->proc~restartgmres proc~rhs_2dcloseoff RHS_2DCloseOff program~helmholtz_2d->proc~rhs_2dcloseoff proc~rhs_2dwedge RHS_2DWedge program~helmholtz_2d->proc~rhs_2dwedge proc~rhs_centersource2d RHS_CenterSource2D program~helmholtz_2d->proc~rhs_centersource2d proc~rhs_marmousi RHS_marmousi program~helmholtz_2d->proc~rhs_marmousi proc~wavenumber_k_destroy wavenumber_k_destroy program~helmholtz_2d->proc~wavenumber_k_destroy proc~wavenumber_k_wedge wavenumber_k_Wedge program~helmholtz_2d->proc~wavenumber_k_wedge proc~write_data_whole write_data_whole program~helmholtz_2d->proc~write_data_whole proc~mg_checkreal_xy2d mg_checkreal_xy2d proc~const_k->proc~mg_checkreal_xy2d mpi_recv mpi_recv proc~define_marmousi_grid->mpi_recv mpi_send mpi_send proc~define_marmousi_grid->mpi_send proc~define_uniform_grid->mpi_recv proc~define_uniform_grid->mpi_send proc~define_wedge_grid->mpi_recv proc~define_wedge_grid->mpi_send dsin dsin proc~exact_2dcloseoff->dsin proc~dot_prod dot_prod proc~full_pgcr->proc~dot_prod proc~helmholtz2d_bc Helmholtz2d_BC proc~full_pgcr->proc~helmholtz2d_bc proc~norm norm proc~full_pgcr->proc~norm proc~precond_x Precond_x proc~full_pgcr->proc~precond_x proc~apply_givens_rotation apply_givens_rotation proc~full_pgmres->proc~apply_givens_rotation proc~back_substitute back_substitute proc~full_pgmres->proc~back_substitute proc~full_pgmres->proc~dot_prod proc~full_pgmres->proc~helmholtz2d_bc proc~full_pgmres->proc~norm proc~full_pgmres->proc~precond_x proc~fullgmres->proc~apply_givens_rotation proc~arnoldi arnoldi proc~fullgmres->proc~arnoldi proc~fullgmres->proc~back_substitute proc~fullgmres->proc~helmholtz2d_bc proc~fullgmres->proc~norm proc~part2d->mpi_barrier proc~my_mod1 my_mod1 proc~part2d->proc~my_mod1 proc~pfgmres->proc~apply_givens_rotation proc~pfgmres->proc~back_substitute proc~pfgmres->proc~dot_prod proc~pfgmres->proc~helmholtz2d_bc proc~pfgmres->proc~norm proc~pfgmres->proc~precond_x proc~pre_fullgmres->proc~apply_givens_rotation proc~pre_fullgmres->proc~back_substitute proc~pre_fullgmres->proc~helmholtz2d_bc proc~pre_fullgmres->proc~norm proc~prearnoldi Prearnoldi proc~pre_fullgmres->proc~prearnoldi proc~pre_fullgmres->proc~precond_x proc~pre_restartgmres->proc~apply_givens_rotation proc~pre_restartgmres->proc~back_substitute proc~pre_restartgmres->proc~helmholtz2d_bc proc~pre_restartgmres->proc~norm proc~pre_restartgmres->proc~prearnoldi proc~pre_restartgmres->proc~precond_x proc~read_parameter->mpi_barrier mpi_bcast mpi_bcast proc~read_parameter->mpi_bcast proc~read_wavenumber_k_marmousi->mpi_recv proc~read_wavenumber_k_marmousi->mpi_send proc~read_wavenumber_k_marmousi->proc~mg_checkreal_xy2d proc~restartgmres->proc~apply_givens_rotation proc~restartgmres->proc~arnoldi proc~restartgmres->proc~back_substitute proc~restartgmres->proc~helmholtz2d_bc proc~restartgmres->proc~norm proc~wavenumber_k_wedge->proc~mg_checkreal_xy2d proc~write_data_whole->mpi_recv proc~write_data_whole->mpi_send cdsqrt cdsqrt proc~apply_givens_rotation->cdsqrt proc~arnoldi->proc~dot_prod proc~arnoldi->proc~helmholtz2d_bc proc~arnoldi->proc~norm proc~dot_prod->mpi_allreduce proc~check_xy2d check_xy2d proc~helmholtz2d_bc->proc~check_xy2d proc~helmholtz2d_stencils Helmholtz2d_stencils proc~helmholtz2d_bc->proc~helmholtz2d_stencils proc~if_bcs if_BCs proc~helmholtz2d_bc->proc~if_bcs 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~norm->mpi_allreduce proc~prearnoldi->proc~dot_prod proc~prearnoldi->proc~helmholtz2d_bc proc~prearnoldi->proc~norm proc~prearnoldi->proc~precond_x proc~def_px DEF_Px proc~precond_x->proc~def_px proc~mgcslp_invmx MGCSLP_invMx proc~precond_x->proc~mgcslp_invmx proc~check_x2d check_x2d proc~check_xy2d->proc~check_x2d proc~check_y2d check_y2d proc~check_xy2d->proc~check_y2d proc~default_gridpara default_gridpara proc~def_px->proc~default_gridpara proc~multileveladp_px MultiLevelADP_Px proc~def_px->proc~multileveladp_px proc~p_adef1x P_ADEF1x proc~def_px->proc~p_adef1x proc~p_defx P_DEFx proc~def_px->proc~p_defx proc~p_tlkmx P_TLKMx proc~def_px->proc~p_tlkmx proc~dirichlet Dirichlet proc~if_bcs->proc~dirichlet proc~first_order_neum first_order_Neum proc~if_bcs->proc~first_order_neum mpi_sendrecv mpi_sendrecv proc~mg_checkreal_x2d->mpi_sendrecv proc~mg_checkreal_y2d->mpi_sendrecv 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~check_x2d->mpi_sendrecv proc~check_y2d->mpi_sendrecv 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~multileveladp_px->proc~log2 proc~helm_ax_nth Helm_Ax_nth proc~multileveladp_px->proc~helm_ax_nth proc~krylovcslp_invmhx KrylovCSLP_invMHx proc~multileveladp_px->proc~krylovcslp_invmhx 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~p_adef1x->proc~mgcslp_invmx proc~helm_ahx Helm_Ahx proc~p_adef1x->proc~helm_ahx proc~qx Qx proc~p_adef1x->proc~qx proc~p_defx->proc~helm_ahx proc~p_defx->proc~qx proc~p_tlkmx->proc~mgcslp_invmx proc~p_tlkmx->proc~helm_ahx proc~p_tlkmx->proc~qx 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_op_bc->proc~if_bcs proc~cslp2d_stencils cslp2d_stencils proc~cslp_op_bc->proc~cslp2d_stencils proc~mg_check_xy2d mg_check_xy2d proc~cslp_op_bc->proc~mg_check_xy2d proc~damp_jacobi_smoother->proc~if_bcs proc~damp_jacobi_smoother->proc~cslp2d_stencils proc~damp_jacobi_smoother->proc~mg_check_xy2d proc~helmholtz2d_bc_mg Helmholtz2d_BC_mg proc~helm_ahx->proc~helmholtz2d_bc_mg proc~helm_ax_nth->proc~log2 proc~helm_ax_nth->proc~helmholtz2d_stencils 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~helm_ax_nth->proc~mg_check_xy2d 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 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~mgcslp_invmhx->proc~f_cycle proc~mgcslp_invmhx->proc~grid_destroy proc~mgcslp_invmhx->proc~v_cycle proc~mgcslp_invmhx->proc~gridsys_define proc~multilevel_invey->proc~log2 proc~def_prefgmres DEF_prefgmres proc~multilevel_invey->proc~def_prefgmres proc~prolongation_en_correct->proc~mg_check_xy2d proc~qx->proc~ztx proc~qx->proc~zx proc~invey invEy proc~qx->proc~invey proc~restriction->proc~mg_checkreal_xy2d proc~restriction->proc~mg_check_xy2d proc~ztx->proc~mg_check_xy2d proc~zx->proc~mg_check_xy2d proc~def_prefgmres->cdsqrt proc~def_prefgmres->proc~multileveladp_px proc~def_prefgmres->proc~helm_ax_nth proc~def_prefgmres->proc~krylovcslp_invmhx proc~def_prefgmres->proc~mg_dot_prod proc~def_prefgmres->proc~mg_norm proc~coarsegridpara CoarseGridpara proc~def_prefgmres->proc~coarsegridpara proc~helm_ax_nth_stencils->proc~log2 proc~helmholtz2d_bc_mg->proc~helmholtz2d_stencils proc~helmholtz2d_bc_mg->proc~if_bcs proc~helmholtz2d_bc_mg->proc~mg_check_xy2d proc~def_bicgstab DEF_bicgstab proc~invey->proc~def_bicgstab proc~def_fullgmres DEF_fullgmres proc~invey->proc~def_fullgmres 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_dot_prod->mpi_allreduce proc~mg_norm->mpi_allreduce proc~red_glk_cslp_gmres->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~cslp_mx_nth CSLP_Mx_nth proc~red_glk_cslp_gmres->proc~cslp_mx_nth proc~cslp_mx_nth->proc~log2 proc~cslp_mx_nth->proc~cslp2d_stencils proc~cslp_mx_nth->proc~gridbase_extrpltghostbcs proc~cslp_mx_nth->proc~mg_check_xy2d proc~cslp_mx_nth_stencils CSLP_Mx_nth_stencils proc~cslp_mx_nth->proc~cslp_mx_nth_stencils proc~def_bicgstab->proc~mgcslp_invmhx proc~def_bicgstab->proc~mg_dot_prod proc~def_bicgstab->proc~mg_norm proc~def_bicgstab->proc~coarsegridpara proc~ex Ex proc~def_bicgstab->proc~ex proc~def_fullgmres->proc~mgcslp_invmhx proc~def_fullgmres->proc~mg_norm proc~def_fullgmres->proc~coarsegridpara proc~def_apply_givens_rotation def_apply_givens_rotation proc~def_fullgmres->proc~def_apply_givens_rotation proc~def_arnoldi def_arnoldi proc~def_fullgmres->proc~def_arnoldi proc~def_back_substitute def_back_substitute proc~def_fullgmres->proc~def_back_substitute proc~def_fullgmres->proc~ex proc~mg_check_x2d->mpi_sendrecv proc~mg_check_y2d->mpi_sendrecv proc~cslp_mx_nth_stencils->proc~log2 proc~def_apply_givens_rotation->cdsqrt proc~def_arnoldi->proc~mgcslp_invmhx proc~def_arnoldi->proc~mg_dot_prod proc~def_arnoldi->proc~mg_norm proc~def_arnoldi->proc~ex proc~ex->proc~helm_ahx proc~ex->proc~mgcslp_invmhx proc~ex->proc~ztx proc~ex->proc~zx proc~ex->proc~coarsegridpara proc~helm_a2hx Helm_A2hx proc~ex->proc~helm_a2hx proc~ztzx ZTZx proc~ex->proc~ztzx proc~helm_a2hx->proc~helmholtz2d_bc_mg proc~helmholtz2d_o4cmpct Helmholtz2d_O4cmpct proc~helm_a2hx->proc~helmholtz2d_o4cmpct proc~helmholtz2d_red_glk Helmholtz2d_ReD_Glk proc~helm_a2hx->proc~helmholtz2d_red_glk proc~ztzx->proc~ztx proc~ztzx->proc~zx proc~helmholtz2d_o4cmpct->proc~mg_check_xy2d proc~helmholtz2d_red_glk->proc~helmholtz2d_stencils proc~helmholtz2d_red_glk->proc~mg_check_xy2d proc~extrpltghostbcs ExtrpltGhostBCs proc~helmholtz2d_red_glk->proc~extrpltghostbcs proc~red_glk_stencils ReD_Glk_stencils proc~helmholtz2d_red_glk->proc~red_glk_stencils

Variables

Type Attributes Name Initial
type(matrix) :: A

An empty matrix type for calling idrs solver

type(preconditioner) :: M1

a preconditioner type for calling idrs solver. Since the IDR(s) solver part is ported, its input and output parameters are somewhat different from other solvers.

complex(kind=realdp), allocatable, dimension(:,:) :: u

arrays for the solution

complex(kind=realdp), allocatable, dimension(:,:) :: u_ex

arrays for exact solution

complex(kind=realdp), allocatable, dimension(:,:) :: u_err

arrays for the error of solution

complex(kind=realdp), allocatable, dimension(:,:) :: b

arrays for the right-hand side

real(kind=realdp), allocatable, dimension(:,:) :: xx

coordinates

real(kind=realdp), allocatable, dimension(:,:) :: yy

coordinates

real(kind=realdp), allocatable :: resvec(:)

Residual vector for idrs solver

real(kind=realdp) :: time_start

time_start: variable for runtime measurement start

real(kind=realdp) :: time_end

time_end: variable for runtime measurement end

real(kind=realdp) :: u_err_max

u_err_max: local max|u_err|=max|u-u_ex|

real(kind=realdp) :: Aerror

Aerror: global max|u_err|=max|u-u_ex|

real(kind=realdp) :: Rerror

Rerror: relative residual ||b-Au||/||b||

real(kind=realdp) :: max_k_local

max_k_local: local maximum wavenumber

real(kind=realdp) :: max_k_global

max_k_global: global maximum wavenumber

integer :: iter

number of iterations and loop indexs

integer :: k

number of iterations and loop indexs

integer :: i

number of iterations and loop indexs

integer :: j

number of iterations and loop indexs

integer :: flag

an output flag for idrs solvers