solprop.translate.collar_check#

The design check of a requested collar: what it sends back (SEP 40, 4.4).

A product of plane-wave reflection and a ray share cannot say how much of a launch a collar returns: evaluated on the phase-0 witnesses it was wrong by up to nine decades, because the return lives in diffraction tails. So the check computes it. The launch is propagated linearly on the design’s own operator, one frequency at a time, and compared over the requested aperture with the same launch on a bare grid large enough that the launch does not reach its edge within the run:

\[U_\mathrm{ret} = \max_{z \le L} \frac{\sum_j s_j \, \lVert E_\mathrm{collar}(z, \omega_j) - E_\mathrm{large}(z, \omega_j) \rVert^2_\mathrm{aperture}}{\sum_j s_j\, U_\mathrm{launch}(\omega_j)},\]

with nodes \(\omega_j\) at equal-energy quantiles of the launch’s spectrum and shares \(s_j\). Radially the generator \(\mathrm{diag}(i k_z) + F\,\mathrm{diag}(-\alpha/2)\,B\) is exponentiated by its eigendecomposition; on the Cartesian, line and planar grids a one-frequency Strang march, diffraction exact in the transverse wavenumber and the collar in real space, steps no further than the plane spacing and the crossing limit. The bare grid is diagonal and needs no march.

The verdict is the contract of section 4.4: above BUDGET the design is refused; an estimate within a factor of two of it is refined once, doubling nodes, planes and steps and enlarging the bare grid by half, and passes at REFINED_BUDGET if the two agree within a quarter; a check that cannot converge is inconclusive, which is not a pass.

Module Attributes

BUDGET

The reflection budget in energy, (2e-4)^2 (SEP 40 sections 4.8 and 7.1).

REFINED_BUDGET

What a refined estimate must meet: the budget less the 25 % by which the check read low against full runs (Part II).

WARNING_SHARE

The monitor's warning share of the launch energy, which sets the launch's extent and reach (SEP 40 sections 4.4 and 5.3).

Functions

design_check(space, rate, launch, ...)

Run the design check of SEP 40 section 4.4 on one launch.

Classes

CheckResult(status[, returned, bare_wall, ...])

The design check's verdict and its record (SEP 40 section 4.4).

solprop.translate.collar_check.BUDGET = 4e-08#

The reflection budget in energy, (2e-4)^2 (SEP 40 sections 4.8 and 7.1).

class solprop.translate.collar_check.CheckResult(status, returned=nan, bare_wall=nan, refined=False, nodes=(), planes=0, wall_time=0.0, reason='')[source]#

Bases: object

The design check’s verdict and its record (SEP 40 section 4.4).

Attributes:
status{‘passed’, ‘refused’, ‘inconclusive’, ‘pending’}

The verdict; "pending" when there is no launch to check yet.

returnedfloat

U_ret, an energy share of the launch.

bare_wallfloat

The same launch’s return from a bare wall at the same outer size.

refinedbool

Whether the estimate was refined.

nodestuple of float

The frequency nodes, rad/s.

planesint

The planes compared.

wall_timefloat

The check’s own wall time, s.

reasonstr

Why a check did not pass or converge; empty otherwise.

bare_wall: float = nan#
nodes: tuple[float, ...] = ()#
planes: int = 0#
reason: str = ''#
record()[source]#

Return the check’s record for the design.

Returns:
dict

JSON-ready values.

refined: bool = False#
returned: float = nan#
status: Literal['passed', 'refused', 'inconclusive', 'pending']#
wall_time: float = 0.0#
solprop.translate.collar_check.REFINED_BUDGET = 3e-08#

What a refined estimate must meet: the budget less the 25 % by which the check read low against full runs (Part II).

solprop.translate.collar_check.WARNING_SHARE = 1e-06#

The monitor’s warning share of the launch energy, which sets the launch’s extent and reach (SEP 40 sections 4.4 and 5.3).

solprop.translate.collar_check.design_check(space, rate, launch, dispersion, z_max, width)[source]#

Run the design check of SEP 40 section 4.4 on one launch.

Parameters:
spacesolprop.grid.RadialGrid, solprop.grid.FreeGrid or PlanarGrid

The design’s grid.

ratenumpy.ndarray

The collar’s power rate on the nodes, 1/m.

launchnumpy.ndarray

The noise-free launch, canonical layout; its first batch member is checked.

dispersionsolprop.spatial.SpatialDispersion

The medium and the temporal grid.

z_maxfloat

The run’s length, m.

widthfloat

The collar’s narrowest width, m.

Returns:
CheckResult

The verdict, "pending" for a launch that is zero everywhere.