API Reference¶
Core Classes¶
Core HarmonicMeasure class.
- class harmonic_measure.core.HarmonicMeasure(geometry, panels_per_quadrant=4, nodes_per_panel=16, beta=None, _disc=None, _solver=None)[source]¶
Bases:
objectHarmonic measure computation for 2D domains.
- Parameters:
geometry (Superellipse or PanelDiscretization) – Domain boundary. If Superellipse, will create panel discretization.
panels_per_quadrant (int) – Panels per quadrant (if geometry is Superellipse)
nodes_per_panel (int) – Gauss-Legendre nodes per panel
beta (float) – Corner refinement parameter
_disc (PanelDiscretization | None)
_solver (DoubleLayerLaplace | None)
Examples
>>> curve = Superellipse(p=16) >>> hm = HarmonicMeasure(curve) >>> omega = hm.measure_corners([0, 0], radius=0.1)
- geometry: Superellipse | PanelDiscretization¶
- property discretization: PanelDiscretization¶
- property solver: DoubleLayerLaplace¶
- measure_subset(basepoint, subset_fn, smooth=True, delta=None)[source]¶
Compute harmonic measure of a boundary subset.
- Parameters:
basepoint (array-like, shape (2,)) – Interior point from which to compute harmonic measure
subset_fn (callable or ndarray) – If callable: returns True for points in subset If ndarray: directly provides boundary data values
smooth (bool) – If True and subset_fn is callable, use smoothed indicator
delta (float, optional) – Smoothing width (default: auto-computed)
- Returns:
omega – Harmonic measure ω(basepoint, subset)
- Return type:
- measure_corners(basepoint, radius, corners=None)[source]¶
Compute harmonic measure of corner neighborhoods.
Boundary Data¶
Boundary data utilities for harmonic measure computation.
- harmonic_measure.boundary_data.sigmoid(t)[source]¶
Standard sigmoid function σ(t) = 1 / (1 + e^{-t}).
- harmonic_measure.boundary_data.smooth_indicator(inside, delta=0.1)[source]¶
Convert boolean to smooth indicator value.
Returns ~1 if inside, ~0 if not, with transition width delta.
- harmonic_measure.boundary_data.smooth_corner_indicator(pts, corners, radius, delta=None)[source]¶
Smooth indicator for corner neighborhoods.
g(ξ) = σ((ρ - d(ξ)) / δ)
where d(ξ) is distance to nearest corner.
Diagnostics¶
Diagnostics for boundary crowding and convergence.
- class harmonic_measure.diagnostics.RefinementRecord(round=0, panels_per_quadrant=0, m_per_panel=0, beta=0.0, n_nodes=0, arc_len=0.0, delta_abs=None, delta_rel=None)[source]¶
Bases:
objectRecord of a single refinement step.
- Parameters:
- harmonic_measure.diagnostics.corner_arc_len_once(n, a, c, *, beta, panels_per_quadrant, m_per_panel)[source]¶
Single discretization solve for corner harmonic mass.
- Parameters:
- Returns:
arc_len (float) – Corner arc length ≈ 2π u(0)
u0 (float) – Harmonic measure u(0)
n_nodes (int) – Total number of boundary nodes
- Return type:
- harmonic_measure.diagnostics.corner_arc_len_converged(n, a, c, *, tol=1e-08, quality='mid', max_rounds=10, verbose=False)[source]¶
Adaptively refine until corner harmonic mass converges.
Uses “no whammies” approach: increase discretization parameters until the quantity of interest stabilizes.
- Parameters:
- Returns:
arc_len (float) – Converged corner arc length
u0 (float) – Converged harmonic measure u(0)
final_params (dict) – Final discretization parameters
history (list[RefinementRecord]) – Refinement history
- Return type:
- harmonic_measure.diagnostics.adaptive_convergence(n, a, c, tol=1e-10, verbose=False)[source]¶
Convenience wrapper for corner_arc_len_converged.
Returns just the arc length and history.
- harmonic_measure.diagnostics.corner_scaling_diagnostic(ns, a=1.0, c=2.0, tol=1e-08, verbose=False)[source]¶
Compute corner harmonic mass across a range of Lamé exponents.
Fits log(arc_len) ~ slope * log(n) to estimate scaling exponent.