Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parabola focus shows strange effects #370

Open
em-archer opened this issue Mar 10, 2025 · 4 comments
Open

Parabola focus shows strange effects #370

em-archer opened this issue Mar 10, 2025 · 4 comments
Assignees

Comments

@em-archer
Copy link
Contributor

em-archer commented Mar 10, 2025

I am having an issue with using lasy and axiprop (@hightower8083) to calculate known focal profiles for short focal lengths (but still well above the paraxial limit). In the figure attached, I show the result for three different focal length lenses: 400mm, 200mm and 100mm. The pulse shows weird effects on the side of the focus to the lens. These get worse if the resolution of the grid is decreased, but increasing the resolution of the grid doesn't make these effects disappear. I haven't really found any advice or guidelines about what grid specifications are required for axiprop, so I tried to use grids that make sense i.e. resolving the spatial profile without taking hours to run.

Bottom left of the figure shows a 'close to paraxial limit' calculation case where the calculation completely fails.

Bottom right plots what the focus looks like based on a correct calculation from the analytic theory and an alternative diffraction integral. As you can see, these effects are not present.

Image

I am not sure whether these issues are due to the definition of the lens in lasy or due to the grids / method used in axiprop.

@MaxThevenet
Copy link
Contributor

Note: this PR in Axiprop may help: hightower8083/axiprop#33

@hightower8083
Copy link
Member

hightower8083 commented Mar 17, 2025

hi @em-archer

thank you reporting this issue! I'm not sure what is your case, but I assume that you use a PropagatorResampling to bring the field from the focusing optics to the far field using some custom new grid (r_axis_new argument in axiprop)? do you have a script (lasy or axiprop) that reproduces this problem?

I think, I have seen before a similar problem for the cases of short f0 and at that time i didn't find a good solution with the PropagatorResampling. This was solved by using the PropagatorResamplingFresnel which implements the diffraction integral, and intrinsically can handle such cases without unnecessarily over-resolving the nearfield. This propagator works well, but is a bit less straightforward to use with the arbitrary input-output grids, and afaik there are some plans to bring it to lasy but its not yet done.

I can help you to setup the case of interest if you provide the input.

@hightower8083
Copy link
Member

hightower8083 commented Mar 18, 2025

UPD (@em-archer ):

I've checked a case similar to yours and can reproduce the issue with PropagatorResampling
Image
which get fixed when using the PropagatorResamplingFresnel
Image

Here is an axiprop script that shows the problem.

Note, that you can always brute-force the propagator using larger Nr, but ultimately it will bring you to the limit of Nr ~ Rmax/dr with dr being your final resolution (e.g. dr=Rmax_new/Nr_new~w0/8), and these are very large numbers.

I don't know what are the plans on integrating PropagatorResamplingFresnel (and its equivalent PropagatorFFT2Fresnel) in LASY, but I guess that will take some time. Maybe we can discuss this next meeting @MaxThevenet ?

@em-archer
Copy link
Contributor Author

Hi @hightower8083,

Thanks so much for your reply and for clarifying that PropagatorResampling is causing the issue. In response to your original message, that is exactly what I was doing. I use the defaults in LASY's laser.propagate(), passing a second grid recalculated for the focal region (see original screenshot for details on the input / output grids), which causes PropagatorResampling to be called. Because I am calling this via another package written on top of LASY, I'd have had to write a MWE from scratch to circumvent this; so it's great that you can replicate what I see without this. Thanks for saving me some time and for providing the direct comparison of PropagatorResampling and PropagatorResamplingFresnel.

I am now using one of my own diffraction codes to propagate the fields outside LASY, so there is no rush on my side. Happy to help where I can with bringing these propagators into LASY. I am not sure whether we can flag this as a known bug in the interim?

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

No branches or pull requests

3 participants