|
ddx 0.6.8
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, 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, | ||
| 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. |
| [out] | ddx_data | Object containing all inputs |
| [in,out] | ddx_error | ddX error |
Definition at line 266 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 328 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 1011 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 1068 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 1114 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 1147 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 1175 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 1306 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 1352 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 1383 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 1404 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 1421 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 1436 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 1453 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 1487 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 1534 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 1552 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 1569 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 1585 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 1603 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 1619 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 1648 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 1670 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 1686 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 1731 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 1747 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 1792 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 1808 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 1836 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 1851 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 1880 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 1896 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 1927 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 1943 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 1973 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 1989 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 2030 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 2060 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 2109 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 2160 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 2176 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 2222 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 2266 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 2305 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 2340 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 2378 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 2415 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 2465 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 2517 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 2568 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 2617 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 2664 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 2728 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 2851 of file ddx_core.f90.