Repository navigation
Nonlinear propagation tutorial: Added soliton propagation example - #466
Merged
MaxThevenet merged 17 commits intoOct 12, 2026
Merged
Conversation
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
MaxThevenet
reviewed
Apr 24, 2026
MaxThevenet
left a comment
Contributor
There was a problem hiding this comment.
Looks great, thanks for this PR! See 1 minor comment below. Also, could you fix the merge conflicts? Sorry for the delay...
Co-authored-by: Copilot <copilot@github.com>
for more information, see https://pre-commit.ci
This reverts commit 01a121f.
for more information, see https://pre-commit.ci
MaxThevenet
requested changes
Oct 9, 2026
MaxThevenet
left a comment
Contributor
There was a problem hiding this comment.
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!
MaxThevenet
approved these changes
Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
Sech2Profileis 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 thelevelparameter of the function. To calculate the width at the specified level, also a new functionget_width_at_level()was added tolaser_utils.pyAngularSpectrumPropagatorwas updated to handle 1d pulse profiles.