fiber

photonforge.abstract.fiber(*, length_km=80.0, sections=None, peak_power=0.0, max_phase=0.05, fir_taps=None, power_points=400, n_eff=0.0, wavelength=.55, attenuation=0.2, dispersion=7.0, dispersion_slope=056, effective_area=.0, kerr_index=.6e-20)[source]

A fiber, as one lumped element or a split-step chain of them.

sections decides which. A single section applies all the nonlinear phase and then all the dispersion, the lumped approximation, which is only right when the nonlinear phase is negligible. Chaining N sections and letting the circuit drive them interleaves the two, which is a split-step scheme. sections=None chooses the count from the launch power, so a linear fiber stays a single element.

Parameters:
  • length_km (Annotated[float, exclusiveMinimum=0, units='km']) – Total fiber length.

  • sections (Annotated[int, exclusiveMinimum=0] | None) – Number of sections. If None, chosen by photonforge.fiber.section_count().

  • peak_power (Annotated[float, minimum=0, units='W']) – Largest power the Kerr table has to cover, typically the launch peak power. Zero switches the Kerr effect off and leaves a linear fiber.

  • max_phase (Annotated[float, exclusiveMinimum=0]) – Target nonlinear phase per section, in radians, used only when sections is None.

  • fir_taps (Annotated[int, exclusiveMinimum=0] | None) – Length of each section’s dispersion filter. If None, each section’s stepper sizes its own at setup, once the time step is known; photonforge.fiber.filter_taps() computes the same number.

  • power_points (Annotated[int, exclusiveMinimum=0]) – Samples in the Kerr power table.

  • n_eff (float) – Effective index, which sets only the constant propagation phase. See the note below; the default of 0 is deliberate.

  • wavelength (Annotated[float, exclusiveMinimum=0, units='μm']) – Operating wavelength.

  • attenuation (Annotated[float, minimum=0, units='dB/km']) – Power attenuation.

  • dispersion (Annotated[float, units='ps/(nm·km)']) – \(D\).

  • dispersion_slope (Annotated[float, units='ps/(nm²·km)']) – \(S\).

  • effective_area (Annotated[float, exclusiveMinimum=0, units='μm²']) – Nonlinear effective area.

  • kerr_index (Annotated[float, units='m²/W']) – \(n_2\).

Return type:

Component

Note

The time stepper runs in the pulse frame with n_group 0. n_eff adds only a the constant phase.

Returns:

Two-port component with model.

Parameters:
  • length_km (Annotated[float, exclusiveMinimum=0, units='km'])

  • sections (Annotated[int, exclusiveMinimum=0] | None)

  • peak_power (Annotated[float, minimum=0, units='W'])

  • max_phase (Annotated[float, exclusiveMinimum=0])

  • fir_taps (Annotated[int, exclusiveMinimum=0] | None)

  • power_points (Annotated[int, exclusiveMinimum=0])

  • n_eff (float)

  • wavelength (Annotated[float, exclusiveMinimum=0, units='μm'])

  • attenuation (Annotated[float, minimum=0, units='dB/km'])

  • dispersion (Annotated[float, units='ps/(nm·km)'])

  • dispersion_slope (Annotated[float, units='ps/(nm²·km)'])

  • effective_area (Annotated[float, exclusiveMinimum=0, units='μm²'])

  • kerr_index (Annotated[float, units='m²/W'])

Return type:

Component