tud_lbm.operators.obstacle

Interior-obstacle operators — composite builder.

Public API: build_obstacle_mask(), build_obstacle_fn()

Implementation modules (_circle.py) are internal.

Example

from tud_lbm.operators.obstacle import build_obstacle_mask, build_obstacle_fn

mask = build_obstacle_mask({“shape”: “circle”, “center_x”: 80, “center_y”: 50, “radius”: 10}, (400, 100, 1)) obstacle_fn = build_obstacle_fn(mask, lattice) f_stream = obstacle_fn(f_stream, f_collision)

Functions

build_obstacle_mask(→ jax.numpy.ndarray | None)

Build a static solid-cell mask from an obstacle config.

build_obstacle_fn(...)

Build an obstacle bounce-back closure from a precomputed mask.

Package Contents

tud_lbm.operators.obstacle.build_obstacle_mask(obstacle_config: dict[str, Any] | None, grid_shape: tuple[int, int, int]) jax.numpy.ndarray | None[source]

Build a static solid-cell mask from an obstacle config.

Parameters:
  • obstacle_config – Mapping with an optional shape key (default "circle") plus shape-specific geometry params. None means no obstacle.

  • grid_shape – Spatial dimensions (nx, ny, nz).

Returns:

Boolean jax array, shape (nx, ny, nz, 1, 1), or None if obstacle_config is None.

tud_lbm.operators.obstacle.build_obstacle_fn(mask: jax.numpy.ndarray | None, lattice: tud_lbm.lattice.lattice.Lattice) tud_lbm.operators.protocols.ObstacleOperator | None[source]

Build an obstacle bounce-back closure from a precomputed mask.

Parameters:
  • mask – Boolean solid-cell mask, shape (nx, ny, nz, 1, 1), or None if there is no obstacle.

  • latticeLattice.

Returns:

A callable obstacle_fn(f_stream, f_col) -> f_stream satisfying ObstacleOperator, or None if mask is None.