elements.catalog.tapered_duct

elements.catalog.tapered_duct(area, length=None, n_segments=None, name='taper')

Tapered duct / horn / con-di nozzle resolved from an (x, A) profile.

Discretizes a continuously area-varying acoustic passage into N segments, each a compact area change A_i -> A_{i+1} followed by a length-(x_{i+1} - x_i) duct at the segment’s downstream area (the catalog has no length-bearing area-change atom, so a segment is two atoms). As N grows the chain converges to the true horn, and a con-di profile chokes at its true throat – the min-area edge – with the isentropic-area-change complementarity engaging on exactly that segment.

The standard input is a table of (x, A) pairs: the axial positions x [m] set the station spacing (which may be non-uniform – cluster stations where the area varies fastest, e.g. near a throat) and the total length is inferred from them. A callable A(x) is also accepted; it is sampled at n_segments + 1 equispaced stations.

Because each segment carries a real :func:duct, the taper propagates acoustic waves through its interior (each duct spans its own station interval); the area-change atoms are compact.

Parameters

Name Type Description Default
area sequence of (float, float), or callable A table of (x, A) station pairs – axial position x [m] (strictly increasing) and area A [m^2] – or a callable A(x) [m^2] sampled at n_segments + 1 equispaced stations over [0, length]. The two external edges must carry A0 (upstream) and AN (downstream). required
length float Total axial length L [m]. Required for a callable area; for an (x, A) table it is inferred as xN - x0 and, if given, checked against that span. None
n_segments int Segment count Nrequired when area is a callable; for an (x, A) table it is len(table) - 1 (and, if given, checked against it). None
name str Display name. 'taper'

Returns

Name Type Description
CompositeElementSpec
Back to top