"""Kernel-registry wiring for built-in two-dimensional kernels."""
from __future__ import annotations
from buffalo_panel.basis.descriptors import (
LINE_CONSTANT,
LINE_LINEAR,
LINE_POINT,
)
from buffalo_panel.geometry.supports import LINE_2D
from buffalo_panel.kernels.internal.line_doublet_constant_2d import (
LineDoubletConstant2D,
)
from buffalo_panel.kernels.internal.line_doublet_point_2d import (
LineDoubletPoint2D,
)
from buffalo_panel.kernels.internal.line_source_constant_2d import (
LineSourceConstant2D,
)
from buffalo_panel.kernels.internal.line_source_linear_2d import (
LineSourceLinear2D,
)
from buffalo_panel.kernels.internal.line_source_point_2d import (
LineSourcePoint2D,
)
from buffalo_panel.kernels.internal.line_vortex_constant_2d import (
LineVortexConstant2D,
)
from buffalo_panel.kernels.internal.line_vortex_point_2d import (
LineVortexPoint2D,
)
from buffalo_panel.kernels.registry import KernelRegistry
from buffalo_panel.singularities.descriptors import DOUBLET, SOURCE, VORTEX
[docs]
def build_2d_registry() -> KernelRegistry:
"""
Build a registry for the built-in two-dimensional kernels.
The registry groups kernels by mathematical domain and implementation
backend.
This builder currently registers the pure-Python reference kernels for
line-panel source and vortex influence calculations used by the supported
two-dimensional formulations.
Additional two-dimensional backends can be added under different backend
labels while preserving the same support, singularity, and basis keys.
Returns
-------
KernelRegistry
Registry containing the built-in two-dimensional Python kernels.
"""
registry = KernelRegistry()
registry.register(
backend="python",
key=(LINE_2D.name, SOURCE.name, LINE_POINT.name),
kernel=LineSourcePoint2D(),
)
registry.register(
backend="python",
key=(LINE_2D.name, VORTEX.name, LINE_POINT.name),
kernel=LineVortexPoint2D(),
)
registry.register(
backend="python",
key=(LINE_2D.name, DOUBLET.name, LINE_POINT.name),
kernel=LineDoubletPoint2D(),
)
registry.register(
backend="python",
key=(LINE_2D.name, SOURCE.name, LINE_CONSTANT.name),
kernel=LineSourceConstant2D(),
)
registry.register(
backend="python",
key=(LINE_2D.name, VORTEX.name, LINE_CONSTANT.name),
kernel=LineVortexConstant2D(),
)
registry.register(
backend="python",
key=(LINE_2D.name, DOUBLET.name, LINE_CONSTANT.name),
kernel=LineDoubletConstant2D(),
)
registry.register(
backend="python",
key=(LINE_2D.name, SOURCE.name, LINE_LINEAR.name),
kernel=LineSourceLinear2D(),
)
return registry