|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Classes | |
| class | ModeComparison |
Functions | |
| np.ndarray | radial_eigenvalues (int m, int n_max) |
| List[ModeComparison] | analytic_frequencies (float c, float L, float R, int m, int n_radial_max=2, int k_max=2) |
| List[ModeComparison] | run_case (*, float c, float L, float R, int m, int nx, int nr, int n_radial_max=2, int k_max=2, int n_compare=4) |
Verification case V1: uniform closed-closed cylinder, passive (paper Section VII.A).
Analytic reference (rigid walls at both ends and the side wall):
f_{m,n,k} = (c / 2*pi) * sqrt( (alpha'_{m,n} / R_c)^2 + (k*pi / L)^2 )
where ``alpha'_{m,n}`` is the n-th positive zero of ``J'_m`` (hard-wall transverse
eigenvalue — the same zeros used by the lumped model's
``engine.pipeline.stability.core.TRANSVERSE_EIGENVALUES``, cross-checked here from
first principles via a 2-D FEM solve rather than assumed) and ``k`` is the number of
axial half-wavelengths (``k=0`` allowed: a pure transverse mode with no axial
variation). ``m=n=k=0`` is excluded: it is the trivial uniform-pressure mode, an exact
zero eigenvalue of an all-Neumann-boundary problem (constant pressure has zero
gradient, hence zero stiffness) — physically real but not an *acoustic* mode.
This module builds the FEM prediction (via ``eigen.passive.solve_passive_modes`` on a
``synthetic_uniform_cylinder`` mean flow) and reports it against the closed form.
| List[ModeComparison] engine.stability_hifi.validation.v1_cylinder.analytic_frequencies | ( | float | c, |
| float | L, | ||
| float | R, | ||
| int | m, | ||
| int | n_radial_max = 2, | ||
| int | k_max = 2 ) |
All analytic (alpha, k) candidate frequencies for wavenumber ``m``, trivial mode excluded.
Definition at line 59 of file v1_cylinder.py.
References radial_eigenvalues().
Referenced by run_case().
| np.ndarray engine.stability_hifi.validation.v1_cylinder.radial_eigenvalues | ( | int | m, |
| int | n_max ) |
Positive zeros of J'_m relevant to azimuthal wavenumber ``m``. For ``m=0`` the r=0 axis condition is Neumann (natural), so alpha=0 (uniform-in-r) is an admissible branch, prepended to the true positive zeros of J'_0. For ``m>=1`` the axis condition is Dirichlet (p=0 at r=0, Section III.E), so alpha=0 is not admissible and only the true positive zeros of J'_m apply.
Definition at line 45 of file v1_cylinder.py.
Referenced by analytic_frequencies().
| List[ModeComparison] engine.stability_hifi.validation.v1_cylinder.run_case | ( | * | , |
| float | c, | ||
| float | L, | ||
| float | R, | ||
| int | m, | ||
| int | nx, | ||
| int | nr, | ||
| int | n_radial_max = 2, | ||
| int | k_max = 2, | ||
| int | n_compare = 4 ) |
Run the FEM solve for wavenumber ``m`` and match the lowest ``n_compare`` modes against the analytic candidates (both lists sorted ascending, matched pairwise).
Definition at line 73 of file v1_cylinder.py.
References analytic_frequencies().