solprop.coupling.outcouple#
Synthesise a guide’s exit field on a spatial grid (SEP 31, sections 4.1 and 5.2).
Outcouple turns an ordinary modal plane – true-power coefficients with
their scalar profiles (ScalarModeBasis) – into a
radial or Cartesian FieldPlane of the physical
field, under an explicitly declared forward interface model. No Fresnel factor
is implied: the one model offered, "matched", is the guide’s exit into a medium
of its own core index, where the transverse field is continuous; a change of index is
a separate PlanarInterface element in the transport sequence that follows,
applied once.
The guide’s field per true-power coefficient is
\(\sqrt{2/(\varepsilon_0c\operatorname{Re}n_{\rm eff})}\,v_m\) (docs/dev/
conventions.md section 4). It is written into the grid’s columns through each
profile’s closed-form transform (target_columns()),
so a profile’s kink at the core radius is not sampled; what the grid’s spectral
window cannot hold is reported, not renormalised.
Module Attributes
A declared forward interface model of |
Classes
|
Synthesise an ordinary guide's exit field onto a spatial grid. |
|
The synthesised exit plane and its energy account. |
- class solprop.coupling.outcouple.Outcouple(space, interface='matched', medium=None, index=None)[source]#
Bases:
objectSynthesise an ordinary guide’s exit field onto a spatial grid.
- Attributes:
- spacesolprop.grid.RadialGrid or solprop.grid.FreeGrid
The grid of the synthesised plane, centred on the guide’s axis.
- interface{‘matched’}
The declared forward interface model.
'matched': the exit medium has the guide’s core index, so the transverse field is continuous and there is no reflection; any other exit medium is refused, and its index change is a separate planar interface.- mediumsolprop.spatial.SpatialMedium or None, optional
The exit medium, whose index must match the core’s.
- indexnumpy.ndarray or None, optional
Its real phase index at each bin instead, shape
(n_omega,); by default the guide’s own core index.
- Raises:
- CouplingError
For both a medium and an index.
Examples
>>> from solprop.grid import RadialGrid >>> Outcouple(RadialGrid(300e-6, 128)) Outcouple(matched, RadialGrid)
- apply(plane)[source]#
Synthesise a modal plane’s exit field on the grid.
- Parameters:
- planesolprop.coupling.plane.FieldPlane
An ordinary modal plane carrying its scalar profiles (read with
field_plane(run, source=simulation)).
- Returns:
- OutcoupleResult
The spatial plane and its energy account.
- Raises:
- CouplingError
If the plane is not modal or has no profiles, or the exit medium’s index is not the core’s.
- medium: SpatialMedium | None = None#
- space: RadialGrid | FreeGrid#
- class solprop.coupling.outcouple.OutcoupleResult(plane, modal, synthesised, window)[source]#
Bases:
objectThe synthesised exit plane and its energy account.
- Attributes:
- planesolprop.coupling.plane.FieldPlane
The radial or Cartesian plane of the exit field.
- modalnumpy.ndarray
The modal plane’s energy per bin in its native metric, J, shape
(n_omega,).- synthesisednumpy.ndarray
The synthesised plane’s energy per bin in its axial-admittance metric, J, shape
(n_omega,). It differs from modal by the scalar model’s metric defect (core index against effective index), the profiles’ angular content and what the grid’s window misses; nothing is renormalised.- windowfloat
The largest departure of the profiles’ Gram in the grid’s spectral window from the identity: the share of a profile the grid cannot represent.
- modal: Float[ndarray, 'n_omega']#
- plane: FieldPlane#
- synthesised: Float[ndarray, 'n_omega']#