| Procedure | Location | Procedure Type | Description |
|---|---|---|---|
| apply_givens_rotation | solvers | Subroutine | APPLY GIVENS ROTATION |
| arnoldi | solvers | Subroutine | ARNOLDI precess |
| back_substitute | solvers | Subroutine | Apply BACK SUBSTITUTION |
| check_x2d | mpi_setup | Subroutine | Exchanges data in the x direction, ONLY for the default (finest) grid system |
| check_xy2d | mpi_setup | Subroutine | Exchanges data first in the x direction and then y direction, ONLY for the default (finest) grid system |
| check_y2d | mpi_setup | Subroutine | Exchanges data in the y direction, ONLY for the default (finest) grid system no2 |
| cmatvec | user_module | Function | This is complex matrix-vector multiplication |
| coarsegrid_create | CSLP_Solver | Subroutine | This is a routine that define a coarse grid system mg_coarse from a fine grid system mg_fine |
| CoarseGridpara | deflaion_setup | Function | A procedure to create a Gridpara type of the coarse grid system from a given a two-grid system |
| Const_K | wavenumber | Subroutine | constant wavenumber, determine by input variable k0 data communication with neighbouring subdomains |
| cprecon | user_module | Function | 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 |
| cslp2d_stencils | operators | Subroutine | Computational stencils for the CSLP operator |
| CSLP_Mx_nth | operators | Function | ReD-Glk CSLP operator for coarse levels |
| CSLP_Mx_nth_stencils | operators | Subroutine | ReD-Glk computational stencils of the CSLP operator for differnet coarse-grid level |
| CSLP_OP_BC | operators | Subroutine | matrix-free CSLP operator, for the specified gird systems |
| Damp_Jacobi_smoother | smoother | Subroutine | This is a routine to apply damped Jacobbi smoother on coarse grid systems. |
| def_apply_givens_rotation | deflaion_setup | Subroutine | Apply givens rotation of DEF_fullgmres |
| def_arnoldi | deflaion_setup | Subroutine | Arnoldi prosess of DEF_fullgmres Attention: h_(i,j)=(w,v_i)=v^H*w, for complex value, so the code should be dot_product(v_i,w) |
| def_back_substitute | deflaion_setup | Subroutine | Perform back substitute in of DEF_fullgmres |
| DEF_bicgstab | deflaion_setup | Subroutine | A (CSLP preconditioned) Bi-CGSTAB solver for the coarse-grid problem in two-level deflation method |
| DEF_fullgmres | deflaion_setup | Subroutine | A (CSLP preconditioned) GMRES solver for the coarse-grid problem in two-level deflation method Be careful!!, after the whole iteration without achieving eps, then the value of j will be "def_mg_miter+1".So we need a k. |
| DEF_prefgmres | deflaion_setup | Subroutine | 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. |
| DEF_Px | deflaion_setup | Function | Identifier for different deflation methods, ONLY for an input array from the default (finest) grid system A basic deflation method |
| default_gridpara | deflaion_setup | Subroutine | This is a rountine to define the default finest Gridpara from the common grid parameters of the whole project |
| define_marmousi_grid | define_grid | Subroutine | Marmousi problem |
| define_uniform_grid | define_grid | Subroutine | A square computational domain with a unit side length |
| define_wedge_grid | define_grid | Subroutine | Wedge model problem |
| Dirichlet | define_BC | Subroutine | Dirichlet, ap=h^2, which will devided by h^2 in the rountine of the operator When use this Dirichlet, you have to be carefull with the RHS respectively |
| dot_prod | operators | Function | Compute the do product of two complex variables, ONLY for the default grid system. |
| Ex | deflaion_setup | Function | Coarse-grid operation for two-level deflation Straight-forward Galerkin coarsening approach |
| exact_2DCloseOff | analytical_sol | Subroutine | The analytical solution for 2D close-off problem |
| exact_2DPointSource_1stSomer | analytical_sol | Subroutine | The analytical solution for constant wavenumber problem with central source point with Sommerfeld boundary condition |
| exact_2DPointSource_Dirichlet | analytical_sol | Subroutine | The analytical solution for constant wavenumber problem with central source point with Dirichlet boundary condition |
| ExtrpltGhostBCs | deflaion_setup | Subroutine | Extrapolate a layer of ghost grid points based on the boundary conditions The zero padding of wavenumber is ok in practical |
| F_cycle | CSLP_Solver | Subroutine | This is a classic F-cycle multigrid |
| finestgrid_define | CSLP_Solver | Subroutine | This is a routine that define the finest grid system from the default (finest) grid parameters |
| first_order_Neum | define_BC | Subroutine | Sommerfeld boundary conditions. Eliminate the ghost grid points by second-order discretization |
| FROB_NORM | idrs_module | Interface | |
| FromFine2Coarse | deflaion_setup | Function | A procedure to create a two-grid system from a given fine Gridpara type The wavenumber of the coarse level is restricted from the fine level |
| full_pgcr | solvers | Subroutine | Right preconditioned GCR |
| full_pgmres | solvers | Subroutine | Full GMRES with right precondition |
| fullgmres | solvers | Subroutine | Full GMRES without precondition |
| grid_destroy | CSLP_Solver | Subroutine | This is a routine that deallocate the arrays of a grid system |
| GridBase_ExtrpltGhostBCs | operators | Subroutine | Extrapolation of a layer of ghost grid points |
| gridsys_define | CSLP_Solver | Subroutine | This is a routine that define a GridSystem type from the grid parameters of a data type Gridpara One can find the differnece of GridSystem and Gridpara |
| Helm_A2hx | deflaion_setup | Function | A function that performs the Helmholtz operator on the coarse grid of the two-grid system, by different methods ReD-O2 ReD-Glk ReD-cmpO4 |
| Helm_Ahx | deflaion_setup | Function | A function that performs the Helmholtz operator on the fine grid of the two-grid system, by ReD-O2 method |
| Helm_Ax_nth | operators | Function | ReD-Glk Helmholtz operator for coarse levels |
| Helm_Ax_nth_stencils | operators | Subroutine | ReD-Glk computational stencils of the Helmholtz operator for differnet coarse-grid level Default 2nd-ordr stencils |
| Helmholtz2d_BC | operators | Subroutine | matrix-free Helmholtz operator, ONLY for the default gird system First deal with the boundary grid points and then the internals |
| Helmholtz2d_BC_mg | operators | Subroutine | matrix-free Helmholtz operator, for the specified coarse gird systems |
| Helmholtz2d_O4cmpct | deflaion_setup | Subroutine | A coarse-grid Helmholtz operator for two-level deflation, descretized by a classic compact fourth-order FD scheme |
| Helmholtz2d_ReD_Glk | deflaion_setup | Subroutine | A coarse-grid Helmholtz operator for two-level deflation, descretized by ReD-GLK FD scheme fill in a layer of ghost grid points by boundary conditions |
| Helmholtz2d_stencils | operators | Subroutine | Computational stencils for the Helmholtz operator, second-order central FD scheme |
| IDRS | idrs_module | Interface | |
| if_BCs | define_BC | Subroutine | Determine which BC, for specified coarse grid system |
| invEy | deflaion_setup | Function | Invert the coarse-grid operator for two-level delfation method, by using GMRES or Bi-CGSTAB determined by the specified maximum number of iterations on the coarse grid |
| KrylovCSLP_invMHx | CSLP_Solver | Function | Krylov-based CSLP, starts from the a specified grid sysyem Choose Bi-CGSATB or GMRES by uncomment or comment |
| LOG2 | operators | Function | Compute log2(x) |
| mg_apply_givens_rotation | CSLP_Solver | Subroutine | This is routine to perform apply_givens_rotation |
| mg_arnoldi | CSLP_Solver | Subroutine | Arnoldi precess w=A*v_i |
| mg_back_substitute | CSLP_Solver | Subroutine | This is routine that performs back substitute |
| mg_bicgstab | CSLP_Solver | Subroutine | This is a rountine to solve the (specified) coarsest-grid CSLP system approximately by using Bi-CGSTAB The CSLP is define by ReD-O2 scheme |
| mg_check_x2d | mpi_setup | Subroutine | Exchanges data in the x direction, for a specified-size grid system no2 no2 |
| mg_check_xy2d | mpi_setup | Subroutine | Exchanges data first in the x direction and then y direction, for a specified-size grid system |
| mg_check_y2d | mpi_setup | Subroutine | Exchanges data in the y direction, for a specified-size grid system no2 no2 |
| mg_checkreal_x2d | mpi_setup | Subroutine | Exchanges REAL data in the x direction, for a specified-size grid system no2 no2 |
| mg_checkreal_xy2d | mpi_setup | Subroutine | Exchanges REAL data first in the x direction and then y direction, for a specified-size grid system |
| mg_checkreal_y2d | mpi_setup | Subroutine | Exchanges REAL data in the y direction, for a specified-size grid system no2 no2 |
| mg_dot_prod | operators | Function | Compute the dot product of two complex variables, for a coarse-grid system. Note that the dimension is not specified here, it means it calculate all the elements |
| mg_fullgmres | CSLP_Solver | Subroutine | This is a rountine to solve the (specified) coarsest-grid CSLP system approximately by using GMRES The CSLP is define by ReD-O2 scheme Be careful!!, after the whole iteration without achieving eps, then the value of j will be "m_iter+1".So we need a k. The default tolerance is 1E-08 |
| mg_norm | operators | Function | Compute the L2-norm of a complex variable, for a coarse-grid system. |
| MGCSLP_invMHx | CSLP_Solver | Function | Multigrid-based CSLP, starts from the a specified grid system One V-cycle Two V-cycle One F-cycle |
| MGCSLP_invMx | CSLP_Solver | Function | Multigrid-Based CSLP, ONLY starts from the default (finest) grid sysyem One V-cycle Two V-cycle One F-cycle |
| MultiLevel_invEy | deflaion_setup | Function | A recursive function to invert the coarse-level operators for multilevel delfation methods, by using preconditioned FGMRES |
| MultiLevelADP_Px | deflaion_setup | Function | Multilevel deflation preconditioning (MADP) Multigrid-based CSLP on the finest and second level Krylov-based CSLP on the finest and second level |
| my_mod1 | mpi_setup | Function | A function to calculate the modulo of two integers na and nb |
| norm | operators | Function | Compute the L2-norm of a complex variable, ONLY for the default grid system. |
| OPERATOR(*) | user_module | Interface | |
| OPERATOR(/) | user_module | Interface | |
| P_ADEF1x | deflaion_setup | Function | Adapted Deflation Preconditioning, P = M^(-1)(I-AQ)+Q, including higher-order deflation (ADP) if LAP > 1 |
| P_DEFx | deflaion_setup | Function | Deflation preconditioning, P = (I-AQ)+Q |
| P_DOT | idrs_module | Interface | |
| P_TLKMx | deflaion_setup | Function | Two-Level Krylov Method, P = [(I-M^(-1)AQ |
| part2d | mpi_setup | Subroutine | Partitions the 2D domain for parallel processing and calculates offsets and sizes for each partition the ID of partion along 2 directions -1 proc in x-direction +1 proc in x-direction if not periodic, 0 node donot send mesg to npx0-1 node if not periodic, npx0-1 node donot send mesg to 0 node |
| pfgmres | solvers | Subroutine | Flexible GMRES with right precondition |
| Pre_fullgmres | solvers | Subroutine | Full GMRES with left preconditioned |
| Pre_restartgmres | solvers | Subroutine | Preconditioned restart GMRES |
| Prearnoldi | solvers | Subroutine | Preconditioned ARNOLDI precess |
| Precond_x | solvers | Function | This is a routine to select which preconditioner is applied, Precond_x = P^(-1)x |
| prolongation_en_correct | CSLP_Solver | Subroutine | This is routine that perform bilinear interpolation and correction from coarse to fine grid system, mainly solution (u) on coarse grid --> correction (e_h) for solution (u) of fine grid Based on the relationship of the index between the fine and coarse grid |
| Px | deflaion_setup | Function | Perform y=Px in deflation definition, where P=I-AQ |
| Qx | deflaion_setup | Function | Perform y=Qx in deflation definition, where Q=ZE^(-1)Z^T |
| read_parameter | read_setup | Subroutine | read the input parameters for the solver settings Read by Rank 0 and then broadcast to the other ranks Get the input filename |
| read_wavenumber_k_marmousi | wavenumber | Subroutine | Read the velocity profile of Marmousi problem with specified grid size and calculate the wavenumber |
| Realnorm | operators | Function | Compute the L2-norm of a real variable, ONLY for the default grid system. |
| ReD_Glk_CSLP_bicgstab | CSLP_Solver | Subroutine | This is a rountine to solve a coarse grid CSLP system approximately by using Bi-CGSTAB. The CSLP operator is defined by ReD-Glk scheme. CSLP operator by ReD-Glk |
| ReD_Glk_CSLP_gmres | CSLP_Solver | Subroutine | This is a rountine to solve a coarse grid CSLP system approximately by using GMRES The CSLP operator is defined by ReD-Glk scheme CSLP operator by ReD-Glk |
| ReD_Glk_stencils | deflaion_setup | Subroutine | ReD-Glk computational stencils of the Helmholtz operator for coarse-grid level in two-deflation method |
| restartgmres | solvers | Subroutine | Restart GMRES |
| restriction | CSLP_Solver | Subroutine | This is routine that perform full-weight resctriction from fine to coarse grid system, mainly residual (res) on fine grid --> right-hand side (rhs) on coarse grid, wavenumber on fine grid --> wavenumber on the coarse grid Based on the relationship of the index between the fine and coarse grid |
| RHS_2DCloseOff | define_rhs | Subroutine | 2D close-off problem with Dirichlet boundary condition |
| RHS_2DWedge | define_rhs | Subroutine | 2D Wedge problem A point source located at (300,0) |
| RHS_CenterSource2D | define_rhs | Subroutine | 2D constant wavenumber problem with a central point source A point source located at (0.5,0.5) |
| RHS_marmousi | define_rhs | Subroutine | Marmousi problem A point source located at (6000,0) |
| rmatvec | user_module | Function | This is an empty matrix-vector multiplication for real-type input v |
| rprecon | user_module | Function | This is an empty preconditioner for real-type input v |
| TRACE_DOT | idrs_module | Interface | |
| TwoGrids | deflaion_setup | Interface | |
| V_cycle | CSLP_Solver | Subroutine | A classic multigrid V-cycle A classic Two-Cycle GMRES or Bi-CGSTAB can be chose to solve the coarse-grid problem GMRES or Bi-CGSTAB can be chose to solve the coarsest-grid problem |
| wavenumber_FWrestriction | deflaion_setup | Subroutine | This routine obtains the wavenumber of the coarse level by full-weight restriction from the fine level |
| wavenumber_k_destroy | wavenumber | Subroutine | Deallocate the wavenumber field in the end |
| wavenumber_k_Wedge | wavenumber | Subroutine | Wavenumber for Wedge model problem The top layer The bottom layer The middle layer |
| write_data_whole | write_data | Subroutine | Write the solutions |
| write_exact_data_whole | write_data | Subroutine | Write the analytical solutions |
| write_real_data_whole | write_data | Subroutine | Write the real wavenumber/variables |
| ZTx | deflaion_setup | Function | Restriction of a variable, by full-weight restriction or higher-order restriction depending on the laylers of overlapping grid points used. |
| ZTZx | deflaion_setup | Function | A routine that first perform restriction and then interpolation |
| Zx | deflaion_setup | Function | Interpolation of a variable from coarse to fine, by bilinear or higher-order interpolation depending on the laylers of overlapping grid points used. |