Spectral Ewald Summation¶
Overview¶
The Ewald summation module parkipy.ewald uses a Kokkos backend
to provide fast summation APIs for the combined
Stokes single and double-layer [1] and Laplace [2] kernels. The Ewald
method is extended to free directions with ideas from [3].
Automatic parameter selection is facilitated via the EwaldOptions
class, where the user selects computational parameters and has the ability
to select different Ewald methods and threading configurations.
Ewald kernel are easy to call, e.g., if you are looking to compute the combined Stokes single and double-layer potential in a fully periodic box on a GPU, you can call:
>>> import parkipy
>>> import cupy as cp
>>> nt = 43892
>>> ns = 876942
>>> # Particle Initialization
>>> trg = cp.random.rand(3, nt)
>>> src = cp.random.rand(3, ns)
>>> dsl = cp.random.rand(3, ns)
>>> ddl = cp.random.rand(3, ns)
>>> dns = cp.vstack((dsl, ddl))
>>> nrm = cp.random.rand(3, ns)
>>> # Define Ewald Options
>>> options = parkipy.ewald.EwaldOptions(box=[1,1,1], periodicity=3, tolerance=1e-5, execution_space="Cuda", cell_size=224)
>>> potential = parkipy.ewald.stokes_comb(trg, src, dns, nrm, options)
Detailed documentation of the Ewald kernels and options are given below.
Ewald Kernel Gallery¶
|
Compute the Stokes single-layer potential. |
|
Compute the combined Stokes single and double layer potential. |
|
Compute the Laplace potential. |
Ewald Kernel Support¶
|
Data class for providing options to the |
|
Data class for spectral Ewald (SE) parameters. |
|
Performance model for an Ewald summation run. |
References