Skip to content

Nonlinear propagation tutorial: Added soliton propagation example - #466

Merged
MaxThevenet merged 17 commits into
LASY-org:developmentfrom
TimoEichner:soliton_propagation
Oct 12, 2026
Merged

MaxThevenet merged 17 commits into
LASY-org:developmentfrom
TimoEichner:soliton_propagation

Conversation

@TimoEichner

Copy link
Copy Markdown
Contributor

To properly compare the nonlinear split step propagation against an analytical example, I extended the tutorial by an example of soliton pulse propagation in optical fibers, which can be analytically described in a 1D case sech^2-shaped pulses.
An example of such propagation of a 1550nm pulse in a fused silica fiber was added to the tutorial. The pulse is initiated with the Soliton peak power at which the pulse shape and power should remain constant during propagation due to a balance of dispersion and nonlinearity, and this constant propagation was verified by letting the pulse propagate over long distances. The power and duration of the pulse indeed stay constant to within the permille level (I would attribute the minor difference to higher order dispersion which is included in the model, but is neglected by the analytic description).

To support the improvements of the tutorial, I also added a few helpers at other locations:

  • Sech2Profile is similar to the other longitudinal pulse profiles but describes a squared hyperbolic secant intensity profile that is required for soliton pulse propagation.
  • get_duration() was extended to be able to calculate not only the rms pulse duration, but also the duration at specific intensity levels such as the FWHM. This is set by the level parameter of the function. To calculate the width at the specified level, also a new function get_width_at_level() was added to laser_utils.py
  • AngularSpectrumPropagatorwas updated to handle 1d pulse profiles.

@MaxThevenet MaxThevenet left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thanks for this PR! See 1 minor comment below. Also, could you fix the merge conflicts? Sorry for the delay...

Comment thread lasy/propagators/angular_spectrum_propagator.py Outdated

@MaxThevenet MaxThevenet left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this PR! We have not merged it yet, but I think we could do it quickly, could you just change np with xp in lasy/profiles/longitudinal/sech2_profile.py‎? I think that's all we need, then we can merge. thanks!

Comment thread lasy/profiles/longitudinal/sech2_profile.py Outdated
@MaxThevenet
MaxThevenet merged commit 863e241 into LASY-org:development Oct 12, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants