Splittings

A splitting bundles the softening function and decomposition parameters matched to a specific kernel. It splits $K = K_0 + K_1 + \dots + K_L$ where $K_0$ has compact support $|r| \le a$ and each $K_l$ is smooth (and itself compactly supported for $l < L$).

A splitting s must implement:

  • short_range(s, r)$K_0(r)$
  • long_range_level(s, l, r)$K_l(r)$ for $l = 1, \dots, L-1$
  • top_level(s, r)$K_L(r)$
  • short_range_grad, long_range_level_grad, top_level_grad
  • requires_neutralising_background(s)Bool
MultilevelSummation.HardyC2CubicType
HardyC2Cubic{T}(a::T, L::Int)

Hardy et al. 2015 cubic softening / splitting matched to the Coulomb kernel 1/r. The kernel is decomposed as

k_0(r) = 1/|r| - (1/a₁) γ(|r|/a₁)                      , a₁ = a
k_l(r) = (1/aₗ) γ(|r|/aₗ) - (1/aₗ₊₁) γ(|r|/aₗ₊₁)        , l = 1,…,L-1
k_L(r) = (1/a_L) γ(|r|/a_L)

with aₗ = 2^{l-1} a and the cubic softening

γ(R) = 1 - (1/2)(R² - 1) + (3/8)(R² - 1)²    for R ≤ 1
γ(R) = 1/R                                    for R > 1

Valid only when paired with Coulomb. Compatibility is verified at calculator construction; here we just supply the components.

source
MultilevelSummation.short_rangeFunction
short_range(splitting, r::SVector{D,T}) -> T

The short-range kernel component K_0(r) of a kernel splitting, supported on |r| ≤ a (the splitting's cutoff).

source
MultilevelSummation.long_range_levelFunction
long_range_level(splitting, l::Integer, r::SVector{D,T}) -> T

The level-l "middle" kernel component K_l(r) of a kernel splitting, defined for l = 1, …, L-1. Compactly supported on |r| ≤ 2^l a.

source
MultilevelSummation.top_levelFunction
top_level(splitting, r::SVector{D,T}) -> T

The top-level kernel component K_L(r) of a kernel splitting. Not compactly supported in general (handled by direct summation on the top grid).

source
MultilevelSummation.requires_neutralising_backgroundFunction
requires_neutralising_background(splitting) -> Bool

Whether the splitting requires zeroing the (single-point) top-level grid charge for fully periodic systems. true for the Coulomb-matched HardyC2Cubic splitting; false for splittings of fast-decaying kernels.

source