conatus.expert.critical

conatus.expert.critical(pevp, parameter, *, bracket, growth=None, select=None, over=None, values=None, xtol=REQUIRED, start=None, over_start=None, atol=None)[source]

Neutral parameter (growth(sigma) = 0 for the least stable selected mode).

growth (None by default): the convention declared with the eigenvalue (m.eigenvalue("c", growth="imag")) or read off its name (GROWTH_BY_NAME: s, sigma -> Re, phase speed c -> Im), logged; an undeclared name is refused. Parameters of the pencil missing from values take the model’s declared values (native layer, logged).

The least stable mode is chosen once by a full QZ among the admissible modes (the drift test of m.parametric(N, over, drift=N2, drift_tol=) / P.set_drift, which removes spurious tau modes, and/or select; the counts are logged), then followed by bordered Newton; the neutral value is found by Newton on growth with the exact sensitivity, safeguarded by the bracket. With over the neutral value is minimized over one other parameter (bounded Brent). The final mode is re-checked against a full QZ: if another admissible mode is less stable there, the result is refused.

start is where the mode is first selected and Newton starts (default: the bracket midpoint, logged as such); over_start likewise for the over parameter (default: the midpoint of its bounds). Convergence: |dp| <= xtol |p| + atol, with atol = 1e-3 xtol (hi - lo) unless given (declared in the log): a pure relative test never ends at p = 0. xtol has no default: it sets how many digits of the critical value are returned.

Parameters:
  • pevp (ParametricEVP)

  • parameter (str)

  • bracket (tuple[float, float])

  • growth (Callable[[complex], float] | str | None)

  • select (Callable[[ndarray], ndarray] | None)

  • over (Mapping[str, tuple[float, float]] | None)

  • values (Mapping[str, float] | None)

  • xtol (float)

  • start (float | None)

  • over_start (float | None)

  • atol (float | None)

Return type:

CriticalPoint