Skip to content

igl.kernels

The bundled Green's-function operator zoo and the registration API.

igl.kernels._registry.Operator dataclass

A registered kernel operator.

Attributes:

Name Type Description
name str

Stable identifier used in configs and serialization.

fn OperatorFn

Callable implementing :class:igl.types.OperatorFn.

is_oscillatory bool

True if the kernel can take negative values (e.g. helmholtz, gabor, mexican_hat); the kernel layer uses this to decide whether sign tracking is needed.

igl.kernels._registry.register_operator(name, fn, *, is_oscillatory=False)

Register a kernel operator under name.

Parameters:

Name Type Description Default
name str

Stable identifier (must be unique).

required
fn OperatorFn

Callable matching :class:igl.types.OperatorFn.

required
is_oscillatory bool

Whether the kernel can take negative values.

False

Raises:

Type Description
IGLConfigError

If name is already registered.

igl.kernels._registry.get_operator(name)

Return the operator registered under name.

Raises:

Type Description
IGLConfigError

If name is not registered.

igl.kernels._registry.list_operators()

Return the sorted list of registered operator names.

Bundled operators

All nine operators are registered eagerly when igl.kernels is imported. Each one is a tiny module under src/igl/kernels/; the module names match the operator names exported via :func:list_operators.

Name Oscillatory Form
gaussian no exp(-d² / (2σ²))
laplacian no exp(-|d| / σ)
cauchy no 1 / (1 + d²/σ²)
yukawa no exp(-|d|/σ) (Laplacian shape, separate identity)
multiquadric no 1 / sqrt(1 + d²/σ²)
helmholtz yes exp(-|d|/σ) · cos(π d / σ)
gabor yes exp(-d²/(2σ²)) · cos(π d / σ)
mexican_hat yes (1 - d²/σ²) · exp(-d²/(2σ²))
soft_box no smooth indicator of [-σ, σ]

To register your own operator, supply a callable matching OperatorFn (returns (log_abs, sign)) and pass is_oscillatory=True if the function can take negative values.