define_BC Module

This is a module to deal with the computational stencils for the Dirichlet of Sommerfeld boundary conditions


Uses

  • module~~define_bc~~UsesGraph module~define_bc define_BC module~comm_variable comm_variable module~define_bc->module~comm_variable module~wavenumber wavenumber module~define_bc->module~wavenumber mpi mpi module~comm_variable->mpi module~wavenumber->module~comm_variable module~mpi_setup mpi_setup module~wavenumber->module~mpi_setup module~wavenumber->mpi module~mpi_setup->module~comm_variable module~mpi_setup->mpi

Used by

  • module~~define_bc~~UsedByGraph module~define_bc define_BC module~operators operators module~operators->module~define_bc module~smoother smoother module~smoother->module~define_bc module~smoother->module~operators module~cslp_solver CSLP_Solver module~cslp_solver->module~operators module~cslp_solver->module~smoother module~deflaion_setup deflaion_setup module~deflaion_setup->module~operators module~deflaion_setup->module~cslp_solver module~solvers solvers module~solvers->module~operators module~solvers->module~cslp_solver module~solvers->module~deflaion_setup module~user_module user_module module~user_module->module~operators module~user_module->module~cslp_solver module~user_module->module~deflaion_setup module~idrs_module idrs_module module~idrs_module->module~user_module program~helmholtz_2d helmholtz_2d program~helmholtz_2d->module~solvers program~helmholtz_2d->module~user_module program~helmholtz_2d->module~idrs_module

Subroutines

public subroutine if_BCs(ap, an, as, aw, ae, i, j, ni, nj, hx_c, hy_c, kxy)

Determine which BC, for specified coarse grid system

Arguments

Type IntentOptional Attributes Name
complex(kind=realdp) :: ap
real(kind=realdp) :: an
real(kind=realdp) :: as
real(kind=realdp) :: aw
real(kind=realdp) :: ae
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: ni
integer, intent(in) :: nj
real(kind=realdp), intent(in) :: hx_c
real(kind=realdp), intent(in) :: hy_c
real(kind=realdp), intent(in) :: kxy

public subroutine Dirichlet(ap, an, as, aw, ae, i, j, ni, nj, hx_c, hy_c)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=realdp) :: ap
real(kind=realdp) :: an
real(kind=realdp) :: as
real(kind=realdp) :: aw
real(kind=realdp) :: ae
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: ni
integer, intent(in) :: nj
real(kind=realdp), intent(in) :: hx_c
real(kind=realdp), intent(in) :: hy_c

public subroutine first_order_Neum(ap, an, as, aw, ae, i, j, ni, nj, hx_c, hy_c, kxy)

Sommerfeld boundary conditions. Eliminate the ghost grid points by second-order discretization

Arguments

Type IntentOptional Attributes Name
complex(kind=realdp) :: ap
real(kind=realdp) :: an
real(kind=realdp) :: as
real(kind=realdp) :: aw
real(kind=realdp) :: ae
integer, intent(in) :: i
integer, intent(in) :: j
integer, intent(in) :: ni
integer, intent(in) :: nj
real(kind=realdp), intent(in) :: hx_c
real(kind=realdp), intent(in) :: hy_c
real(kind=realdp), intent(in) :: kxy