You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Implement plane wave interaction with Photodetector
* Fix review points
* add point source
* add CollimatedSource
* up vn to 0.8.5
* fix spot detector docs
* export reset_detector!
* add pd interact3d comments
* PSFDetector (warning: WIP)
* reset_photodetector! -> reset! and optimize PSF code for performance
* Fix syntax bugs
* spotdetector reset! adjust
* psf intensity bug fix
* opl docs fix
* rename reset! to empty! (dispatch base)
* up vn to 0.9 for breaking name change
* stricter refraction3d testset for (very) small angles
* add auto-limits (WIP) to PSFDetector
* Get rid of most allocations
* Use Auto-Diff for SDF gradients to fix issue #11
* Remove temporary issue fix
* add testset for jesus bug
* add BeamGroup testset
* rename Groups.jl to ObjectGroups.jl
* beam group docs
* fix typo
* fix docstring links
* rm create_spot_diagram
* Add primitive means of Strehl normalization
* Improve strehl ratio and centering
* Slay issue #11 again (happy Easter! It should have stayed dead) and fix specialization issues
* Remove photodetector PSF implementation
* Remove abs, match the sdf function behaviour
* Fix axis labeling and introduce a shift option for the user
* Adds the possibility to set a custom grid limit
* Remove Strehl, some docs
* beam group docs
* extended beam group tests
* typo
* minor changes 1
* minor changes 2
* import position
* export psfd (again)
* not a software
* fix some merge issues with regards to PR9
* Add a testset for PSFs and the UniformDiscSource
* Update UniformDiscSource doc strings
* Finish docs of UniformDiscSource
* Add docs
* rm BeamletOptics namespace when unnecessary
* rm solved field from psf detector (no purpose)
* typos
* UDSource docs update
* test psfd empty!
* fix num_rays kwarg in collimated sc

48
48
49
+
A special constructor called [`UniformDiscSource`](@ref) is available, which offers an equal-area
50
+
sampling (Fibonnaci-pattern) sampling and is thus favorable in situations where the weighting of the
51
+
individual beams becomes important, e.g. for calculating a point spread function using [`PSFDetector`](@ref).
52
+
53
+
```@docs; canonical=false
54
+
UniformDiscSource
55
+
```
56
+
57
+

58
+
49
59
### Point beam source
50
60
51
61
The `PointSource` type is used to model emission from a spatially localized source that radiates [`Beam`](@ref)s in a range of directions. This is commonly used to simulate conical emission patterns, such as light emerging from a fiber tip or a light source for a lens objective with a known focal distance. You can specify the origin and a propagation direction, which are then used to construct the monochromatic `PointSource`.
The `interact3d` model of the [`Photodetector`](@ref) can store complex electric field (E-field) values from intersecting [`GaussianBeamlet`](@ref)s, enabling the reconstruction of spatial intensity distribution across its active surface. This data can be used to calculate e.g. beam interference patterns via the [`BeamletOptics.intensity`](@ref) function. The [`BeamletOptics.optical_power`](@ref) method can be used in order to obtain the total optical power at the detector. Below a rendered example of a detector model ([FDS010](https://www.thorlabs.com/thorproduct.cfm?partnumber=FDS010)) can be seen. The detector active area is marked in blue (1x1 mm²).
29
+
The `interact3d` model of the [`Photodetector`](@ref) can store complex electric field (E-field) values from intersecting [`GaussianBeamlet`](@ref)s, enabling the reconstruction of spatial intensity distribution across its active surface. This data can be used to calculate e.g. beam interference patterns via the [`intensity`](@ref) function. The [`BeamletOptics.optical_power`](@ref) method can be used in order to obtain the total optical power at the detector. Below a rendered example of a detector model ([FDS010](https://www.thorlabs.com/thorproduct.cfm?partnumber=FDS010)) can be seen. The detector active area is marked in blue (1x1 mm²).
30
30
31
31

32
32
@@ -62,4 +62,116 @@ Below an optical system consisting of a collection of collimated [`Beam`](@ref)s
62
62
63
63
The beam bundle used to generate the spot diagram was created via the [`CollimatedSource`](@ref) constructor. The resulting spot diagram of the lens shown above is visualized below.
The point spread function estimation is a highly experimental feature. It does not use
71
+
pupils (yet) but merely uses superposition of the ray-attached plane-waves. While this
72
+
gives qualitatively sound results, it requires good sampling of the problem to obtain
73
+
quantitatively good results. Currently no Strehl-ratio is calculated due to that.
74
+
75
+
The package offers a simple method to estimate the point spread function of a system. It is
76
+
currently limited and requires careful assessment by the user, if the results are to be trusted.
77
+
78
+
To analyze the PSF of a imaging system a [`PSFDetector`](@ref) is added to the system at the plane
79
+
and orientation where the PSF is requested. This is the same approach as for the other detector types.
80
+
81
+
```@docs; canonical=false
82
+
PSFDetector(::Real)
83
+
```
84
+
85
+
The intensity map together with the coordinate system of the detector can be retrieved after solving the system by calling the [`intensity`](@ref) function.
86
+
87
+
```@docs; canonical=false
88
+
intensity(::PSFDetector)
89
+
```
90
+
91
+
!!! warning
92
+
When dealing with a collimated source as the input to your optical system, where you want to calculate the PSF, **DO NOT** use the [`CollimatedSource`](@ref) beam group directly but instead use the [`UniformDiscSource`](@ref) constructor. This function returns a `CollimatedSource` with an equal-area sampling, which correctly weights the outer beams in relation to the inner beams. Otherwise the results might be wrong.
This is a classic example where a collimated circular beam is imaged onto a point by a singlet lens.
109
+
Due to the finite size of the aperture stop (in this case given by the 15 mm size of the beam), the diffraction
110
+
limited intensity pattern is given by the Airy-disc:
111
+
112
+
```math
113
+
I(r)=I_0\!\left[\frac{2J_1\!\bigl(\pi D r/(\lambda f)\bigr)}{\pi D r/(\lambda f)}\right]^2
114
+
```
115
+
116
+
With ``r`` the radius from the origin, ``I_0`` the maximum intensity, ``J_1`` the Bessel function of the first kind of order one, ``D`` the aperture width, ``\lambda`` the wavelength and the focal length ``f``.
By experimenting with different mirror angles, arm lengths, or beamsplitter properties, you can observe how interference fringes evolve and gain insights into the stability and sensitivity of the interferometric setup. This can be important to optimize alignment and achieve high contrast fringes.
0 commit comments