Skip to content

Conversation

@alec-flexcompute
Copy link
Contributor

First draft - let me know any preferences for plotting or suggestions for a graphic in addition to any other thoughts

@momchil-flex
Copy link
Collaborator

Nice! Only comment on my side is to maybe sprinkle some nonzero angles and waist distances in the examples both to illustrate the capability and to test that it actually works as expected. :)

@tomflexcompute
Copy link
Contributor

Thanks @alec-flexcompute . Very useful tutorial.

  1. Add a brief introduction paragraph on these sources in the beginning. Something like "Tidy3D natively offers sources like ModeSource, PlaneWave, GaussianBeam, etc. However, we can easily define arbitrary sources such as vortex beams. In this notebook, we demonstrate how to create these advanced sources for the FDTD simulation..."

  2. 'the fact that Tidy3D is open source' -> 'the fact that Tidy3D's [Python frontend](link to github repo) is open source'

  3. 'create an Bessel' -> 'create a Bessel'?

  4. Not sure if the interactive widget works on the website. Might need to double check.

  5. 'from tidy3d.components.beam import BeamProfile' and 'import ipywidgets as widgets' are repeated in each function. Maybe just move it to the beginning.

  6. The usage of 'OAM' appears before Orbital Angular Momentum (OAM).

  7. Add the notebook to docs/features/sources.rst

  8. h2 header capitalization consistency. Either '## Bessel Beam' to '## Bessel beam' or '## Hermite-Gaussian source' to '## Hermite-Gaussian Source' etc.

Copy link
Contributor

@yuanshen-flexcompute yuanshen-flexcompute left a comment

Choose a reason for hiding this comment

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

Very cool notebook and useful recipes for users working with higher order gaussian beams. My comments are about the layout/presentation:

  • Perhaps include more explanation regarding the data structure relationships between the custom BeamProfile object and the method that defines the source and field data. (e.g. what is HGM_obj; what information does it represent/contain; how does one use it after it is defined; what is the difference between HGM_obj and the HGM_source etc.)
  • Similar to Tom's comment, perhaps more elaboration in the preamble to introduce each type of higher order gaussian beam (like a sentence or two to describe what it might be used for; perhaps a figure that shows an example beam profile for each beam type) Wikipedia might be a useful source for this.
  • For each example beam, it would be useful to state in text which higher order is being demonstrated (e.g. "this is the l=1, m=2 HG mode")
  • Since the notebook workflow is identical for each custom beam type, I think there's no need to repeat the example simulation portion. It is useful to include in the first section (HGM) to show the user how to use the custom beam in their simulation. For subsequent sections, perhaps just include the custom beam method and in lieu of the example simulation, just show a figure of the end product (an example mode).
  • The section titles could use consistent naming, e.g. "Hermite-Gaussian Mode", "Laguerre-Gaussian Mode", "Bessel Mode", "Hyper-geometric Gaussian Mode"

@yaugenst-flex
Copy link
Contributor

Could you hold off on merging this until #277 is merged, and then rebase this PR? Would be a nice first test case of the new notebook CI.

@alec-flexcompute
Copy link
Contributor Author

Thanks for the feedback everyone!

@tomflexcompute, for #5, the idea was that a user could just copy/paste the entire cell if they needed a particular source, so I'm hesitant to get rid of the import

@yuanshen-flexcompute for your fourth comment, I still think it'd be good to demonstrate that the field profile propagates correctly for each source, so I kept those example runs.

@yaugenst-flex Lmk when I'm good to rebase/merge!

@yaugenst-flex
Copy link
Contributor

Thanks @alec-flexcompute all good! If you could rebase and then wait for CI to run, it'll be ready to merge.

@tomflexcompute
Copy link
Contributor

For the OAM beam I expect to see an intensity distribution like this

image

but it doesn't look very similar in the notebook. Is it because the source plane is a bit too small?

Also please edit docs/features/sources.rst file accordingly.

@alec-flexcompute alec-flexcompute force-pushed the alec/AdvancedGaussianSources branch 2 times, most recently from 8343890 to 6b3dbd0 Compare April 23, 2025 21:31
@alec-flexcompute alec-flexcompute force-pushed the alec/AdvancedGaussianSources branch from 6b3dbd0 to d7918f5 Compare April 23, 2025 21:40
@github-actions
Copy link
Contributor

Spell check passed successfully for 1 notebook(s).
Generated by GitHub Action run: https://github.com/flexcompute/tidy3d-notebooks/actions/runs/14628658966

@alec-flexcompute
Copy link
Contributor Author

@tomflexcompute @yuanshen-flexcompute how does this latest push look?

Copy link
Contributor

@tomflexcompute tomflexcompute left a comment

Choose a reason for hiding this comment

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

Great thanks @alec-flexcompute !

@alec-flexcompute alec-flexcompute merged commit 6b287c5 into develop Apr 24, 2025
1 check 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.

6 participants