ddx 0.6.0
Libary for domain-decomposition methods for polarizable continuum models
ddx_operators Module Reference

Operators shared among ddX methods. More...

Functions/Subroutines

subroutine lx (params, constants, workspace, x, y, ddx_error)
 Single layer operator matvec. More...
 
subroutine lstarx (params, constants, workspace, x, y, ddx_error)
 Adjoint single layer operator matvec. More...
 
subroutine ldm1x (params, constants, workspace, x, y, ddx_error)
 Diagonal preconditioning for Lx operator. More...
 
subroutine dx (params, constants, workspace, x, y, ddx_error)
 Double layer operator matvec without diagonal blocks. More...
 
subroutine dx_dense (params, constants, workspace, do_diag, x, y, ddx_error)
 Baseline implementation of double layer operator. More...
 
subroutine dx_fmm (params, constants, workspace, do_diag, x, y, ddx_error)
 FMM-accelerated implementation of double layer operator. More...
 
subroutine dstarx (params, constants, workspace, x, y, ddx_error)
 Adjoint double layer operator matvec. More...
 
subroutine dstarx_dense (params, constants, workspace, do_diag, x, y, ddx_error)
 Baseline implementation of adjoint double layer operator. More...
 
subroutine dstarx_fmm (params, constants, workspace, do_diag, x, y, ddx_error)
 FMM-accelerated implementation of adjoint double layer operator. More...
 
subroutine repsx (params, constants, workspace, x, y, ddx_error)
 Apply \( R_\varepsilon \) operator to spherical harmonics. More...
 
subroutine repsstarx (params, constants, workspace, x, y, ddx_error)
 Apply \( R_\varepsilon^* \) operator to spherical harmonics. More...
 
subroutine rinfx (params, constants, workspace, x, y, ddx_error)
 Apply \( R_\infty \) operator to spherical harmonics. More...
 
subroutine rstarinfx (params, constants, workspace, x, y, ddx_error)
 Apply \( R_\infty^* \) operator to spherical harmonics. More...
 
subroutine prec_repsx (params, constants, workspace, x, y, ddx_error)
 Apply preconditioner for ddPCM primal linear system. More...
 
subroutine prec_repsstarx (params, constants, workspace, x, y, ddx_error)
 Apply preconditioner for ddPCM adjoint linear system. More...
 
subroutine bstarx (params, constants, workspace, x, y, ddx_error)
 Adjoint HSP matrix vector product. More...
 
subroutine bx (params, constants, workspace, x, y, ddx_error)
 Primal HSP matrix vector product. More...
 
subroutine tstarx (params, constants, workspace, x, y, ddx_error)
 Adjoint ddLPB matrix-vector product. More...
 
subroutine bx_prec (params, constants, workspace, x, y, ddx_error)
 Apply the preconditioner to the primal HSP linear system. More...
 
subroutine prec_tstarx (params, constants, workspace, x, y, ddx_error)
 Apply the preconditioner to the ddLPB adjoint linear system. More...
 
subroutine prec_tx (params, constants, workspace, x, y, ddx_error)
 Apply the preconditioner to the primal ddLPB linear system |Yr| = |A^-1 0 |*|Xr| |Ye| |0 B^-1 | |Xe|. More...
 
subroutine cstarx (params, constants, workspace, x, y, ddx_error)
 ddLPB adjoint matrix-vector product More...
 
subroutine cx (params, constants, workspace, x, y, ddx_error)
 ddLPB matrix-vector product More...
 

Detailed Description

Operators shared among ddX methods.

Function/Subroutine Documentation

◆ lx()

subroutine ddx_operators::lx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Single layer operator matvec.

Definition at line 25 of file ddx_operators.f90.

◆ lstarx()

subroutine ddx_operators::lstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Adjoint single layer operator matvec.

Definition at line 88 of file ddx_operators.f90.

◆ ldm1x()

subroutine ddx_operators::ldm1x ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Diagonal preconditioning for Lx operator.

Applies inverse diagonal (block) of the L matrix

Definition at line 154 of file ddx_operators.f90.

◆ dx()

subroutine ddx_operators::dx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Double layer operator matvec without diagonal blocks.

Definition at line 185 of file ddx_operators.f90.

◆ dx_dense()

subroutine ddx_operators::dx_dense ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
integer, intent(in)  do_diag,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Baseline implementation of double layer operator.

Definition at line 209 of file ddx_operators.f90.

◆ dx_fmm()

subroutine ddx_operators::dx_fmm ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
integer, intent(in)  do_diag,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

FMM-accelerated implementation of double layer operator.

Definition at line 291 of file ddx_operators.f90.

◆ dstarx()

subroutine ddx_operators::dstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Adjoint double layer operator matvec.

Definition at line 357 of file ddx_operators.f90.

◆ dstarx_dense()

subroutine ddx_operators::dstarx_dense ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
integer, intent(in)  do_diag,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Baseline implementation of adjoint double layer operator.

Definition at line 382 of file ddx_operators.f90.

◆ dstarx_fmm()

subroutine ddx_operators::dstarx_fmm ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
integer, intent(in)  do_diag,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

FMM-accelerated implementation of adjoint double layer operator.

Definition at line 459 of file ddx_operators.f90.

◆ repsx()

subroutine ddx_operators::repsx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply \( R_\varepsilon \) operator to spherical harmonics.

Compute \( y = R_\varepsilon x = (2\pi(\varepsilon + 1) / (\varepsilon - 1) - D) x \).

Definition at line 527 of file ddx_operators.f90.

◆ repsstarx()

subroutine ddx_operators::repsstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply \( R_\varepsilon^* \) operator to spherical harmonics.

Compute \( y = R^*_\varepsilon x = (2\pi(\varepsilon + 1) / (\varepsilon - 1) - D) x \).

Definition at line 555 of file ddx_operators.f90.

◆ rinfx()

subroutine ddx_operators::rinfx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply \( R_\infty \) operator to spherical harmonics.

Compute \( y = R_\infty x = (2\pi - D) x \).

Parameters
[in]ddx_data
[in]x
[out]y
[in,out]ddx_errorddX ddx_error

Definition at line 587 of file ddx_operators.f90.

◆ rstarinfx()

subroutine ddx_operators::rstarinfx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply \( R_\infty^* \) operator to spherical harmonics.

Compute \( y = R_\infty^* x = (2\pi - D^*) x \).

Parameters
[in]ddx_data
[in]x
[out]y
[in,out]ddx_errorddX ddx_error

Definition at line 618 of file ddx_operators.f90.

◆ prec_repsx()

subroutine ddx_operators::prec_repsx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply preconditioner for ddPCM primal linear system.

Parameters
[in,out]ddx_errorddX ddx_error

Definition at line 637 of file ddx_operators.f90.

◆ prec_repsstarx()

subroutine ddx_operators::prec_repsstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply preconditioner for ddPCM adjoint linear system.

Definition at line 665 of file ddx_operators.f90.

◆ bstarx()

subroutine ddx_operators::bstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Adjoint HSP matrix vector product.

Definition at line 694 of file ddx_operators.f90.

◆ bx()

subroutine ddx_operators::bx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Primal HSP matrix vector product.

Definition at line 746 of file ddx_operators.f90.

◆ tstarx()

subroutine ddx_operators::tstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Adjoint ddLPB matrix-vector product.

Definition at line 786 of file ddx_operators.f90.

◆ bx_prec()

subroutine ddx_operators::bx_prec ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply the preconditioner to the primal HSP linear system.

Parameters
[in,out]ddx_errorddX ddx_error

Definition at line 820 of file ddx_operators.f90.

◆ prec_tstarx()

subroutine ddx_operators::prec_tstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(inout)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply the preconditioner to the ddLPB adjoint linear system.

Definition at line 837 of file ddx_operators.f90.

◆ prec_tx()

subroutine ddx_operators::prec_tx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(inout)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

Apply the preconditioner to the primal ddLPB linear system |Yr| = |A^-1 0 |*|Xr| |Ye| |0 B^-1 | |Xe|.

Parameters
[in]ddx_data: dd Data
[in]x: Input array
[out]y: Linear system solution at current iteration
[in,out]ddx_errorddX ddx_error

Definition at line 887 of file ddx_operators.f90.

◆ cstarx()

subroutine ddx_operators::cstarx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

ddLPB adjoint matrix-vector product

Definition at line 934 of file ddx_operators.f90.

◆ cx()

subroutine ddx_operators::cx ( type(ddx_params_type), intent(in)  params,
type(ddx_constants_type), intent(in)  constants,
type(ddx_workspace_type), intent(inout)  workspace,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(in)  x,
real(dp), dimension(constants % nbasis, params % nsph, 2), intent(out)  y,
type(ddx_error_type), intent(inout)  ddx_error 
)

ddLPB matrix-vector product

Definition at line 1049 of file ddx_operators.f90.