ddx 0.6.0
Libary for domain-decomposition methods for polarizable continuum models
|
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... | |
Operators shared among ddX methods.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 \).
[in] | ddx_data | |
[in] | x | |
[out] | y | |
[in,out] | ddx_error | ddX ddx_error |
Definition at line 587 of file ddx_operators.f90.
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 \).
[in] | ddx_data | |
[in] | x | |
[out] | y | |
[in,out] | ddx_error | ddX ddx_error |
Definition at line 618 of file ddx_operators.f90.
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.
[in,out] | ddx_error | ddX ddx_error |
Definition at line 637 of file ddx_operators.f90.
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.
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.
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.
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.
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.
[in,out] | ddx_error | ddX ddx_error |
Definition at line 820 of file ddx_operators.f90.
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.
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|.
[in] | ddx_data | : dd Data |
[in] | x | : Input array |
[out] | y | : Linear system solution at current iteration |
[in,out] | ddx_error | ddX ddx_error |
Definition at line 887 of file ddx_operators.f90.
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.
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.