conatus.MappedBox

class conatus.MappedBox(**axes)[source]

Bases: Box

Channel between two surfaces over periodic axes: MappedBox(x=periodic(L), z=between(b, t)) (2D) or MappedBox(x=periodic(Lx), y=periodic(Ly), z=between(b, t)) (3D).

Bases (fixed): RealFourier on each periodic axis, Chebyshev T in the terrain-following coordinate xi in [-1, 1] of the vertical axis. All Fourier modes are coupled by the metric: one sparse system for the whole domain (banded along xi), solved directly. Problems: LBVP (m.solve), EVP (m.eigenvalues) and IVP (m.simulate, implicit terms coupled, explicit terms on the grid). Boundaries: "bottom" (z = b), "top" (z = t), "walls".

Parameters:

axes (Any)

kind = 'mapped box (terrain-following)'
property wall_coord: str | None

The coordinate carrying walls: a walls(…) axis, or a half line (one wall).

property bounded_coord: str | None

Name of the non-periodic coordinate (walls, half line or whole line), or None.

n_walls()[source]

Number of walls along the bounded coordinate (2, or 1 when an axis/centre closes it).

Return type:

int

property sincos_coord: str | None

Name of the wall coordinate discretized in sine/cosine series, or None.

property interfaces: tuple[float, ...]

Interior interfaces of a compound wall axis (empty otherwise).

boundaries()[source]

Boundary name -> list of (coordinate name, ‘left’ | ‘right’).

Return type:

dict[str, list[tuple[str, str]]]

basis_table()[source]

One line per coordinate: the basis family chosen (for explain()).

Return type:

list[str]