solprop.driver.inputs#

A run’s input: its pulse, its launch, its shot noise and its peak field.

The keyword routes shape their pulses and draw their noise here; a derived run’s input is checked and installed here; and the input’s peak field sets the range of each optmat ionisation rate a run carries (SEP 3).

Module Attributes

ModalLaunch

What a modal constructor's launch keyword takes (SEP 41, S5).

Functions

default_field_range(peak_field)

Return the field amplitudes an ionisation table covers, from the input's peak.

solprop.driver.inputs.ModalLaunch = collections.abc.Mapping[str | int, float | collections.abc.Mapping[str, float]] | collections.abc.Sequence[collections.abc.Mapping[str | int, float | collections.abc.Mapping[str, float]]]#

What a modal constructor’s launch keyword takes (SEP 41, S5).

A mapping from a mode’s display label or index to its share, or to {"share": s, "phase": phi} with the phase in radians; or a list of such mappings, one for each input pulse (docs/guide/setup/pulses.md).

solprop.driver.inputs.default_field_range(peak_field)[source]#

Return the field amplitudes an ionisation table covers, from the input’s peak.

The table is built in log field and its knots double until it is converged (solprop.translate.ionisation.build_rate_table()), so a generous range costs little; getting it wrong is what costs. Below field_min the rate is taken as zero, which is right because every rate this package carries is exactly zero below its threshold, and the threshold is where the lower limit ends up anyway. Above field_max the table holds its last value, so an upper limit that is too low is a silent clip of the rate exactly where ionisation matters most.

Hence three decades below the input peak and thirty times above it. The lower factor only has to reach under the rate’s threshold, which for the noble gases at the intensities a capillary reaches sits one to two decades below the peak. The upper factor has to clear the self-compressed peak: a capillary compressing a pump to a few optical cycles raises the on-axis field by a small single-digit factor before ionisation-induced defocusing and loss clamp it, so thirty is roughly an order of margin on that – a thousand times in intensity.

Parameters:
peak_fieldfloat

Peak field amplitude of the input, V/m, > 0: on a capillary the largest over the axis and the transverse nodes.

Returns:
tuple of float

Lower and upper field amplitude in V/m.

Raises:
DriverError

If the peak field is not positive, which means the input is empty.

Examples

>>> from solprop.driver.inputs import default_field_range
>>> low, high = default_field_range(1e10)
>>> f"{low:.3g} {high:.3g}"
'1e+07 3e+11'