perturbation.forced_response

perturbation.forced_response(
    prob,
    x_bar,
    freqs,
    *,
    eps=None,
    eps_fb=1e-06,
    u_floor=1e-08,
    isentropic=False,
)

Solve the perturbation field under each terminal’s declared boundary condition.

The forcing is whatever the terminals’ :class:PerturbationBC s drive (their driven families); with no driven terminal the response is the trivial zero field.

Parameters

Name Type Description Default
prob CompiledProblem or Solution The compiled flow network whose single-port elements carry PerturbationBCs (prob.node_bc). Terminals left at inherit keep their linearized mean boundary row. Pass a solved :class:nefes.Solution to have its problem and mean state supplied for you (then omit x_bar). required
x_bar ndarray Converged mean-flow state, shape (n_solve, E). Omit when prob is a Solution. required
freqs array_like Frequencies (Hz) to solve at. required
eps float Operator-assembly regularizers forwarded to :func:build_acoustic_blocks. None
eps_fb float Operator-assembly regularizers forwarded to :func:build_acoustic_blocks. None
u_floor float Operator-assembly regularizers forwarded to :func:build_acoustic_blocks. None
isentropic bool Force isentropic perturbations (rho' = p'/c^2): the entropy wave is pinned to zero on every edge, leaving the two acoustic waves (default False). Standard acoustic analysis; uses the same operator and solve path. False

Returns

Name Type Description
ForcedResponse The nodal perturbation field at every frequency.

Notes

Acoustic, entropy, and transported reacting-scalar (composition) waves can all be forced. A scalar wave is driven by naming it in a terminal’s driven set, and only at a genuine inflow (where the convected waves enter the domain): the boundary right-hand side then seats xi' at that terminal, and the wave convects and radiates sound downstream wherever the linearization is inherited. Setting isentropic=True pins only the entropy wave; scalar waves are unaffected.

Back to top