solprop.driver.interface#
The keyword interface: one call from GNLSE coefficients to a written run.
prop_gnlse() builds the grid, the dispersion-specified fibre, the input pulse,
the noise realisation and the numerical settings from keywords, hands them to
solprop.driver.simulation.Simulation.from_gnlse(), runs it and returns the output
handler it wrote. prop_capillary() and prop_waveguide() do the same for a
gas-filled capillary and for any other modal waveguide.
The step controls rtol, atol, dz_init and dz_max are keywords of every
interface. raman defaults to false, and the whole of gamma then acts as Kerr;
the Raman share is taken from gamma only when the Raman response is on. What a run
was asked for is recorded as structured metadata.
The manual page is docs/guide/setup/running.md.
Functions
|
Propagate a pulse through a gas-filled hollow capillary. |
|
Propagate a Cartesian beam and return its saved output. |
|
Propagate a pulse through a GNLSE fibre and return the output it was written to. |
|
Propagate a beam in a hollow planar guide, resolved in y, and return its output. |
|
Propagate a radial beam and return its saved output. |
|
Propagate a pulse through a gas-filled waveguide mode set, or through a guide. |
- solprop.driver.interface.prop_capillary(radius, length, gas, pressure=None, *, pressure_floor=None, vacuum_end=None, lambda0, wavelength_limits=None, trange=None, grid=None, envelope=False, fwhm=None, width=None, pulseshape='gauss', energy=None, peak_power=None, phases=(), pulses=None, modes=1, lattice=None, wall=None, taper_coupling=True, model='full', loss=True, cladding=None, susceptibility=None, temperature=None, kerr=True, thg=None, plasma=None, preionisation=None, plasma_integration=None, raman=None, n_r=None, n_theta=None, radial_rule='gauss_kronrod', ionisation_field_range=None, absorber=None, absorber_scheme=None, noise=None, seed=None, rtol=None, atol=1e-10, dz_max=None, dz_init=None, schedule=None, integrator=None, interpolate_planes=False, step_planes=None, save_planes=None, n_save=None, stats=None, node_budget=67108864, backend='auto', precision='double', polarisation=None, output=None, snapshots=None, resume=False, progress=None, progress_period=10.0, materials=None, tdse=None, tdse_execution=None, tdse_archive=None)[source]#
Propagate a pulse through a gas-filled hollow capillary.
The mode set, the fixed transverse quadrature, the pressure and density paths, the Kerr and plasma responses, the input pulse and the numerics are all built from keywords, and the run goes into memory or into a file. It is
solprop.driver.simulation.Simulation.from_capillary()followed bysolprop.driver.simulation.Simulation.run(), and every keyword up to output is that constructor’s; see it for their meaning anddocs/guide/setup/running.mdfor the discussion.What differs from
prop_gnlse()is the physics, not the machinery: a field grid rather than an envelope one, a set of modes on a shared transverse quadrature rather than one mode-averaged effective area, a gas whose density varies along z and carries both the dispersion and the nonlinearity, and a plasma response whose ionisation rate is tabulated once over the fields the run will reach.The step control is reached through rtol, atol, dz_max and dz_init, and the default step caps are relative to the capillary length rather than absolute. The path is scalar: polarisation and the vector route are refused by name.
- Parameters:
- radiusfloat or solprop.profiles.ZProfile
Core radius, m, constant or along z.
- lengthfloat
Capillary length, m.
- gasGas, str, Mapping or Mixture
Built-in gas, mole fractions keyed by species name, or ordered populations carrying their own density paths. A mapping uses total pressure.
- pressurefloat, sequence, ZProfile or None, optional
None uses one bar for a gas or fractions. Omit pressure beside a Mixture; every explicit pressure is refused because it already carries its paths. Fill pressure in bar: a number for a constant fill, a pair
(p_in, p_out)for the steady-flow gradient ofsolprop.profiles.PressureGradient.two_point(), or(z, p)with the positions and the pressures there forsolprop.profiles.PressureGradient.from_stages().- pressure_floorfloat or None, optional
Lowest pressure the fill is allowed to reach, bar;
Nonetakessolprop.profiles.DEFAULT_PRESSURE_FLOOR_FRACTIONof the highest stage pressure. Withvacuum_end="floor", pass0.0for a true vacuum end, which warns, becausedp/dzdiverges there.- vacuum_end{‘choked’, ‘floor’} or None, optional
How a pressure gradient’s outer end below its choked pressure is treated.
None(the default) means"choked"for a circular hollow guide: the fill follows the bore and an end exhausting into vacuum takes the choked pressure of the flow (solprop.gasflow.steady_fill())."floor"concerns the ends only: it keeps the declared end pressures, for a comparison with a model that imposes them, while a taper’s fill still follows the bore. Seefrom_capillary().- lambda0float
Reference wavelength, m, and the pulse’s centre wavelength.
- wavelength_limitstuple of float or None, optional
Shortest and longest wavelength of the frequency window, m. Required unless grid is given.
- trangefloat or None, optional
Requested width of the time window, s. Required unless grid is given.
- gridsolprop.grid.TimeGrid or None, optional
A grid of one’s own, instead of the three keywords above; the only way to reach
dt,ffacor the transform size.- envelopebool, optional
Propagate an envelope. Plasma is off by default; explicit
plasma=Trueselects cycle averaging of instantaneous rates. Plasma forbids THG.- fwhmfloat or None, optional
Pulse duration at half maximum, s.
- widthfloat or None, optional
Natural width of a sech pulse, s; give this or fwhm.
- pulseshape{‘gauss’, ‘sech’}, optional
Transform-limited shape of the input.
- energyfloat or None, optional
Pulse energy, J. Give this or peak_power.
- peak_powerfloat or None, optional
Peak power, W, realised after the spectral phases.
- phasessequence of float, optional
Taylor spectral phases about lambda0, optics convention: CEP in rad, group delay in s, GDD in s^2, and so on.
- pulsessequence of solprop.pulses.Pulse or None, optional
Several pulses launched together, for two-colour and multi-colour inputs: each a
solprop.pulsesobject with its own wavelength, duration, energy or peak power, phase and delay; the input is the sum of their fields (PulseSum). Replaces the single-pulse keywords fwhm, width, pulseshape, energy, peak_power and phases, which must then be left unset; lambda0 still sets the grid’s reference wavelength.- modesint or sequence of Mode, optional
How many HE_1m modes to propagate, or the mode set itself. A set is checked for orthonormality. Supplied sets may include TabulatedHollowMode or TabulatedMode with their own tables. A supplied set carries its own geometry: radius must agree with every mode’s core radius along the run, or the call is refused by name.
- latticeTubeLattice or None, optional
Tube geometry for an integer mode count, selecting Vincetti modes. Refused with supplied modes, which carry their own geometry, and with
model="reduced". None selects ordinary capillary modes.- wallsolprop.modes.CoherentWall or None, optional
Declare the scalar coherent wall block: the outgoing Robin boundary condition condensed onto the retained basis, which couples every
HE_1mchannel to every other with a definite phase instead of giving each its own Marcatili attenuation. It needs the contiguous setHE_11toHE_1N– or, withimpedance="te_tm", one azimuthal order – on a constant or a varying guide, a scalar run and no noise model; all three backends execute it (method="cf4"onnumpy_refalone).None, the default, carries no wall: the modes keep their own Marcatili loss, and a multimode taper its taper coupling (below).- taper_couplingbool, optional
On a multimode capillary whose radius varies along z, carry the taper coupling – the connection
<psi_m|d_z psi_n>that moves power between theHE_1mchannels as the bore changes – lossless or not.True, the default;Falseis the explicit opt-out to the adiabatic route, on which each channel follows its local mode and exchanges no power. Refused beside wall, which always carries the connection; no effect on one channel or a constant bore. Seefrom_capillary().- model{‘full’, ‘reduced’}, optional
Which Marcatili model the modes use; refused beside a supplied set unless it is the default or the modes’ own.
- lossbool, float or callable, optional
Propagation loss of the modes; refused beside a supplied set unless it is the default or the modes’ own.
- claddingGlassIndex, complex or None, optional
Cladding index;
Noneis the package’s cited silica. Beside a supplied set, refused unless it is the default or the modes’ own.- susceptibilityGasSusceptibility or None, optional
A gas susceptibility replacing the one gas selects, for a comparison against another code’s refractive data. Refused for a fraction mapping or an existing mixture, which own their species models.
- temperaturefloat, ZProfile or None, optional
Gas temperature, K, or a path of it along z in m. Sets the density the pressure path maps to, so it changes both the dispersion and the nonlinearity. A path also weights a steady-flow gradient by the gas’s
eta(T) T(docs/guide/waveguides/profiles.md), makes a shared mixture’s populations independent parameters, and holds the rotational Raman populations at one reference temperature with aRamanTemperatureWarning(solprop.nonlinear.mixtures.raman_temperature()). A constant path is the number, bit for bit.None(the default) is 293.15 K. A Mixture owns its temperature: beside one, a temperature must be omitted or be the mixture’s own (the same number or path object), and any other is refused by name.- kerrbool, optional
Include the Kerr response.
- thgbool or None, optional
Include third-harmonic generation in the Kerr term;
Nonetakesnot envelope.- plasmabool, IonisationRate, Mapping or None, optional
Include photoionisation.
Nonetakesnot envelope.Trueselects optmat’s recommended rate model of each built-in gas (SEP 3, D1;OptmatRate, or the model the selection’sionisationnames), for a single gas and for every component of a mixture; a custom species needs its own rate. A rate object is used as given; a mapping selects a rate or switch per component label, and omitted labels are off.- preionisationfloat, ZProfile, Mapping or None, optional
Initial ionised fraction in [0, 1], globally or per label: a number, or a path along z in m giving the fraction ionised before the pulse arrives at each position. None and omitted mapping labels retain the component’s existing declaration.
- plasma_integration{‘band’, ‘trapezoid’} or None, optional
Form the field-grid population and free-current integrals (SEP 18):
'band'filters each integrand with taps designed for the grid, exact to a certified 1e-5 across the active band;'trapezoid'is the plain cumulative trapezoid, short by up to 11 % per integral at the top of the default active band, which the frozen witness comparisons use.NonetakesPlasmaResponse’s default. Refused with envelope plasma, whose currents are converted exactly, and when the plasma is off.- ramanbool, sequence of str, Mapping or None, optional
None(the default) turns the Raman response on for every species whose optmat response is curated – N2, O2, H2, D2, CH4 and SF6 – leaves an atom without one, and warns (solprop.exceptions.SolpropWarning) for a molecule whose response is provisional (N2O, unless the selection’sramanis"provisional") rather than leaving it out silently; withkerr=Falsethe default is off.Falsedisables it;Trueselects the available models of a mixture and is refused by name for a single gas without data; explicit labels orMolecularOptionsselect components and terms, and a named unavailable model fails explicitly.- n_rint or None, optional
Radial nodes of the fixed rule.
Nonetakessolprop.driver.simulation.default_radial_order()of the mode count.- n_thetaint or None, optional
Azimuthal nodes. Refused for a set of purely radial modes, which need none.
- radial_rulestr, optional
The radial rule family (SEP 19):
"gauss_kronrod"(the default), whose embedded Gauss subset is the quadrature alarm’s error estimate;"gauss", with no alarm; or"field_scale"and"field_scale_radau", Gaussian in the HE_11 field scale for expensive responses, which need exactly one Marcatili HE_11 mode and have no alarm (docs/guide/waveguides/radial-quadrature.md).- ionisation_field_rangetuple of float or None, optional
Field amplitudes in V/m the rate table must cover.
Nonederives them from the input’s peak field over the axis and the transverse nodes; seesolprop.driver.simulation.default_field_range().- absorbersolprop.boundaries.Absorber or None, optional
The collar rates;
Nonebuilds the default collar of the grid.- absorber_scheme{‘nonlinear’, ‘split_step’} or None, optional
How the temporal collar is applied (ADR-025): inside every stage, the default, or once per accepted step. The low-call Adams methods of SEP 13 step much further with
'split_step', whose first-order splitting error stays inside the collar.- noise{None, ‘input’, ‘modified’}, optional
Which shot-noise model to carry.
- seedint or None, optional
Entropy of the noise generator.
- rtolfloat or None, optional
Nonetakes the default below, or the single-precision floor. Relative step tolerance; the default isWAVEGUIDE_RTOL, the modal waveguide default. Calibrate it for a production run (docs/dev/stepper.mdsection 3).- atolfloat, optional
Absolute step tolerance, in the square root of watts.
- dz_maxfloat or None, optional
Cap on the step, m;
Nonetakes half the capillary.- dz_initfloat or None, optional
First step, m;
Nonetakeslength * 1e-4.- schedulesolprop.stepper.schedule.FixedSchedule or None, optional
A fixed schedule to replay instead of stepping adaptively.
- integratorMultistep, RungeKutta or LowStorageRungeKutta, optional
The method that steps the run (
docs/guide/numerics/choosing-a-stepper.md).None, the default, takesMultistep(): the low-call exponential Adams method, one response evaluation per step.RungeKutta()is the interaction-picture DOPRI5 march, for a cheap response or a state too large for the Adams history.LowStorageRungeKutta()replays schedule in three registers (SEP 24).- interpolate_planesbool, optional
Observe the save planes inside accepted steps instead of landing on them (SEP 14): through the Adams march’s own polynomial, or DOPRI5’s continuous extension with
RungeKutta(). DefaultFalse.- step_planesint or None, optional
Also save the end of every step_planes-th accepted step, the march’s own positions, beside the requested planes (SEP 14);
0saves the requested planes only.None, the default, is0, or1with a tdse response, which saves every accepted step (SEP 20).- save_planessequence of float or None, optional
Positions to save at, m. Give this or n_save.
- n_saveint or None, optional
How many planes to save, counting
z = 0.- statssolprop.stats.StatsSpec or None, optional
Which statistics to record;
Nonetakessolprop.stats.default_spec()for a multimode run with the profiles, plus every statistic only a backend can compute.- node_budgetint, optional
Bytes of node-chunk buffers the response pass may hold.
- backendstr, optional
Registry name, or
"auto"(the default) to prefernativeif installed and otherwise use Numba CPU. Import or construction errors do not fall back.- precision{‘double’, ‘single’}, optional
The arithmetic the run is held in (SEP 33,
docs/guide/performance/single-precision.md)."double", the default, is binary64 throughout."single"holds the state and the source evaluation in binary32: its default rtol is the floorSINGLE_RTOL_FLOOR, below which an explicit value is refused; its default integrator isRungeKutta(), and the Adams method, noise models and every backend butnumpy_refare refused.- polarisationstr, float or None, optional
Refused; this path is scalar.
- outputsolprop.output.schema.Output, pathlib.Path, str or None, optional
Where to store the run: a handler, a path to stream HDF5 to, or
Nonefor aMemoryOutput.- snapshotssolprop.output.SnapshotController or None, optional
Immutable local checkpoints at committed accepted steps; requires HDF5,
step_planes=1, all fields and non-interpolated observations.- resumebool or {‘interpolated’}, optional
Continue an interrupted run in the file at output, after checking that its configuration is this one’s.
"interpolated"also continues a dense run from a plane interpolated inside a step (solprop.driver.simulation.Simulation.run()).- progresssolprop.log.ProgressReporter or None, optional
Where progress goes;
Nonelogs a periodic line, one line per saved plane and one at the end.- progress_periodfloat, optional
Seconds between the default reporter’s periodic lines, s;
0leaves only the plane and closing lines. Ignored when progress is given.- materialssolprop.physdata.selection.MaterialSelection or None, optional
Take the run’s built-in materials from optmat under this selection: the gas,
"air"and the default cladding resolve through it (seefrom_capillary()). Supplied objects are taken as they are, and the run records its material manifest (output schema 8).None(the default) isMaterialSelection(), optmat’s recommended models.- tdsesolprop.nonlinear.tdse.TDSEGasResponse or None, optional
A helium TDSE response (SAE or haCC) as the complete electronic response, with
numpy_ref, final-only requested output and every accepted step saved by default (from_capillary(),docs/guide/media/tdse.md).- tdse_executionsolprop.nonlinear.tdse.TDSEExecution or None, optional
Its atomic runtime resources;
Nonebeside tdse is the default record.- tdse_archivesolprop.output.TDSEArchive or None, optional
Archive every raw provider evaluation of tdse in a separate HDF5 file (
run()); refused without tdse.
- Returns:
- solprop.output.schema.Output
The handler the run wrote, closed. A
MemoryOutputstays readable; read a file back withsolprop.output.hdf5.open_file().
- Raises:
- DriverError
If a keyword is missing, inconsistent, or names something this path does not carry.
- OutputError
If a resume is asked for against a file written by a different configuration.
Examples
A short helium capillary with a pressure gradient, two modes and no plasma, run into memory. The window a capillary needs is wider than the band any gas index is fitted over, so the run reports the extrapolation once per model and the example silences it:
>>> import warnings >>> from solprop.driver import prop_capillary >>> from solprop.exceptions import MaterialRangeWarning >>> with warnings.catch_warnings(): ... warnings.simplefilter("ignore", MaterialRangeWarning) ... output = prop_capillary( ... 125e-6, 0.02, "He", (2.0, 1.0), lambda0=800e-9, ... wavelength_limits=(300e-9, 3e-6), trange=100e-15, ... fwhm=10e-15, energy=5e-6, modes=2, plasma=False, ... n_r=16, n_save=2, rtol=1e-8, ... ) >>> output["field"].shape[1:] (2, 1, 257)
The pressure the run saw is recorded beside the field, and it falls along the capillary:
>>> pressure = output["stats/pressure"] >>> bool(pressure[-1] < pressure[0]) True
- solprop.driver.interface.prop_free(grid, space, medium, responses, initial, *, settings, frame=None, noise=None, seed=None, output=None, snapshots=None, resume=False, progress=None, progress_period=10.0, materials=None)[source]#
Propagate a Cartesian beam and return its saved output.
A
solprop.grid.LineGridpropagates a beam uniform in y: the output’s energies and powers are then per metre of y (J/m, W/m), and processing and plotting label them so.- Parameters:
- gridsolprop.grid.TimeGrid
Field or envelope temporal grid, in SI units.
- spacesolprop.grid.FreeGrid
Cartesian axes and half-widths in m, or a
solprop.grid.LineGrid.- mediumsolprop.spatial.SpatialMedium
Constant bulk material; varying profiles are refused.
- responsescollections.abc.Sequence
Existing nonlinear response objects; an empty sequence gives linear flow.
- initialsolprop.pulses.SpatialPulse or numpy.ndarray
Beam specification or internal Cartesian DFT spectrum in V/m, shape
(n_x*n_y, n_pol, n_omega).- settingssolprop.driver.simulation.SimulationSettings
Step tolerances, save planes, statistics and backend.
- framesolprop.linear.Frame or None, optional
Moving frame; None uses the responses’ THG choice.
- noise{None, ‘input’, ‘modified’}, optional
One photon per spatial column, polarisation and active frequency bin.
- seedint or None, optional
Noise seed, required to have a noise model when given.
- outputsolprop.output.schema.Output or pathlib.Path or str or None, optional
Handler, HDF5 path, or None for an in-memory result.
- snapshotssolprop.output.SnapshotController or None, optional
Immutable local checkpoints at committed accepted steps; requires HDF5,
step_planes=1, all fields and non-interpolated observations.- resumebool or {‘interpolated’}, optional
Continue an existing matching HDF5 file.
"interpolated"also continues a dense run from a plane interpolated inside a step (solprop.driver.simulation.Simulation.run()).- progressProgressReporter, {‘auto’, ‘bar’, ‘log’, ‘none’} or None, optional
Where progress goes;
Nonetakes the process default: a bar on a terminal or in a notebook, log lines otherwise (solprop.driver.run.run_problem()).- progress_periodfloat, optional
Seconds between the line reporter’s periodic lines, nonnegative; a bar has its own redraw period.
- materialssolprop.physdata.selection.MaterialSelection or None, optional
Take the run’s built-in materials from optmat under this selection: the medium’s built-in gas resolves through it (see
from_free()). Supplied objects are taken as they are, and the run records its material manifest (output schema 8).None(the default) isMaterialSelection(), optmat’s recommended models.
- Returns:
- solprop.output.schema.Output
Saved fields, metadata, statistics and step history.
- solprop.driver.interface.prop_gnlse(gamma, length, betas=None, *, lambda0, wavelength_limits=None, trange=None, grid=None, beta=None, fibre=None, n2=None, fwhm=None, width=None, pulseshape='gauss', energy=None, peak_power=None, phases=(), pulses=None, loss_db_per_m=None, shock=True, raman=False, raman_fraction=None, noise=None, seed=None, rtol=None, atol=1e-14, dz_max=None, dz_init=None, schedule=None, integrator=None, interpolate_planes=False, step_planes=0, save_planes=None, n_save=None, stats=None, polarisation_taper=False, output=None, snapshots=None, backend='auto', precision='double', resume=False, progress=None, progress_period=10.0, materials=None)[source]#
Propagate a pulse through a GNLSE fibre and return the output it was written to.
The fibre is its dispersion and its nonlinear coefficient:
beta(omega)as Taylor coefficients about lambda0 or as data,gammain 1/(W m), and a power loss in dB/m. The mapping onto solprop’s physics issolprop.nonlinear.gnlse.problem_from()–n2 = gamma A_eff / k_0,chi3 = (4/3) n2 eps_0 c, an effective index of one in the normalisation prefactor and the shock term as that prefactor’somegadependence (docs/guide/waveguides/gnlse.md). The run is an ordinary mode-averaged envelope propagation; there is no separate GNLSE solver.Units are SI throughout (
docs/dev/conventions.mdsection 1) and the spectral phase is in the optics convention, as is every spectrum the output stores (docs/dev/conventions.mdsection 2).- Parameters:
- gammafloat or None
Nonlinear coefficient in 1/(W m), positive for a self-focusing medium.
- lengthfloat
Fibre length, m, positive.
- betasarray_like, optional
Taylor coefficients of
betaabout lambda0,beta_0, beta_1, ..., in s^n/m.beta_0andbeta_1only fix the frame and change no physics. Give exactly one of this, beta or fibre.- lambda0float
Reference wavelength, m, positive: the
gammamapping’s reference, the centre of the Taylor expansion, the grid’s reference and the pulse’s centre wavelength.- wavelength_limitstuple of float, optional
Shortest and longest wavelength of the frequency window, m, increasing and positive. Required unless grid is given.
- trangefloat, optional
Extent of the time window, s. Required unless grid is given.
- gridsolprop.grid.TimeGrid, optional
An envelope grid to propagate on instead of building one from length, lambda0, wavelength_limits and trange. This is the way to choose the sample spacing, the oversampling factor or the transform size. A field grid is refused: the GNLSE mapping is the envelope Kerr response.
- betatuple or callable, optional
The propagation constant as data instead of a series: a pair of arrays
(omega, beta)in rad/s and 1/m with strictly increasing frequencies, or a callable ofomegawhich is sampled on the grid’s active band. Either is interpolated by a cubic spline and differentiated exactly in the spline basis (solprop.nonlinear.gnlse.TabulatedDispersion); evaluation outside the data raises rather than extrapolating.- fibresolprop.modes.protocol.Mode or solprop.modes.tabulated.IndexTable, optional
Whole dispersion and loss instead of betas or beta. A mode goes through
solprop.nonlinear.gnlse.SpecifiedMode.from_mode(), so one whose geometry moves along z – a tapered mode, a moving guide’s provider channel, aSpecifiedModewith dispersion and area paths – hands over its dispersion and its area along z; only the fixed-step scaffold requires a z-constant fibre. Its fill, if present, is ignored as a nonlinear material because the GNLSE uses gamma or n2. The mode supplies only dispersion, loss and area; use prop_capillary for its material responses. A table’s area is evaluated at lambda0, and so is a provider channel’s, by a fresh solve there (along the path of a moving guide); without an area column a table requires gamma and uses the 1 m^2 convention.- n2float or str, optional
Nonlinear index in m^2/W, requiring fibre and
gamma=None. Exactly one of gamma and n2 is required. The mapping isgamma = n2 omega0 / (c A_eff), with unit prefactor index. Under materials,"recommended"takes optmat’s silica bundle’s totaln2(kerr/SiO2) at lambda0.- fwhmfloat, optional
Intensity full width at half maximum of the input pulse, s. Give this or, for a
sechpulse, width.- widthfloat, optional
Natural width of a
sech**2input, s, which isfwhm / (2 ln(1 + sqrt(2))). Only forpulseshape="sech".- pulseshape{‘gauss’, ‘sech’}, optional
Shape of the input pulse.
- energyfloat, optional
Pulse energy, J. Give this or peak_power.
- peak_powerfloat, optional
Peak power, W, realised after the spectral phase is applied.
- phasesarray_like, optional
Optics-convention spectral phase as Taylor coefficients about lambda0:
[CEP (rad), group delay (s), GDD (s**2), TOD (s**3), ...].- pulsessequence of solprop.pulses.Pulse or None, optional
Several pulses launched together, for two-colour and multi-colour inputs: each a
solprop.pulsesobject with its own wavelength, duration, energy or peak power, phase and delay; the input is the sum of their fields (PulseSum). Replaces the single-pulse keywords fwhm, width, pulseshape, energy, peak_power and phases, which must then be left unset; lambda0 still sets the grid’s reference wavelength.- loss_db_per_mfloat or None, optional
Omitted means zero loss on the coefficient routes. Refused beside fibre, which carries its own loss. Power loss in dB/m; negative values describe gain. Converted by
solprop.nonlinear.gnlse.attenuation_from_db().- shockbool, optional
Keep the
omegadependence of the normalisation prefactor, which is the optical shock term. DefaultTrue.- ramanbool, optional
Whether a fused-silica Raman response takes raman_fraction of
gamma, the rest staying with the Kerr term (solprop.nonlinear.gnlse.raman_susceptibility()). DefaultFalse, which gives the whole ofgammato the Kerr term.- raman_fractionfloat or None, optional
Share of
gammaheld back from the Kerr term, between 0 and 1. Omitted, it is the silica bundle’s ownf_Rwith raman true – 0.2188 for optmat’s default (SEP 3, D4) – and 0 with it false. Given, it is held back whatever raman is, so a pair of runs with the same fraction that switches only raman isolates the delayed response.- noise{None, ‘input’, ‘modified’}, optional
Which shot-noise model to carry:
'input'adds one photon per bin to the input field once,'modified'keeps the realisation apart and injects it at every stage, advanced by the unitary part of the linear operator (docs/guide/media/noise.md).- seedint, optional
Entropy of the generator the realisation is drawn from. Recorded in the output, so a run is reproducible;
Nonedraws from the operating system and records what it drew.- rtolfloat or None, optional
Nonetakes the default below, or the single-precision floor. Relative tolerance of the step controller, dimensionless and positive. The map from this local tolerance to the global error at the output is problem dependent and misses by one to three orders either way, so calibrate rather than assume (docs/dev/stepper.mdsection 3).- atolfloat, optional
Absolute tolerance, in the square root of watts, non-negative.
- dz_maxfloat, optional
Cap on the controller’s step proposal, m;
Noneuses half the length.- dz_initfloat, optional
First step, m;
Noneuses a ten-thousandth of the length.- schedulesolprop.stepper.schedule.FixedSchedule, optional
A fixed schedule to replay instead of stepping adaptively, which makes a run bit-identical on re-running (
docs/dev/stepper.mdsection 8). Its edges must contain every save plane, whichsolprop.stepper.schedule.FixedSchedule.uniform()guarantees.- integratorMultistep, RungeKutta or LowStorageRungeKutta, optional
The method that steps the run (
docs/guide/numerics/choosing-a-stepper.md).None, the default, takesMultistep(): the low-call exponential Adams method, one response evaluation per step.RungeKutta()is the interaction-picture DOPRI5 march, for a cheap response or a state too large for the Adams history.LowStorageRungeKutta()replays schedule in three registers (SEP 24).- interpolate_planesbool, optional
Observe the save planes inside accepted steps instead of landing on them (SEP 14): through the Adams march’s own polynomial, or DOPRI5’s continuous extension with
RungeKutta(). DefaultFalse.- step_planesint, optional
Also save the end of every step_planes-th accepted step, the march’s own positions, beside the requested planes (SEP 14);
0, the default, saves the requested planes only.- save_planesarray_like, optional
Positions along the fibre to save at, m, increasing and positive; the plane at
z = 0is saved as well. Give this or n_save.- n_saveint, optional
Number of planes to store, counting the one at
z = 0, spread evenly over the fibre. Default 201.- statssolprop.stats.StatsSpec, optional
Which statistics to record at every plane;
Nonerecordssolprop.stats.default_spec()of a mode-averaged run. Aperiodicsubset is also recorded between the planes.- polarisation_taperbool, optional
Whether the spectral collar tapers the nonlinear polarisation as well as absorbing the field through the linear operator. Default
False: the taper costs a systematic error of the size of the field’s content in the collar, and the rate absorber acts either way (docs/guide/numerics/boundaries.md).- outputsolprop.output.schema.Output or pathlib.Path or str or None, optional
Where the run goes: a handler, a path to stream an HDF5 file to, or
Nonefor asolprop.output.memory.MemoryOutput.- snapshotssolprop.output.SnapshotController or None, optional
Immutable local checkpoints at committed accepted steps; requires HDF5,
step_planes=1, all fields and non-interpolated observations.- backendstr, optional
Registry name, or
"auto"(the default) to prefernativeif installed and otherwise use Numba CPU. Import or construction errors do not fall back.solprop.backends.registry.available()lists what can be used.- precision{‘double’, ‘single’}, optional
The arithmetic the run is held in (SEP 33,
docs/guide/performance/single-precision.md)."double", the default, is binary64 throughout."single"holds the state and the source evaluation in binary32: its default rtol is the floorSINGLE_RTOL_FLOOR, below which an explicit value is refused; its default integrator isRungeKutta(), and the Adams method, noise models and every backend butnumpy_refare refused.- resumebool or {‘interpolated’}, optional
Continue the file at output if it holds this same run, instead of replacing it. Only a path can be resumed.
"interpolated"also continues a dense run from a plane interpolated inside a step (solprop.driver.simulation.Simulation.run()).- progressProgressReporter, {‘auto’, ‘bar’, ‘log’, ‘none’} or None, optional
Where progress goes;
Nonetakes the process default: a bar on a terminal or in a notebook, log lines otherwise (solprop.driver.run.run_problem()).- progress_periodfloat, optional
Seconds between the default reporter’s periodic lines, s;
0leaves only the plane and closing lines. Ignored when progress is given.- materialssolprop.physdata.selection.MaterialSelection or None, optional
Take fused silica’s nonlinear response from optmat’s silica bundle under this selection: with raman on, an omitted fraction is the bundle’s
f_Rand the response its sampled shape, andn2="recommended"is its totaln2. The fibre’s dispersion and a givengammaorn2are the caller’s. The run records its material manifest (output schema 8), with the held-back fraction and its origin.None(the default) isMaterialSelection(), optmat’s recommended models.
- Returns:
- solprop.output.schema.Output
The handler the run was written to, closed. A
solprop.output.memory.MemoryOutputstays readable; read an HDF5 file back withsolprop.output.hdf5.open_file().
- Raises:
- DriverError
If the fibre, the grid, the input, the noise model or the save planes are specified in a way this interface does not accept; the message names what is wrong.
- OutputError
If a file is there and was written for a different run; the message names the fields that changed.
Examples
A third-order soliton over a hundredth of its period, saved to memory:
>>> import numpy as np >>> from solprop.driver import prop_gnlse >>> beta2, gamma, tau0 = -11.83e-27, 0.11, 100e-15 >>> peak = 9 * abs(beta2) / (gamma * tau0**2) >>> handler = prop_gnlse( ... gamma, 1.57e-3, [0.0, 0.0, beta2], lambda0=835e-9, ... wavelength_limits=(500e-9, 2e-6), trange=1e-12, ... width=tau0, peak_power=peak, pulseshape="sech", shock=False, ... n_save=3, rtol=1e-8, ... ) >>> handler.n_saved, handler["z"].tolist() (3, [0.0, 0.000785, 0.00157])
The fibre is lossless, so the energy statistic is the same at every plane:
>>> energy = handler["stats/energy"][:, 0, 0] >>> bool(abs(energy[-1] / energy[0] - 1.0) < 1e-9) True
- solprop.driver.interface.prop_planar(grid, space, responses, initial, *, settings, frame=None, output=None, snapshots=None, resume=False, progress=None, progress_period=10.0, materials=None)[source]#
Propagate a beam in a hollow planar guide, resolved in y, and return its output.
The hybrid planar transform: the slab modes of space in x and a periodic, collared y axis (
docs/guide/waveguides/planar.md, “Resolving y”). Diffraction uses the represented angular-spectrum operator. The run integrates over y, so its energies are in J and its powers in W. Constant gap and constant fill only.numpy_ref,numba_cpuand native CPU execute the geometry.- Parameters:
- gridsolprop.grid.TimeGrid
Field or envelope temporal grid, in SI units.
- spacesolprop.modes.slab.PlanarGrid
The slab modes, their fill and the y axis.
- responsescollections.abc.Sequence
Existing nonlinear response objects; an empty sequence gives linear flow.
- initialsolprop.pulses.PlanarPulse or numpy.ndarray
The astigmatic launch, or an internal
(p, k_y)spectrum in sqrt(W/m), shape(n_p*n_y, 1, n_omega).- settingssolprop.driver.simulation.SimulationSettings
Step tolerances, save planes, statistics and backend.
- framesolprop.linear.Frame or None, optional
Moving frame; None uses the responses’ THG choice and the first mode.
- outputsolprop.output.schema.Output or pathlib.Path or str or None, optional
Handler, HDF5 path, or None for an in-memory result.
- snapshotssolprop.output.SnapshotController or None, optional
Immutable local checkpoints at committed accepted steps; requires HDF5,
step_planes=1, all fields and non-interpolated observations.- resumebool or {‘interpolated’}, optional
Continue an existing matching HDF5 file.
"interpolated"also continues a dense run from a plane interpolated inside a step (solprop.driver.simulation.Simulation.run()).- progressProgressReporter, {‘auto’, ‘bar’, ‘log’, ‘none’} or None, optional
Where progress goes;
Nonetakes the process default.- progress_periodfloat, optional
Seconds between the line reporter’s periodic lines, nonnegative.
- materialssolprop.physdata.selection.MaterialSelection or None, optional
Take the run’s built-in materials from optmat under this selection: a built-in gas fill takes the selection’s single-species susceptibility and a slab without a declared cladding optmat’s recommended fused silica (see
from_planar()). Supplied objects are taken as they are, and the run records its material manifest (output schema 8).None(the default) isMaterialSelection(), optmat’s recommended models.
- Returns:
- solprop.output.schema.Output
Saved fields, metadata, statistics and step history.
- solprop.driver.interface.prop_radial(grid, space, medium, responses, initial, *, settings, frame=None, noise=None, seed=None, output=None, snapshots=None, resume=False, progress=None, progress_period=10.0, materials=None)[source]#
Propagate a radial beam and return its saved output.
- Parameters:
- gridsolprop.grid.TimeGrid
Field or envelope temporal grid, in SI units.
- spacesolprop.grid.RadialGrid
Radial nodes and outer radius in m.
- mediumsolprop.spatial.SpatialMedium
Bulk material, optionally with a varying gas density along z.
- responsescollections.abc.Sequence
Existing nonlinear response objects; an empty sequence gives linear flow.
- initialsolprop.pulses.SpatialPulse or numpy.ndarray
Beam specification or internal Hankel spectrum in V m, shape
(n_r, n_pol, n_omega).- settingssolprop.driver.simulation.SimulationSettings
Step tolerances, save planes, statistics and backend.
- framesolprop.linear.Frame or None, optional
Moving frame; None uses the responses’ THG choice.
- noise{None, ‘input’, ‘modified’}, optional
One photon per spatial column, polarisation and active frequency bin.
- seedint or None, optional
Noise seed, required to have a noise model when given.
- outputsolprop.output.schema.Output or pathlib.Path or str or None, optional
Handler, HDF5 path, or None for an in-memory result.
- snapshotssolprop.output.SnapshotController or None, optional
Immutable local checkpoints at committed accepted steps; requires HDF5,
step_planes=1, all fields and non-interpolated observations.- resumebool or {‘interpolated’}, optional
Continue an existing matching HDF5 file.
"interpolated"also continues a dense run from a plane interpolated inside a step (solprop.driver.simulation.Simulation.run()).- progressProgressReporter, {‘auto’, ‘bar’, ‘log’, ‘none’} or None, optional
Where progress goes;
Nonetakes the process default: a bar on a terminal or in a notebook, log lines otherwise (solprop.driver.run.run_problem()).- progress_periodfloat, optional
Seconds between the line reporter’s periodic lines, nonnegative; a bar has its own redraw period.
- materialssolprop.physdata.selection.MaterialSelection or None, optional
Take the run’s built-in materials from optmat under this selection: the medium’s built-in gas resolves through it (see
from_radial()). Supplied objects are taken as they are, and the run records its material manifest (output schema 8).None(the default) isMaterialSelection(), optmat’s recommended models.
- Returns:
- solprop.output.schema.Output
Saved fields, metadata, statistics and step history.
- solprop.driver.interface.prop_waveguide(modes, length, gas=None, pressure=None, *, provider=None, channel=None, incident=None, coupling=None, kerr_form='real', observable_rtol=None, observable_atol=None, pressure_floor=None, vacuum_end=None, lambda0, wavelength_limits=None, trange=None, grid=None, envelope=False, fwhm=None, width=None, pulseshape='gauss', energy=None, peak_power=None, phases=(), pulses=None, susceptibility=None, temperature=None, kerr=True, thg=None, plasma=None, preionisation=None, plasma_integration=None, raman=None, n_r=None, n_theta=None, radial_rule='gauss_kronrod', ionisation_field_range=None, absorber=None, noise=None, seed=None, rtol=None, atol=1e-10, dz_max=None, dz_init=None, schedule=None, integrator=None, save_planes=None, n_save=None, stats=None, node_budget=67108864, backend='auto', precision='double', polarisation=None, taper_coupling=True, output=None, snapshots=None, resume=False, progress=None, progress_period=10.0, materials=None)[source]#
Propagate a pulse through a gas-filled waveguide mode set, or through a guide.
Build with
from_waveguide()and run to the requested output. Without provider this is the gas-filled route: rectangular polarisation partners carry distinct operator rows, a hollow planar set (SlabMode) runs per unit width – energy in J/m, peak_power in W/m, and the recorded powers and energies likewise – and step-index fibres useprop_gnlse(fibre=...)instead. With provider it is the general modal route (docs/guide/waveguides/general-modal.md), on a field grid, on every backend (Kokkos on CPUs and GPUs), with HDF5 output from output schema 7.- Parameters:
- modessequence of solprop.modes.protocol.Mode
Gas-filled modes sharing a transverse geometry, in propagation row order. Each is rebound to this call’s fill: its own gas, pressure and temperature (a temperature path included) are replaced, its geometry kept. Empty, or the guide’s own channels, beside provider.
- lengthfloat
Waveguide length, m.
- gasGas, str, Mapping, Mixture or None
Built-in gas, mole fractions keyed by species name, or ordered populations carrying their own density paths. A mapping uses total pressure. Required without provider and refused beside one.
- pressurefloat, sequence, ZProfile or None, optional
None uses one bar for a gas or fractions. Omit pressure beside a Mixture; every explicit pressure is refused because it already carries its paths. Fill pressure in bar: a number for a constant fill, a pair
(p_in, p_out)for the steady-flow gradient ofsolprop.profiles.PressureGradient.two_point(), or(z, p)with the positions and the pressures there forsolprop.profiles.PressureGradient.from_stages().- providersolprop.modes.guide.ModalGuide or None, optional
A guide built by
solprop.modes.guide.ModalGuide.from_provider(), which solves its own three-component E and H and whose material regions own their responses. Its knots must span the run’s whole active band.- channelint or str or None, optional
Which channel the pulse enters, by index or display label;
Nonetakes the first. Requires provider.- incidentsolprop.pulses.SpatialPulse or None, optional
An incident beam carrying its own pulse, whose energy is met over the whole beam at the entrance; it is coupled into the channels under coupling, they launch the share they capture and the rest is lost, with the coupling report recorded in the run’s configuration (see
from_waveguide()). Requires provider and coupling, and is refused beside channel and the pulse keywords.- couplingsolprop.coupling.models.CouplingModel or None, optional
The model and budget an incident beam is coupled under, a
vector_paraxialmodel. Requires incident.- kerr_form{‘real’, ‘analytic’}, optional
Which instantaneous cubic a general modal run’s regions respond with: the real-field cubic of the field route, the default, or the analytic-signal form, which carries the fundamental band alone (see
from_waveguide()). Requires provider.- observable_rtol, observable_atolfloat or None, optional
Accepted only as
None, which means the solver’s own rtol and atol (seefrom_waveguide()). Require provider.- pressure_floorfloat or None, optional
Lowest pressure the fill is allowed to reach, bar;
Nonetakessolprop.profiles.DEFAULT_PRESSURE_FLOOR_FRACTIONof the highest stage pressure. Withvacuum_end="floor", pass0.0for a true vacuum end, which warns, becausedp/dzdiverges there.- vacuum_end{‘choked’, ‘floor’} or None, optional
How a pressure gradient’s outer end below its choked pressure is treated.
None(the default) means"choked"for a circular hollow guide: the fill follows the bore and an end exhausting into vacuum takes the choked pressure of the flow (solprop.gasflow.steady_fill())."floor"concerns the ends only: it keeps the declared end pressures, for a comparison with a model that imposes them, while a taper’s fill still follows the bore. Seefrom_capillary().- lambda0float
Reference wavelength, m, and the pulse’s centre wavelength.
- wavelength_limitstuple of float or None, optional
Shortest and longest wavelength of the frequency window, m. Required unless grid is given.
- trangefloat or None, optional
Requested width of the time window, s. Required unless grid is given.
- gridsolprop.grid.TimeGrid or None, optional
A grid of one’s own, instead of the three keywords above; the only way to reach
dt,ffacor the transform size.- envelopebool, optional
Propagate an envelope. Plasma is off by default; explicit
plasma=Trueselects cycle averaging of instantaneous rates. Plasma forbids THG.- fwhmfloat or None, optional
Pulse duration at half maximum, s.
- widthfloat or None, optional
Natural width of a sech pulse, s; give this or fwhm.
- pulseshape{‘gauss’, ‘sech’}, optional
Transform-limited shape of the input.
- energyfloat or None, optional
Pulse energy, J. Give this or peak_power.
- peak_powerfloat or None, optional
Peak power, W, realised after the spectral phases.
- phasessequence of float, optional
Taylor spectral phases about lambda0, optics convention: CEP in rad, group delay in s, GDD in s^2, and so on.
- pulsessequence of solprop.pulses.Pulse or None, optional
Several pulses launched together, for two-colour and multi-colour inputs: each a
solprop.pulsesobject with its own wavelength, duration, energy or peak power, phase and delay; the input is the sum of their fields (PulseSum). Replaces the single-pulse keywords fwhm, width, pulseshape, energy, peak_power and phases, which must then be left unset; lambda0 still sets the grid’s reference wavelength.- susceptibilityGasSusceptibility or None, optional
A gas susceptibility replacing the one gas selects, for a comparison against another code’s refractive data. Refused for a fraction mapping or an existing mixture, which own their species models.
- temperaturefloat, ZProfile or None, optional
Gas temperature, K, or a path of it along z in m. Sets the density the pressure path maps to, so it changes both the dispersion and the nonlinearity. A path also weights a steady-flow gradient by the gas’s
eta(T) T(docs/guide/waveguides/profiles.md), makes a shared mixture’s populations independent parameters, and holds the rotational Raman populations at one reference temperature with aRamanTemperatureWarning(solprop.nonlinear.mixtures.raman_temperature()). A constant path is the number, bit for bit.None(the default) is 293.15 K. A Mixture owns its temperature: beside one, a temperature must be omitted or be the mixture’s own (the same number or path object), and any other is refused by name.- kerrbool, optional
Include the Kerr response.
- thgbool or None, optional
Include third-harmonic generation in the Kerr term;
Nonetakesnot envelope.- plasmabool, IonisationRate, Mapping or None, optional
Include photoionisation.
Nonetakesnot envelope.Trueselects optmat’s recommended rate model of each built-in gas (SEP 3, D1;OptmatRate, or the model the selection’sionisationnames), for a single gas and for every component of a mixture; a custom species needs its own rate. A rate object is used as given; a mapping selects a rate or switch per component label, and omitted labels are off.- preionisationfloat, ZProfile, Mapping or None, optional
Initial ionised fraction in [0, 1], globally or per label: a number, or a path along z in m giving the fraction ionised before the pulse arrives at each position. None and omitted mapping labels retain the component’s existing declaration.
- plasma_integration{‘band’, ‘trapezoid’} or None, optional
Form the field-grid population and free-current integrals (SEP 18):
'band'filters each integrand with taps designed for the grid, exact to a certified 1e-5 across the active band;'trapezoid'is the plain cumulative trapezoid, short by up to 11 % per integral at the top of the default active band, which the frozen witness comparisons use.NonetakesPlasmaResponse’s default. Refused with envelope plasma, whose currents are converted exactly, and when the plasma is off.- ramanbool, sequence of str, Mapping or None, optional
None(the default) turns the Raman response on for every species whose optmat response is curated – N2, O2, H2, D2, CH4 and SF6 – leaves an atom without one, and warns (solprop.exceptions.SolpropWarning) for a molecule whose response is provisional (N2O, unless the selection’sramanis"provisional") rather than leaving it out silently; withkerr=Falsethe default is off.Falsedisables it;Trueselects the available models of a mixture and is refused by name for a single gas without data; explicit labels orMolecularOptionsselect components and terms, and a named unavailable model fails explicitly.- n_rint or None, optional
Radial nodes of the fixed rule, or the x-axis nodes of a Cartesian product or slab rule.
Nonetakessolprop.driver.simulation.default_radial_order()of the mode count, orcartesian_nodes()of the set’s highest transverse order where that is larger.- n_thetaint or None, optional
Azimuthal nodes, or the y-axis nodes of a Cartesian product rule, whose default is
cartesian_nodes(). Refused for a set of purely radial modes, which need none, and for a slab set, which is uniform in y.- radial_rulestr, optional
The radial rule family (SEP 19):
"gauss_kronrod"(the default), whose embedded Gauss subset is the quadrature alarm’s error estimate;"gauss", with no alarm; or"field_scale"and"field_scale_radau", Gaussian in the HE_11 field scale for expensive responses, which need exactly one Marcatili HE_11 mode and have no alarm (docs/guide/waveguides/radial-quadrature.md).- ionisation_field_rangetuple of float or None, optional
Field amplitudes in V/m the rate table must cover.
Nonederives them from the input’s peak field over the axis and the transverse nodes; seesolprop.driver.simulation.default_field_range().- absorbersolprop.boundaries.Absorber or None, optional
The collar rates;
Nonebuilds the default collar of the grid.- noise{None, ‘input’, ‘modified’}, optional
Which shot-noise model to carry.
- seedint or None, optional
Entropy of the noise generator.
- rtolfloat or None, optional
Nonetakes the default below, or the single-precision floor. Relative step tolerance; the default isWAVEGUIDE_RTOL, the modal waveguide default. Calibrate it for a production run (docs/dev/stepper.mdsection 3).- atolfloat, optional
Absolute step tolerance, in the square root of watts.
- dz_maxfloat or None, optional
Cap on the step, m;
Nonetakes half the waveguide.- dz_initfloat or None, optional
First step, m;
Nonetakeslength * 1e-4.- schedulesolprop.stepper.schedule.FixedSchedule or None, optional
A fixed schedule to replay instead of stepping adaptively.
- integratorMultistep, RungeKutta or LowStorageRungeKutta, optional
The method that steps the run (
docs/guide/numerics/choosing-a-stepper.md).None, the default, takesMultistep(): the low-call exponential Adams method.RungeKutta()is the interaction-picture DOPRI5 march, andLowStorageRungeKutta()replays schedule in three registers.- save_planessequence of float or None, optional
Positions to save at, m. Give this or n_save.
- n_saveint or None, optional
How many planes to save, counting
z = 0.- statssolprop.stats.StatsSpec or None, optional
Which statistics to record;
Nonetakessolprop.stats.default_spec()for a multimode run with the profiles, plus every statistic only a backend can compute.- node_budgetint, optional
Bytes of node-chunk buffers the response pass may hold.
- backendstr, optional
Registry name, or
"auto"(the default) to prefernativeif installed and otherwise use Numba CPU. Import or construction errors do not fall back.- precision{‘double’, ‘single’}, optional
The arithmetic the run is held in (SEP 33,
docs/guide/performance/single-precision.md)."double", the default, is binary64 throughout."single"holds the state and the source evaluation in binary32: its default rtol is the floorSINGLE_RTOL_FLOOR, below which an explicit value is refused; its default integrator isRungeKutta(), and the Adams method, noise models and every backend butnumpy_refare refused.- polarisationstr, float or None, optional
Refused; this path is scalar.
- taper_couplingbool, optional
Carry the taper coupling of a supplied capillary set on a varying radius;
Falseis the opt-out to the adiabatic route, refused beside provider (seefrom_waveguide()).- outputsolprop.output.schema.Output, pathlib.Path, str or None, optional
Where to store the run: a handler, a path to stream HDF5 to, or
Nonefor aMemoryOutput.- snapshotssolprop.output.SnapshotController or None, optional
Immutable local checkpoints at committed accepted steps; requires HDF5,
step_planes=1, all fields and non-interpolated observations.- resumebool or {‘interpolated’}, optional
Continue an interrupted run in the file at output, after checking that its configuration is this one’s.
"interpolated"also continues a dense run from a plane interpolated inside a step (solprop.driver.simulation.Simulation.run()).- progresssolprop.log.ProgressReporter or None, optional
Where progress goes;
Nonelogs a periodic line, one line per saved plane and one at the end.- progress_periodfloat, optional
Seconds between the default reporter’s periodic lines, s;
0leaves only the plane and closing lines. Ignored when progress is given.- materialssolprop.physdata.selection.MaterialSelection or None, optional
Take the run’s built-in materials from optmat under this selection: the gas and
"air"resolve through it (seefrom_waveguide()). Supplied objects are taken as they are, and the run records its material manifest (output schema 8).None(the default) isMaterialSelection(), optmat’s recommended models.
- Returns:
- solprop.output.schema.Output
Saved fields, metadata, statistics and step history.