helmholtz_operator_m Module

Routines related with Helmholtz operator


Uses

  • module~~helmholtz_operator_m~~UsesGraph module~helmholtz_operator_m helmholtz_operator_m module~boundaries_perp_m boundaries_perp_m module~helmholtz_operator_m->module~boundaries_perp_m module~csrmat_m csrmat_m module~helmholtz_operator_m->module~csrmat_m module~descriptors_m descriptors_m module~helmholtz_operator_m->module~descriptors_m module~error_handling_m error_handling_m module~helmholtz_operator_m->module~error_handling_m module~list_operations_m list_operations_m module~helmholtz_operator_m->module~list_operations_m module~mesh_cart_m mesh_cart_m module~helmholtz_operator_m->module~mesh_cart_m module~precision_m precision_m module~helmholtz_operator_m->module~precision_m module~screen_io_m screen_io_m module~helmholtz_operator_m->module~screen_io_m module~status_codes_m status_codes_m module~helmholtz_operator_m->module~status_codes_m module~boundaries_perp_m->module~descriptors_m module~boundaries_perp_m->module~error_handling_m module~boundaries_perp_m->module~mesh_cart_m module~boundaries_perp_m->module~precision_m module~boundaries_perp_m->module~screen_io_m module~boundaries_perp_m->module~status_codes_m module~csrmat_m->module~error_handling_m module~csrmat_m->module~list_operations_m module~csrmat_m->module~precision_m module~csrmat_m->module~screen_io_m module~csrmat_m->module~status_codes_m iso_c_binding iso_c_binding module~csrmat_m->iso_c_binding netcdf netcdf module~csrmat_m->netcdf module~descriptors_m->module~screen_io_m module~error_handling_m->module~precision_m module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~comm_handling_m comm_handling_m module~error_handling_m->module~comm_handling_m mpi mpi module~error_handling_m->mpi module~error_handling_m->netcdf module~list_operations_m->module~precision_m module~list_operations_m->module~screen_io_m module~mesh_cart_m->module~descriptors_m module~mesh_cart_m->module~error_handling_m module~mesh_cart_m->module~precision_m module~mesh_cart_m->module~status_codes_m module~mesh_cart_m->iso_c_binding module~mesh_cart_m->module~comm_handling_m module~equilibrium_m equilibrium_m module~mesh_cart_m->module~equilibrium_m module~slab_equilibrium_m slab_equilibrium_m module~mesh_cart_m->module~slab_equilibrium_m module~mesh_cart_m->netcdf module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env module~precision_m->mpi module~precision_m->netcdf module~screen_io_m->module~precision_m module~screen_io_m->iso_fortran_env module~screen_io_m->netcdf module~comm_handling_m->mpi module~equilibrium_m->module~precision_m module~slab_equilibrium_m->module~descriptors_m module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~screen_io_m module~slab_equilibrium_m->module~equilibrium_m module~params_equi_slab_m params_equi_slab_m module~slab_equilibrium_m->module~params_equi_slab_m module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~precision_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m module~params_equi_slab_m->iso_fortran_env

Used by

  • module~~helmholtz_operator_m~~UsedByGraph module~helmholtz_operator_m helmholtz_operator_m module~helmholtz_netcdfio_m helmholtz_netcdfio_m module~helmholtz_netcdfio_m->module~helmholtz_operator_m module~helmholtz_solver_direct_s helmholtz_solver_direct_s module~helmholtz_solver_direct_s->module~helmholtz_operator_m module~multigrid_solver_m multigrid_solver_m module~multigrid_solver_m->module~helmholtz_operator_m module~multigrid_solver_s multigrid_solver_s module~multigrid_solver_s->module~multigrid_solver_m program~benchmark_helmholtz_solvers benchmark_helmholtz_solvers program~benchmark_helmholtz_solvers->module~helmholtz_netcdfio_m

Functions

public pure function helmholtz_single_inner(mesh, u, ind, co, xiv, lambdav) result(res)

Computes helmholtz operator for single inner grid point

Arguments

Type IntentOptional Attributes Name
type(mesh_cart_t), intent(in) :: mesh

Mesh

real(kind=FP), intent(in), dimension(mesh%n_points) :: u

Variable

integer, intent(in) :: ind

Index where helmholtz operator should be computed MUST be index of an inner grid pointt (not checked for performance reasons)

real(kind=FP), intent(in), optional, dimension(mesh%n_points) :: co

Coefficient

real(kind=FP), intent(in), optional :: xiv

Coefficient at mesh point

real(kind=FP), intent(in), optional :: lambdav

Coefficient at mesh point

Return Value real(kind=FP)

result

public function helmholtz_single_boundary(mesh, u, ind, bnd_descr) result(res)

Computes helmholtz operator for single boundary point

Arguments

Type IntentOptional Attributes Name
type(mesh_cart_t), intent(in) :: mesh

Mesh

real(kind=FP), intent(in), dimension(mesh%n_points) :: u

Variable

integer, intent(in) :: ind

Index where helmholtz operator should be computed MUST be index of a boundary point (not checked for performance reasons)

integer, intent(in) :: bnd_descr

Descriptor for boundary condition

Return Value real(kind=FP)

result

public pure function helmholtz_single_ghost(mesh, u, ind) result(res)

Computes helmholtz operator for single boundary point

Arguments

Type IntentOptional Attributes Name
type(mesh_cart_t), intent(in) :: mesh

Mesh

real(kind=FP), intent(in), dimension(mesh%n_points) :: u

Variable

integer, intent(in) :: ind

Index where helmholtz operator should be computed MUST be index of a ghost point (not checked for performance reasons)

Return Value real(kind=FP)

result


Subroutines

public subroutine build_helmholtz_csr(mesh, hcsr, hdiag_inv, co, xi, lambda, bnd_descrs)

Builds Helmholtz matrix

Arguments

Type IntentOptional Attributes Name
type(mesh_cart_t), intent(in) :: mesh

Mesh

type(csrmat_t), intent(inout) :: hcsr

Helmholtz matrix. If hcsr%i is already allocated on input, the matrix is assumed to have the provided non-zero structure with all fields allocated, otherwise structure is allocated and created from scratch.

real(kind=FP), intent(out), optional, dimension(mesh%get_n_points()) :: hdiag_inv

Inverse of diagonal of Helmholtz matrix

real(kind=FP), intent(in), optional, dimension(mesh%get_n_points()) :: co

Coefficient within Helmholtz operator

real(kind=FP), intent(in), optional, dimension(mesh%get_n_points_inner()) :: xi

Coefficient within Helmholtz operator

real(kind=FP), intent(in), optional, dimension(mesh%get_n_points_inner()) :: lambda

Coefficient within Helmholtz operator

integer, intent(in), optional, dimension(mesh%get_n_points_boundary()) :: bnd_descrs

Descriptors_m for type of boundary conditions