|
ddx 1.0.0
Libary for domain-decomposition methods for polarizable continuum models
|
Core routines and parameters of the ddX software. More...
Data Types | |
| type | ddx_electrostatics_type |
| Container for the electrostatic properties. Since different methods require different electrostatic properties, defining this kind of general purpose container simplify the interfaces as we don't need different interfaces for different methods. More... | |
| type | ddx_state_type |
| This defined type contains the primal and adjoint RHSs, the solution of the primal and adjoint linear systems, useful intermediates for the computation of the forces, and the information about the convergence of the linear system solver (time, number of iterations, relative difference at each iteration). More... | |
| type | ddx_type |
| Main ddX type that stores all the required information. Container for the params, contants and workspace derived types. More... | |
Functions/Subroutines | |
| subroutine | allocate_model (nsph, x, y, z, rvdw, model, lmax, ngrid, force, fmm, pm, pl, se, eta, eps, kappa, matvecmem, maxiter, jacobi_ndiis, nproc, output_filename, switching, ddx_data, ddx_error) |
| Initialize ddX input with a full set of parameters. More... | |
| subroutine | deallocate_model (ddx_data, ddx_error) |
| Deallocate object with corresponding data. More... | |
| subroutine | allocate_electrostatics (params, constants, electrostatics, ddx_error) |
| Given the chosen model, find the required electrostatic properties, and allocate the arrays for them in the container. More... | |
| subroutine | deallocate_electrostatics (electrostatics, ddx_error) |
| Deallocate the electrostatic properties. More... | |
| subroutine | allocate_state (params, constants, state, ddx_error) |
| Initialize the ddx_state object. More... | |
| subroutine | deallocate_state (state, ddx_error) |
| Deallocate the ddx_state object. More... | |
| subroutine | print_spherical (iunit, label, nbasis, lmax, ncol, icol, x) |
| Print array of spherical harmonics. More... | |
| subroutine | print_nodes (iunit, label, ngrid, ncol, icol, x) |
| Print array of quadrature points. More... | |
| subroutine | print_ddvector (ddx_data, label, vector) |
| Print dd Solution vector. More... | |
| subroutine | ddintegrate (nsph, nbasis, ngrid, vwgrid, ldvwgrid, x_grid, x_lm) |
| Integrate against spherical harmonics. More... | |
| subroutine | dbasis (params, constants, x, basloc, dbsloc, vplm, vcos, vsin) |
| Compute first derivatives of spherical harmonics. More... | |
| real(dp) function | intmlp (params, constants, t, sigma, basloc) |
| TODO. More... | |
| subroutine | wghpot (ncav, phi_cav, nsph, ngrid, ui, phi_grid, g) |
| Weigh potential at cavity points by characteristic function TODO use cavity points in CSR format. More... | |
| subroutine | hsnorm (lmax, nbasis, u, unorm) |
| Compute the local Sobolev H^(-1/2)-norm on one sphere of u. More... | |
| real(dp) function | hnorm (lmax, nbasis, nsph, x) |
| Compute the global Sobolev H^(-1/2)-norm of x. More... | |
| real(dp) function | rmsnorm (lmax, nbasis, nsph, x) |
| subroutine | rmsvec (n, v, vrms, vmax) |
| compute root-mean-square and max norm More... | |
| subroutine | adjrhs (params, constants, isph, xi, vlm, work) |
| subroutine | calcv (params, constants, isph, pot, sigma, work) |
| subroutine | ddeval_grid (params, constants, alpha, x_sph, beta, x_grid) |
| Evaluate values of spherical harmonics at Lebedev grid points. More... | |
| subroutine | ddeval_grid_work (nbasis, ngrid, nsph, vgrid, ldvgrid, alpha, x_sph, beta, x_grid) |
| Evaluate values of spherical harmonics at Lebedev grid points. More... | |
| subroutine | ddintegrate_sph (params, constants, alpha, x_grid, beta, x_sph) |
| Integrate values at grid points into spherical harmonics. More... | |
| subroutine | ddintegrate_sph_work (nbasis, ngrid, nsph, vwgrid, ldvwgrid, alpha, x_grid, beta, x_sph) |
| Integrate values at grid points into spherical harmonics. More... | |
| subroutine | ddcav_to_grid (params, constants, x_cav, x_grid) |
| Unwrap values at cavity points into values at all grid points. More... | |
| subroutine | ddcav_to_grid_work (ngrid, nsph, ncav, icav_ia, icav_ja, x_cav, x_grid) |
| Unwrap values at cavity points into values at all grid points. More... | |
| subroutine | ddproject_cav (params, constants, s, xi) |
| Integrate by a characteristic function at Lebedev grid points \xi(n,i) = sum w_n U_n^i Y_l^m(s_n) [S_i]_l^m l,m. More... | |
| subroutine | tree_m2m_rotation (params, constants, node_m) |
| Transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_rotation_work (params, constants, node_m, work) |
| Transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_bessel_rotation (params, constants, node_m) |
| Transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_bessel_rotation_work (params, constants, node_m) |
| Transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_rotation_adj (params, constants, node_m) |
| Adjoint transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_rotation_adj_work (params, constants, node_m, work) |
| Adjoint transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_bessel_rotation_adj (params, constants, node_m) |
| Adjoint transfer multipole coefficients over a tree. More... | |
| subroutine | tree_m2m_bessel_rotation_adj_work (params, constants, node_m) |
| Adjoint transfer multipole coefficients over a tree. More... | |
| subroutine | tree_l2l_rotation (params, constants, node_l) |
| Transfer local coefficients over a tree. More... | |
| subroutine | tree_l2l_rotation_work (params, constants, node_l, work) |
| Transfer local coefficients over a tree. More... | |
| subroutine | tree_l2l_bessel_rotation (params, constants, node_l) |
| Transfer local coefficients over a tree. More... | |
| subroutine | tree_l2l_bessel_rotation_work (params, constants, node_l) |
| Transfer local coefficients over a tree. More... | |
| subroutine | tree_l2l_rotation_adj (params, constants, node_l) |
| Adjoint transfer local coefficients over a tree. More... | |
| subroutine | tree_l2l_rotation_adj_work (params, constants, node_l, work) |
| Adjoint transfer local coefficients over a tree. More... | |
| subroutine | tree_l2l_bessel_rotation_adj (params, constants, node_l) |
| Adjoint transfer local coefficients over a tree. More... | |
| subroutine | tree_m2l_rotation (params, constants, node_m, node_l) |
| Transfer multipole local coefficients into local over a tree. More... | |
| subroutine | tree_m2l_bessel_rotation (params, constants, node_m, node_l) |
| Transfer multipole local coefficients into local over a tree. More... | |
| subroutine | tree_m2l_bessel_rotation_adj (params, constants, node_l, node_m) |
| Adjoint transfer multipole local coefficients into local over a tree. More... | |
| subroutine | tree_m2l_bessel_rotation_adj_work (params, constants, node_l, node_m) |
| Adjoint transfer multipole local coefficients into local over a tree. More... | |
| subroutine | tree_m2l_rotation_adj (params, constants, node_l, node_m) |
| Adjoint transfer multipole local coefficients into local over a tree. More... | |
| subroutine | tree_l2p (params, constants, alpha, node_l, beta, grid_v, sph_l) |
| TODO. More... | |
| subroutine | tree_l2p_bessel (params, constants, alpha, node_l, beta, grid_v) |
| TODO. More... | |
| subroutine | tree_l2p_adj (params, constants, alpha, grid_v, beta, node_l, sph_l) |
| TODO. More... | |
| subroutine | tree_l2p_bessel_adj (params, constants, alpha, grid_v, beta, node_l) |
| TODO. More... | |
| subroutine | tree_m2p (params, constants, p, alpha, sph_m, beta, grid_v) |
| TODO. More... | |
| subroutine | tree_m2p_bessel (params, constants, p, alpha, sph_p, sph_m, beta, grid_v) |
| TODO. More... | |
| subroutine | tree_m2p_adj (params, constants, p, alpha, grid_v, beta, sph_m) |
| TODO. More... | |
| subroutine | tree_m2p_bessel_adj (params, constants, p, alpha, grid_v, beta, sph_p, sph_m) |
| TODO. More... | |
| subroutine | tree_m2p_bessel_nodiag_adj (params, constants, p, alpha, grid_v, beta, sph_p, sph_m) |
| TODO. More... | |
| subroutine | tree_grad_m2m (params, constants, sph_m, sph_m_grad, work) |
| TODO. More... | |
| subroutine | tree_grad_l2l (params, constants, node_l, sph_l_grad, work) |
| TODO. More... | |
| subroutine | get_banner (string) |
| Print the ddX logo. More... | |
| subroutine | cav_to_spherical (params, constants, workspace, property_cav, property_sph) |
| Transform a function defined at the exposed cavity points (cav) to a spherical harmonics expansion. Note that the function is also multiplied by the characteristic function U. More... | |
Core routines and parameters of the ddX software.
| subroutine ddx_core::allocate_model | ( | integer, intent(in) | nsph, |
| real(dp), dimension(nsph), intent(in) | x, | ||
| real(dp), dimension(nsph), intent(in) | y, | ||
| real(dp), dimension(nsph), intent(in) | z, | ||
| real(dp), dimension(nsph), intent(in) | rvdw, | ||
| integer, intent(in) | model, | ||
| integer, intent(in) | lmax, | ||
| integer, intent(in) | ngrid, | ||
| integer, intent(in) | force, | ||
| integer, intent(in) | fmm, | ||
| integer, intent(in) | pm, | ||
| integer, intent(in) | pl, | ||
| real(dp), intent(in) | se, | ||
| real(dp), intent(in) | eta, | ||
| real(dp), intent(in) | eps, | ||
| real(dp), intent(in) | kappa, | ||
| integer, intent(in) | matvecmem, | ||
| integer, intent(in) | maxiter, | ||
| integer, intent(in) | jacobi_ndiis, | ||
| integer, intent(in) | nproc, | ||
| character(len=255), intent(in) | output_filename, | ||
| integer, intent(in) | switching, | ||
| type(ddx_type), intent(out), target | ddx_data, | ||
| type(ddx_error_type), intent(inout) | ddx_error | ||
| ) |
Initialize ddX input with a full set of parameters.
| [in] | nsph | Number of atoms. n > 0. |
| [in] | x | \( x \) coordinates of atoms. Dimension is (n) |
| [in] | y | \( y \) coordinates of atoms. Dimension is (n) |
| [in] | z | \( z \) coordinates of atoms. Dimension is (n) |
| [in] | rvdw | Van-der-Waals radii of atoms. Dimension is (n) |
| [in] | model | Choose model: 1 for COSMO, 2 for PCM and 3 for LPB |
| [in] | lmax | Maximal degree of modeling spherical harmonics. lmax >= 0 |
| [in] | ngrid | Number of Lebedev grid points ngrid >= 0 |
| [in] | force | 1 if forces are required and 0 otherwise |
| [in] | fmm | 1 to use FMM acceleration and 0 otherwise |
| [in] | pm | Maximal degree of multipole spherical harmonics. Ignored in the case fmm=0. Value -1 means no far-field FMM interactions are computed. pm >= -1. |
| [in] | pl | Maximal degree of local spherical harmonics. Ignored in the case fmm=0. Value -1 means no far-field FMM interactions are computed. pl >= -1. |
| [in] | se | Shift of characteristic function. -1 for interior, 0 for centered and 1 for outer regularization |
| [in] | eta | Regularization parameter. 0 < eta <= 1. |
| [in] | eps | Relative dielectric permittivity. eps > 1. |
| [in] | kappa | Debye-H"{u}ckel parameter |
| [in] | matvecmem | handling of the sparse matrices. 1 for precomputin them and keeping them in memory, 0 for assembling the matrix-vector product on-the-fly. |
| [in] | maxiter | Maximum number of iterations for an iterative solver. maxiter > 0. |
| [in] | ndiis | Number of extrapolation points for Jacobi/DIIS solver. ndiis >= 0. |
| [in,out] | nproc | Number of OpenMP threads to be used where applicable. |
| [in] | output_filename | filename for logging information. |
| [in] | switching | kind of switching, 0 legacy, 1 new version. |
| [out] | ddx_data | Object containing all inputs |
| [in,out] | ddx_error | ddX error |
Definition at line 268 of file ddx_core.f90.
| subroutine ddx_core::deallocate_model | ( | type(ddx_type), intent(inout) | ddx_data, |
| type(ddx_error_type), intent(inout) | ddx_error | ||
| ) |
Deallocate object with corresponding data.
| [in,out] | ddx_data | object to deallocate |
| [in,out] | ddx_error | ddX error |
Definition at line 331 of file ddx_core.f90.
| subroutine ddx_core::print_spherical | ( | integer, intent(in) | iunit, |
| character (len=*), intent(in) | label, | ||
| integer, intent(in) | nbasis, | ||
| integer, intent(in) | lmax, | ||
| integer, intent(in) | ncol, | ||
| integer, intent(in) | icol, | ||
| real(dp), dimension(nbasis, ncol), intent(in) | x | ||
| ) |
Print array of spherical harmonics.
Prints (nbasis, ncol) array
| [in] | label | Label to print |
| [in] | nbasis | Number of rows of input x. nbasis >= 0 |
| [in] | lmax | Maximal degree of corresponding spherical harmonics. (lmax+1)**2 = nbasis |
| [in] | ncol | Number of columns to print |
| [in] | icol | This number is only for printing purposes |
| [in] | x | Actual data to print |
Definition at line 1014 of file ddx_core.f90.
| subroutine ddx_core::print_nodes | ( | integer, intent(in) | iunit, |
| character (len=*), intent(in) | label, | ||
| integer, intent(in) | ngrid, | ||
| integer, intent(in) | ncol, | ||
| integer, intent(in) | icol, | ||
| real(dp), dimension(ngrid, ncol), intent(in) | x | ||
| ) |
Print array of quadrature points.
Prints (ngrid, ncol) array
| [in] | label | Label to print |
| [in] | ngrid | Number of rows of input x. ngrid >= 0 |
| [in] | ncol | Number of columns to print |
| [in] | icol | This number is only for printing purposes |
| [in] | x | Actual data to print |
Definition at line 1071 of file ddx_core.f90.
| subroutine ddx_core::print_ddvector | ( | type(ddx_type), intent(in) | ddx_data, |
| character(len=*) | label, | ||
| real(dp), dimension(ddx_data % constants % nbasis, ddx_data % params % nsph) | vector | ||
| ) |
Print dd Solution vector.
| [in] | label | : Label to print |
| [in] | vector | Vector to print |
Definition at line 1117 of file ddx_core.f90.
| subroutine ddx_core::ddintegrate | ( | integer, intent(in) | nsph, |
| integer, intent(in) | nbasis, | ||
| integer, intent(in) | ngrid, | ||
| real(dp), dimension(ldvwgrid, ngrid), intent(in) | vwgrid, | ||
| integer, intent(in) | ldvwgrid, | ||
| real(dp), dimension(ngrid, nsph), intent(in) | x_grid, | ||
| real(dp), dimension(nbasis, nsph), intent(out) | x_lm | ||
| ) |
Integrate against spherical harmonics.
Integrate by Lebedev spherical quadrature. This function can be simply substituted by a matrix-vector product.
| [in] | nsph | Number of spheres. nsph >= 0. |
| [in] | nbasis | Number of spherical harmonics. nbasis >= 0. |
| [in] | ngrid | Number of Lebedev grid points. ngrid >= 0. |
| [in] | vwgrid | Values of spherical harmonics at Lebedev grid points, multiplied by weights of grid points. Dimension is (ldvwgrid, ngrid). |
| [in] | ldvwgrid | Leading dimension of vwgrid. |
| [in] | x_grid | Input values at grid points of the sphere. Dimension is (ngrid, nsph). |
| [out] | x_lm | Output spherical harmonics. Dimension is (nbasis, nsph). |
Definition at line 1150 of file ddx_core.f90.
| subroutine ddx_core::dbasis | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension(3), intent(in) | x, | ||
| real(dp), dimension(constants % nbasis), intent(inout) | basloc, | ||
| real(dp), dimension(3, constants % nbasis), intent(inout) | dbsloc, | ||
| real(dp), dimension(constants % nbasis), intent(inout) | vplm, | ||
| real(dp), dimension(params % lmax+1), intent(inout) | vcos, | ||
| real(dp), dimension(params % lmax+1), intent(inout) | vsin | ||
| ) |
Compute first derivatives of spherical harmonics.
| [in] | x | |
| [out] | basloc | |
| [out] | dbsloc | |
| [out] | vplm | |
| [out] | vcos | |
| [out] | vsin |
TODO: rewrite code and fill description. Computing sqrt(one-cthe*cthe) reduces effective range of input double precision values. cthe*cthe for cthe=1d+155 is NaN.
Definition at line 1178 of file ddx_core.f90.
| real(dp) function ddx_core::intmlp | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | t, | ||
| real(dp), dimension(constants % nbasis), intent(in) | sigma, | ||
| real(dp), dimension(constants % nbasis), intent(in) | basloc | ||
| ) |
TODO.
Definition at line 1309 of file ddx_core.f90.
| subroutine ddx_core::wghpot | ( | integer, intent(in) | ncav, |
| real(dp), dimension(ncav), intent(in) | phi_cav, | ||
| integer, intent(in) | nsph, | ||
| integer, intent(in) | ngrid, | ||
| real(dp), dimension(ngrid, nsph), intent(in) | ui, | ||
| real(dp), dimension(ngrid, nsph), intent(out) | phi_grid, | ||
| real(dp), dimension(ngrid, nsph), intent(out) | g | ||
| ) |
Weigh potential at cavity points by characteristic function TODO use cavity points in CSR format.
Definition at line 1355 of file ddx_core.f90.
| subroutine ddx_core::hsnorm | ( | integer, intent(in) | lmax, |
| integer, intent(in) | nbasis, | ||
| real(dp), dimension(nbasis), intent(in) | u, | ||
| real(dp), intent(inout) | unorm | ||
| ) |
Compute the local Sobolev H^(-1/2)-norm on one sphere of u.
Definition at line 1386 of file ddx_core.f90.
| real(dp) function ddx_core::hnorm | ( | integer, intent(in) | lmax, |
| integer, intent(in) | nbasis, | ||
| integer, intent(in) | nsph, | ||
| real(dp), dimension(nbasis, nsph), intent(in) | x | ||
| ) |
Compute the global Sobolev H^(-1/2)-norm of x.
Definition at line 1407 of file ddx_core.f90.
| real(dp) function ddx_core::rmsnorm | ( | integer, intent(in) | lmax, |
| integer, intent(in) | nbasis, | ||
| integer, intent(in) | nsph, | ||
| real(dp), dimension(nbasis, nsph), intent(in) | x | ||
| ) |
Definition at line 1424 of file ddx_core.f90.
| subroutine ddx_core::rmsvec | ( | integer, intent(in) | n, |
| real(dp), dimension(n), intent(in) | v, | ||
| real(dp), intent(inout) | vrms, | ||
| real(dp), intent(inout) | vmax | ||
| ) |
compute root-mean-square and max norm
Definition at line 1439 of file ddx_core.f90.
| subroutine ddx_core::adjrhs | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | isph, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | xi, | ||
| real(dp), dimension(constants % nbasis), intent(inout) | vlm, | ||
| real(dp), dimension(params % lmax+1), intent(inout) | work | ||
| ) |
Definition at line 1456 of file ddx_core.f90.
| subroutine ddx_core::calcv | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | isph, | ||
| real(dp), dimension(params % ngrid), intent(inout) | pot, | ||
| real(dp), dimension(constants % nbasis, params % nsph), intent(in) | sigma, | ||
| real(dp), dimension(params % lmax+1), intent(inout) | work | ||
| ) |
Definition at line 1513 of file ddx_core.f90.
| subroutine ddx_core::ddeval_grid | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(constants % nbasis, params % nsph), intent(in) | x_sph, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(inout) | x_grid | ||
| ) |
Evaluate values of spherical harmonics at Lebedev grid points.
Definition at line 1590 of file ddx_core.f90.
| subroutine ddx_core::ddeval_grid_work | ( | integer, intent(in) | nbasis, |
| integer, intent(in) | ngrid, | ||
| integer, intent(in) | nsph, | ||
| real(dp), dimension(ldvgrid, ngrid), intent(in) | vgrid, | ||
| integer, intent(in) | ldvgrid, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(nbasis, nsph), intent(in) | x_sph, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(ngrid, nsph), intent(inout) | x_grid | ||
| ) |
Evaluate values of spherical harmonics at Lebedev grid points.
Definition at line 1608 of file ddx_core.f90.
| subroutine ddx_core::ddintegrate_sph | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | x_grid, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(constants % nbasis, params % nsph), intent(inout) | x_sph | ||
| ) |
Integrate values at grid points into spherical harmonics.
Definition at line 1625 of file ddx_core.f90.
| subroutine ddx_core::ddintegrate_sph_work | ( | integer, intent(in) | nbasis, |
| integer, intent(in) | ngrid, | ||
| integer, intent(in) | nsph, | ||
| real(dp), dimension(ldvwgrid, ngrid), intent(in) | vwgrid, | ||
| integer, intent(in) | ldvwgrid, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(ngrid, nsph), intent(in) | x_grid, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(nbasis, nsph), intent(inout) | x_sph | ||
| ) |
Integrate values at grid points into spherical harmonics.
Definition at line 1641 of file ddx_core.f90.
| subroutine ddx_core::ddcav_to_grid | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension(constants % ncav), intent(in) | x_cav, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(inout) | x_grid | ||
| ) |
Unwrap values at cavity points into values at all grid points.
Definition at line 1659 of file ddx_core.f90.
| subroutine ddx_core::ddcav_to_grid_work | ( | integer, intent(in) | ngrid, |
| integer, intent(in) | nsph, | ||
| integer, intent(in) | ncav, | ||
| integer, dimension(nsph+1), intent(in) | icav_ia, | ||
| integer, dimension(ncav), intent(in) | icav_ja, | ||
| real(dp), dimension(ncav), intent(in) | x_cav, | ||
| real(dp), dimension(ngrid, nsph), intent(out) | x_grid | ||
| ) |
Unwrap values at cavity points into values at all grid points.
Definition at line 1675 of file ddx_core.f90.
| subroutine ddx_core::ddproject_cav | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension(constants%nbasis, params%nsph), intent(in) | s, | ||
| real(dp), dimension(constants%ncav), intent(out) | xi | ||
| ) |
Integrate by a characteristic function at Lebedev grid points \xi(n,i) = sum w_n U_n^i Y_l^m(s_n) [S_i]_l^m l,m.
Definition at line 1704 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_rotation | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Transfer multipole coefficients over a tree.
Definition at line 1726 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_rotation_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m, | ||
| real(dp), dimension(6*params % pm**2 + 19*params % pm + 8), intent(out) | work | ||
| ) |
Transfer multipole coefficients over a tree.
Definition at line 1742 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_bessel_rotation | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Transfer multipole coefficients over a tree.
Definition at line 1787 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_bessel_rotation_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Transfer multipole coefficients over a tree.
Definition at line 1803 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_rotation_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Adjoint transfer multipole coefficients over a tree.
Definition at line 1848 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_rotation_adj_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m, | ||
| real(dp), dimension(6*params % pm**2 + 19*params % pm + 8), intent(out) | work | ||
| ) |
Adjoint transfer multipole coefficients over a tree.
Definition at line 1864 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_bessel_rotation_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Adjoint transfer multipole coefficients over a tree.
Definition at line 1892 of file ddx_core.f90.
| subroutine ddx_core::tree_m2m_bessel_rotation_adj_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Adjoint transfer multipole coefficients over a tree.
Definition at line 1907 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_rotation | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l | ||
| ) |
Transfer local coefficients over a tree.
Definition at line 1936 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_rotation_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l, | ||
| real(dp), dimension(6*params % pl**2 + 19*params % pl + 8), intent(out) | work | ||
| ) |
Transfer local coefficients over a tree.
Definition at line 1952 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_bessel_rotation | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l | ||
| ) |
Transfer local coefficients over a tree.
Definition at line 1983 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_bessel_rotation_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l | ||
| ) |
Transfer local coefficients over a tree.
Definition at line 1999 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_rotation_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l | ||
| ) |
Adjoint transfer local coefficients over a tree.
Definition at line 2029 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_rotation_adj_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l, | ||
| real(dp), dimension(6*params % pl**2 + 19*params % pl + 8), intent(out) | work | ||
| ) |
Adjoint transfer local coefficients over a tree.
Definition at line 2045 of file ddx_core.f90.
| subroutine ddx_core::tree_l2l_bessel_rotation_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l | ||
| ) |
Adjoint transfer local coefficients over a tree.
Definition at line 2086 of file ddx_core.f90.
| subroutine ddx_core::tree_m2l_rotation | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(in) | node_m, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(out) | node_l | ||
| ) |
Transfer multipole local coefficients into local over a tree.
Definition at line 2116 of file ddx_core.f90.
| subroutine ddx_core::tree_m2l_bessel_rotation | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(in) | node_m, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(out) | node_l | ||
| ) |
Transfer multipole local coefficients into local over a tree.
Definition at line 2165 of file ddx_core.f90.
| subroutine ddx_core::tree_m2l_bessel_rotation_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(in) | node_l, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(inout) | node_m | ||
| ) |
Adjoint transfer multipole local coefficients into local over a tree.
Definition at line 2216 of file ddx_core.f90.
| subroutine ddx_core::tree_m2l_bessel_rotation_adj_work | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(in) | node_l, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(out) | node_m | ||
| ) |
Adjoint transfer multipole local coefficients into local over a tree.
Definition at line 2232 of file ddx_core.f90.
| subroutine ddx_core::tree_m2l_rotation_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(in) | node_l, | ||
| real(dp), dimension((params % pm+1)**2, constants % nclusters), intent(out) | node_m | ||
| ) |
Adjoint transfer multipole local coefficients into local over a tree.
Definition at line 2278 of file ddx_core.f90.
| subroutine ddx_core::tree_l2p | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(in) | node_l, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(inout) | grid_v, | ||
| real(dp), dimension((params % pl+1)**2, params % nsph), intent(out) | sph_l | ||
| ) |
TODO.
Definition at line 2322 of file ddx_core.f90.
| subroutine ddx_core::tree_l2p_bessel | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(in) | node_l, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(inout) | grid_v | ||
| ) |
TODO.
Definition at line 2361 of file ddx_core.f90.
| subroutine ddx_core::tree_l2p_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | grid_v, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l, | ||
| real(dp), dimension((params % pl+1)**2, params % nsph), intent(out) | sph_l | ||
| ) |
TODO.
Definition at line 2396 of file ddx_core.f90.
| subroutine ddx_core::tree_l2p_bessel_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | grid_v, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(inout) | node_l | ||
| ) |
TODO.
Definition at line 2434 of file ddx_core.f90.
| subroutine ddx_core::tree_m2p | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | p, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension((p+1)**2, params % nsph), intent(in) | sph_m, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(inout) | grid_v | ||
| ) |
TODO.
Definition at line 2471 of file ddx_core.f90.
| subroutine ddx_core::tree_m2p_bessel | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | p, | ||
| real(dp), intent(in) | alpha, | ||
| integer, intent(in) | sph_p, | ||
| real(dp), dimension((sph_p+1)**2, params % nsph), intent(in) | sph_m, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(inout) | grid_v | ||
| ) |
TODO.
Definition at line 2521 of file ddx_core.f90.
| subroutine ddx_core::tree_m2p_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | p, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | grid_v, | ||
| real(dp), intent(in) | beta, | ||
| real(dp), dimension((p+1)**2, params % nsph), intent(inout) | sph_m | ||
| ) |
TODO.
Definition at line 2573 of file ddx_core.f90.
| subroutine ddx_core::tree_m2p_bessel_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | p, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | grid_v, | ||
| real(dp), intent(in) | beta, | ||
| integer, intent(in) | sph_p, | ||
| real(dp), dimension((sph_p+1)**2, params % nsph), intent(inout) | sph_m | ||
| ) |
TODO.
Definition at line 2624 of file ddx_core.f90.
| subroutine ddx_core::tree_m2p_bessel_nodiag_adj | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| integer, intent(in) | p, | ||
| real(dp), intent(in) | alpha, | ||
| real(dp), dimension(params % ngrid, params % nsph), intent(in) | grid_v, | ||
| real(dp), intent(in) | beta, | ||
| integer, intent(in) | sph_p, | ||
| real(dp), dimension((sph_p+1)**2, params % nsph), intent(inout) | sph_m | ||
| ) |
TODO.
Definition at line 2673 of file ddx_core.f90.
| subroutine ddx_core::tree_grad_m2m | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension(constants % nbasis, params % nsph), intent(in) | sph_m, | ||
| real(dp), dimension((params % lmax+2)**2, 3, params % nsph), intent(inout) | sph_m_grad, | ||
| real(dp), dimension((params % lmax+2)**2, params % nsph), intent(inout) | work | ||
| ) |
TODO.
Definition at line 2720 of file ddx_core.f90.
| subroutine ddx_core::tree_grad_l2l | ( | type(ddx_params_type), intent(in) | params, |
| type(ddx_constants_type), intent(in) | constants, | ||
| real(dp), dimension((params % pl+1)**2, constants % nclusters), intent(in) | node_l, | ||
| real(dp), dimension((params % pl+1)**2, 3, params % nsph), intent(out) | sph_l_grad, | ||
| real(dp), dimension((params % pl+1)**2, params % nsph), intent(out) | work | ||
| ) |
TODO.
Definition at line 2784 of file ddx_core.f90.
| subroutine ddx_core::cav_to_spherical | ( | 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 % ncav), intent(in) | property_cav, | ||
| real(dp), dimension(constants % nbasis, params % nsph), intent(out) | property_sph | ||
| ) |
Transform a function defined at the exposed cavity points (cav) to a spherical harmonics expansion. Note that the function is also multiplied by the characteristic function U.
| [in] | params | ddx parameters |
| [in] | constants | ddx constants |
| [in,out] | workspace | ddx workspace |
| [in] | property_cav | property defined at the exposed cavity points, size (ncav) |
| [out] | property_sph | property as a spherical harmonics expansion, size (nbasis, nsph) |
Definition at line 2907 of file ddx_core.f90.