panel-bie

Panel-based boundary integral equation solver for 2D Laplace problems using Nyström discretization.

Installation

pip install panel-bie

Overview

This package provides tools for solving the Laplace equation on 2D domains using boundary integral methods. The approach uses:

  • Double-layer potential representation

  • Panel-based discretization with Gauss-Legendre quadrature

  • Curvature-corrected diagonal for improved accuracy

Quick Start

from panel_bie import DoubleLayerLaplace
from superellipse import Superellipse

# Create geometry
curve = Superellipse(p=4)
disc = curve.panel_discretization(panels_per_quadrant=8)

# Create solver
solver = DoubleLayerLaplace(disc)

# Solve Dirichlet problem: u = x on boundary
def boundary_data(x, y):
    return x

solution = solver.solve(boundary_data)

# Evaluate at interior point
u_origin = solver.evaluate(solution, [0, 0])

Mathematical Background

The double-layer potential for Laplace’s equation:

\[u(x) = \int_{\partial\Omega} \mu(y) \frac{\partial G}{\partial n_y}(x, y) \, ds(y)\]

where \(G(x,y) = -\frac{1}{2\pi}\log|x-y|\) is the fundamental solution.

Command-Line Interface

The package includes a CLI for quick experiments:

# Test convergence on a p=4 superellipse
panel-bie convergence --p 4

# Compute condition number
panel-bie condition --p 8 --panels 8

# Solve a specific problem
panel-bie solve -g geometry.json --bc "x**2 - y**2" --eval 0,0

See panel-bie --help for all options.

Contents

Indices