Skip to content

Conversation

@em-archer
Copy link
Contributor

@em-archer em-archer commented Oct 16, 2025

An implementation of the Gerchberg-Saxton which uses modal decomposition to propagate the beam as a summation of modes, as per I. Moulanier et al., Jour. Opt. Soc. Am. B 40, 9 (2023). DOI 10.1364/JOSAB.489884 (currently only Hermite-Gaussian modes are implemented).

In the tutorial, a beam is generated as a summation of modes with random coefficients. Simulated laser data is generated by propagating the laser to different planes (five in in this case). The Gerchberg-Saxton algorithm accepts a list of laser objects and corresponding axial positions from the focal plane. By iterating through the different planes and enforcing field amplitude at every plane while allowing the phase to vary, the phase can be found after a few iterations.

Note: this PR is dependent on #454

em-archer and others added 30 commits August 28, 2025 20:12
Part of a larger PR to implement Gerchberg-Saxon with modal decomposition
Rewriting of denoise laser to more general decomposition
em-archer and others added 2 commits October 16, 2025 10:42
Changing python environment to default
@em-archer em-archer changed the title (WIP) Gerchberg-Saxton Algorithm Gerchberg-Saxton Algorithm Oct 16, 2025
@em-archer em-archer requested a review from rob-shalloo October 16, 2025 14:02

# PROPAGATE THE FIELD FIELD FOWARDS AND BACKWARDS BY 1 MM
propDist = 2e-3
field = [None] * 2

Check warning

Code scanning / CodeQL

Variable defined multiple times Warning test

This assignment to 'field' is unnecessary as it is
redefined
before this value is used.
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.

1 participant