conatus.expert.FirstFourierModeSlice

class conatus.expert.FirstFourierModeSlice(ops, *, border_tol, template=None)[source]

Bases: object

Slice of the translation group through a first-Fourier-mode template (see module doc).

ops: object with translate(X, ℓ), ddx(X) and k (wavenumbers of the pairs), e.g. FourierOps(solver); template: solver vector holding only the first wavenumber (default: the cos₁ coefficient of the first variable, 1D FourierOps only); border_tol: declared threshold on √(a² + b²)/‖X‖ below which a state is reported on the slice border.

Parameters:
  • border_tol (float)

  • template (np.ndarray | None)

angle(X)[source]

Group angle k₁ ℓ(X) ∈ (−π, π] of the state (undefined on the border).

Return type:

float

shift(X)[source]

ℓ(X) ∈ (−L/2, L/2]: X = τ_ℓ X̂.

Return type:

float

border_distance(X)[source]
Return type:

float

on_border(X)[source]
Return type:

bool

reduce(X)[source]

(X̂, ℓ) with X = τ_ℓ X̂; refuses a state on the border (phase undefined).

Return type:

tuple[ndarray, float]

reconstruct(X_hat, ell)[source]

Full-space state τ_ℓ X̂.

Parameters:

ell (float)

Return type:

ndarray

slice_condition(X_hat)[source]

⟨X̂, T p⟩/(k₁‖X̂‖): zero on the slice (to rounding).

Return type:

float

velocity(X_hat, v)[source]

In-slice velocity v̂ = v(X̂) − ℓ̇ T X̂ and phase velocity ℓ̇ (v: full vector field).

Return type:

tuple[ndarray, float]

reduce_trajectory(t, X, *, v=None)[source]

Project samples X (m, n) at times t; the phase is unwrapped between samples. If the vector field v is given, ℓ is also reconstructed by trapezoidal quadrature of ℓ̇ and the largest difference with the unwrapped projection is reported (notes).

Return type:

SliceTrajectory

explain()[source]
Return type:

str