Source code for buffalo_panel.kernels.registry_builds

"""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