zoomy_core.model.analysis_linear#
Module zoomy_core.model.analysis_linear.
Module Contents#
Classes#
Lightweight 1D linear-wave analyser for models with symbolic flux/source. |
API#
- class zoomy_core.model.analysis_linear.LinearWaveAnalyser(model)#
Lightweight 1D linear-wave analyser for models with symbolic flux/source.
Workflow:
Build PDE expressions: d_t(Q) + d_x(F(Q)) - S(Q, D) = 0
Insert plane-wave ansatz for selected fields
Resolve requested derivative symbols (e.g. d_txx_h) from ansatz
Extract O(eps) system and solve for omega, then c = omega / k
Initialization
Initialize the instance.
- linearize_from_quasilinear(base_state, perturbation_functions, assumptions=None, print_steps=True)#
Generic Step 2:
Insert q = q0 + eps*q1(t,x) into quasilinear PDE form
Expand to O(eps)
- solve_phase_velocity_from_linearized(linearized_system, perturbation_functions, assumptions=None, print_steps=True)#
Generic Step 3:
Insert q1 = qhat * exp(i(kx - wt)) into already-linearized equations
Solve det(A)=0 for omega, return c=omega/k
- analyse_phase_velocity(base_state, amplitude_symbols, field_to_amplitude, print_steps=True)#
Args
base_state: dict like {“h”: h0, “hu”: hu0}amplitude_symbols: list of unknown amplitudes, e.g. [h1, m1]field_to_amplitude: dict mapping variable name -> amplitude symbol e.g. {“h”: h1, “hu”: m1}