Loading [MathJax]/extensions/tex2jax.js
DL_MG
All Classes Namespaces Functions Variables Pages
Data Types | Functions/Subroutines | Variables
dl_mg_kernels Module Reference

linear algebra operation over the grids More...

Data Types

interface  dotproduct_k
 

Functions/Subroutines

subroutine, public redblack (mg, blk, iblk, omega, f, c, w, p, ic, eq_type)
 
subroutine, public blocked_residual (mg, eq_type, p, p_type, qf, f, f_type, r, r_type, halo_exch)
 residual More...
 
subroutine, public blocked_matvec (mg, eq_type, p, p_type, ap, ap_type, halo_exch)
 computes the differential operator plus possible mas term on p More...
 
subroutine blocked_residual_gen (mg, eq_type, p, p_type, qf, f, f_type, r, r_type, halo_exch, sign_lap)
 generalised subroutine which does the work for the residual and matvec wrappers halo_exch=.false. is meant for calls inside multigrid modules where we can avoid some copies and halo exchanges (which are already done by mg_relax) More...
 
subroutine, public restrict_kernel (component, weight, mg, level, blk, iblk, eq_type)
 
subroutine, public copy_k (mg, s, vin, vin_type, vout, vout_type, si, ei, nobarrier, with_boundary)
 scaled copy, with boundary if needed More...
 
subroutine, public update_k (mg, a, a_type, s, b, b_type, sa, with_boundary, nobarrier)
 computes a = sa * a + s * b on inside grid points More...
 
real(wp) function dotproduct_k_with_mg (mg, a, atype, b, btype, scale)
 
real(wp) function dotproduct_k_no_mg (a, b, scale)
 simplification of dotproduct_k to be used with top grid assumes that the array start are provided via the array indexes a(sx:,sy:,sz:) the upper bound of the arrays is taken from bkl data structure this function must used only the inner point of the grid More...
 
subroutine blocked_lap (mg, scale, vin, vin_type, vout, vout_type, nobarrier)
 
subroutine, public blocked_diagmatvec (mg, eq_type, v, v_type, vi, vi_type)
 

Variables

integer, parameter, public residual =901
 
integer, parameter, public f_nonlinear = 902
 

Detailed Description

linear algebra operation over the grids

Lucian Anton

Function/Subroutine Documentation

◆ blocked_diagmatvec()

subroutine, public dl_mg_kernels::blocked_diagmatvec ( type(mg_t), intent(inout)  mg,
integer, intent(in)  eq_type,
real(wp), dimension(:,:,:), intent(inout)  v,
integer, intent(in)  v_type,
real(wp), dimension(:,:,:), intent(in), optional  vi,
integer, intent(in), optional  vi_type 
)

◆ blocked_lap()

subroutine dl_mg_kernels::blocked_lap ( type(mg_t), intent(inout)  mg,
real(wp), intent(in)  scale,
real(wp), dimension(:,:,:), intent(in)  vin,
integer, intent(in)  vin_type,
real(wp), dimension(:,:,:), intent(out)  vout,
integer, intent(in)  vout_type,
logical, intent(in), optional  nobarrier 
)

◆ blocked_matvec()

subroutine, public dl_mg_kernels::blocked_matvec ( type(mg_t), intent(inout)  mg,
integer, intent(in)  eq_type,
real(wp), dimension(:,:,:), intent(in)  p,
integer, intent(in)  p_type,
real(wp), dimension(:,:,:), intent(out)  ap,
integer, intent(in)  ap_type,
logical, intent(in), optional  halo_exch 
)

computes the differential operator plus possible mas term on p

◆ blocked_residual()

subroutine, public dl_mg_kernels::blocked_residual ( type(mg_t), intent(inout)  mg,
integer, intent(in)  eq_type,
real(wp), dimension(:,:,:), intent(in)  p,
integer, intent(in)  p_type,
real(wp), intent(in)  qf,
real(wp), dimension(:,:,:), intent(in)  f,
integer, intent(in)  f_type,
real(wp), dimension(:,:,:), intent(out)  r,
integer, intent(in)  r_type,
logical, intent(in), optional  halo_exch 
)

residual

◆ blocked_residual_gen()

subroutine dl_mg_kernels::blocked_residual_gen ( type(mg_t), intent(inout)  mg,
integer, intent(in)  eq_type,
real(wp), dimension(:,:,:), intent(in)  p,
integer, intent(in)  p_type,
real(wp), intent(in), optional  qf,
real(wp), dimension(:,:,:), intent(in), optional  f,
integer, intent(in), optional  f_type,
real(wp), dimension(:,:,:), intent(out)  r,
integer, intent(in)  r_type,
logical, intent(in), optional  halo_exch,
real(wp), optional  sign_lap 
)

generalised subroutine which does the work for the residual and matvec wrappers halo_exch=.false. is meant for calls inside multigrid modules where we can avoid some copies and halo exchanges (which are already done by mg_relax)

◆ copy_k()

subroutine, public dl_mg_kernels::copy_k ( type(mg_t), intent(inout)  mg,
real(wp), intent(in)  s,
real(wp), dimension(:,:,:), intent(in)  vin,
integer, intent(in)  vin_type,
real(wp), dimension(:,:,:), intent(out)  vout,
integer, intent(in)  vout_type,
integer, dimension(3), intent(in), optional  si,
integer, dimension(3), intent(in), optional  ei,
logical, intent(in), optional  nobarrier,
logical, intent(in), optional  with_boundary 
)

scaled copy, with boundary if needed

Parameters
[in]with_boundaryif true copies the boundary values in case if DBC

◆ dotproduct_k_no_mg()

real(wp) function dl_mg_kernels::dotproduct_k_no_mg ( real(wp), dimension(:,:,:), intent(in)  a,
real(wp), dimension(:,:,:), intent(in), optional  b,
real(wp), intent(in), optional  scale 
)

simplification of dotproduct_k to be used with top grid assumes that the array start are provided via the array indexes a(sx:,sy:,sz:) the upper bound of the arrays is taken from bkl data structure this function must used only the inner point of the grid

◆ dotproduct_k_with_mg()

real(wp) function dl_mg_kernels::dotproduct_k_with_mg ( type(mg_t), intent(in)  mg,
real(wp), dimension(:,:,:), intent(in)  a,
integer, intent(in)  atype,
real(wp), dimension(:,:,:), intent(in), optional  b,
integer, intent(in), optional  btype,
real(wp), intent(in), optional  scale 
)

◆ redblack()

subroutine, public dl_mg_kernels::redblack ( type(mg_t), intent(in)  mg,
type(block_list_t), intent(in)  blk,
integer, intent(in)  iblk,
real(wp), intent(in)  omega,
real(wp), dimension(mg%fsx:, mg%fsy:, mg%fsz:), intent(in)  f,
real(wp), dimension(mg%csx:, mg%csy:, mg%csz:, :), intent(in)  c,
real(wp), dimension(mg%psx:, mg%psy:, mg%psz:), intent(in)  w,
real(wp), dimension(mg%psx:, mg%psy:, mg%psz:), intent(inout)  p,
integer, intent(in)  ic,
integer, intent(in)  eq_type 
)

◆ restrict_kernel()

subroutine, public dl_mg_kernels::restrict_kernel ( character(len=1), intent(in)  component,
integer, intent(in)  weight,
type(mg_t), dimension(:), intent(inout), target  mg,
integer, intent(in)  level,
type(block_list_t), dimension(:), intent(in)  blk,
integer, intent(in)  iblk,
integer, intent(in)  eq_type 
)

◆ update_k()

subroutine, public dl_mg_kernels::update_k ( type(mg_t), intent(inout)  mg,
real(wp), dimension(:,:,:), intent(inout)  a,
integer, intent(in)  a_type,
real(wp), intent(in)  s,
real(wp), dimension(:,:,:), intent(in), optional  b,
integer, intent(in), optional  b_type,
real(wp), intent(in), optional  sa,
logical, intent(in), optional  with_boundary,
logical, intent(in), optional  nobarrier 
)

computes a = sa * a + s * b on inside grid points

Variable Documentation

◆ f_nonlinear

integer, parameter, public dl_mg_kernels::f_nonlinear = 902

◆ residual

integer, parameter, public dl_mg_kernels::residual =901