Edoardo Vergerio
|
e46c3ebec3
|
export notebook pdf
|
2026-08-28 16:29:03 +02:00 |
|
Edoardo Vergerio
|
2bc3d91085
|
repo cleanup
|
2026-08-28 16:13:43 +02:00 |
|
Edoardo Vergerio
|
1e1f75c2bf
|
added k-fold cross validation in the EGO surrogate modeling. full_meta.ipynb implementes the full FDTD simulation domain (Tidy3D) for the device and produces some result plots in comparison to the ASM model
|
2026-08-28 16:10:53 +02:00 |
|
Edoardo Vergerio
|
b9b64c05ab
|
export notebook pdf
|
2026-08-24 17:29:45 +02:00 |
|
Edoardo Vergerio
|
d928584554
|
added a notebook to verify the full symmetric phase masks and propagation. A comparison between ASM and FDTD is made. The comparison is ideal in the sense that phase masks are implemented assuming unitary transmission. Although not realistic in practice, it is good to compare the results obtained from the two methods. Next steps will require simulating the phase mask as a true metasurface made of nano-pillars.
|
2026-08-24 17:27:50 +02:00 |
|
Edoardo Vergerio
|
7a37ba4f0e
|
far field plane increase
|
2026-08-24 08:32:06 +02:00 |
|
Edoardo Vergerio
|
87d8d7f15c
|
added results from symmetric simulations
|
2026-08-23 18:32:33 +02:00 |
|
Edoardo Vergerio
|
7380eabf54
|
parameter change and minor modifications
|
2026-08-23 18:17:16 +02:00 |
|
Edoardo Vergerio
|
0b9dfffe89
|
added full_meta_meep and meep_fullmeta_propagation which contain first attempts at using meep for computing the whole system. At first, we check propagation using meep_fullmeta_propagation and will later introduce pillars after verification.
|
2026-08-23 18:13:34 +02:00 |
|
Edoardo Vergerio
|
00a1a802c3
|
introduced a setting to fix the maximum diameter of metasurfaces. Practically this is translated into an additional constraint on the optimization algorithm that fixes to zero the degrees of freedom that are outside the designated region. Overall, the number of pixels does not change to guarantee sufficient padding for the fft. Added metaprop_fibermode_doublet_ego_sym.py that implements the ego optimization for finding the optimal distance values under mirror boundary conditions.
|
2026-08-22 10:32:06 +02:00 |
|
Edoardo Vergerio
|
367ffc3457
|
modified metaprop_fibermode_doublet.py with the introduction of an utility function to compute the input field by propgating the source field of a desired propagation distance. This is useful in simulations when setting up custom sources. Added full_meta.ipynb which implements the full first metasurface, truncating the substrate with a custom source and computing the fields just before MS2 using projection monitors
|
2026-08-21 17:43:15 +02:00 |
|
Edoardo Vergerio
|
71c4edf538
|
improved handling of mirror-symmetry boundary conditions
|
2026-08-20 18:15:33 +02:00 |
|
Edoardo Vergerio
|
d76d8a493c
|
repo cleanup
|
2026-08-19 17:50:59 +02:00 |
|
Edoardo Vergerio
|
e63c11ea58
|
repository update. Added metaprop_fibermode_doublet_sym.py which implements a constrained optimization enforcing mirror symmetry about the x and y axes. Mirror symmetry can be exploited in this problem since the target mode has such symmetry. Each metasurface has effectively a quarter of the degrees of freedom compared to the unconstrained problem.
|
2026-08-19 17:48:11 +02:00 |
|
edoardo
|
5ca4f4045a
|
code uniformity across versions
|
2026-07-30 21:18:26 +02:00 |
|
edoardo
|
a315e70576
|
repo cleanup
|
2026-07-29 22:11:49 +02:00 |
|
edoardo
|
7d827aa5ff
|
added unit_cell_meep, a meep notebook dedicated to the simulation of unitcells
|
2026-07-29 21:56:09 +02:00 |
|
edoardo
|
361af92eed
|
modified update function to include variables that were previously not included but that should also be updated at every distance change.
|
2026-07-29 16:29:00 +02:00 |
|
edoardo
|
41c02ad0b0
|
added ego implementation used to discover the optimal set of distance parameters that define the system's geometry
|
2026-07-29 14:44:07 +02:00 |
|
edoardo
|
36c1db0df2
|
code alignment between the two versions. There are now two possibilities: 1)optimize the average objective function, this generally leads to different performance of the converted modes; 2) optimize using an epigraph formulation. This assures that whatever the final epigraph value, the performance of the converted modes will be greater (in terms of mode overlap) than the epigraph itself. The epigraph is implemented as a constrained optimization, which is stricter than optimizing the average
|
2026-07-28 22:41:42 +02:00 |
|
edoardo
|
ebcaeb5643
|
fixed the epigraph formulation, which consisted in correcting the sign of the gradients to comply with the definition of epigraph minmax problem. See notes on the epigraph formulation for further explanations.
|
2026-07-28 13:18:22 +02:00 |
|
edoardo
|
9eb682d706
|
parameter change
|
2026-07-17 11:25:48 +02:00 |
|
edoardo
|
9020feadf2
|
modified polar plots for target and output modes
|
2026-07-17 11:10:35 +02:00 |
|
edoardo
|
9da2beaf75
|
minor changes to plots and parameters
|
2026-07-16 08:49:54 +02:00 |
|
edoardo
|
6260bbac4b
|
added metaprop_fibermode_doublet_multi which implements a multiplexer. In practice, two out-of-axis sources propagate through the metasurface doublet and reach the output plane as two distinct orthogonal fiber modes. For example, one source is converted to an LP11 and the other to an LP21. This is obtained by optimizing the average of the overlap of the two modes separately.
|
2026-07-15 15:28:54 +02:00 |
|
edoardo
|
9fbb398592
|
added metaprop_fibermode_doublet_shiftSource that introduces some modifications needed to properly account for out-of-axis excitations. Initially, it was observed that previous code was only capable of optimizing an on-axis source to an on-axis target. If for example the source was shifted away from the center, then the optimization would fail. Even if the target was shifted out-of-axis to match the position of the source, the algorithm would not work. Several bugs produced this issue. The first was related to how the theoretical model was translated to code, in particular how we handled gradient calculations. In theory, we considered column vectors, for which taking the transpose simply turns them into row vectors but does not change the element wise product. In the code, we instead deal with 2D arrays, and at that point transposing is no longer irrelevant. Check notes for more details about this bug. The second bug was related to how we handle FFTs. In particular, the simulation space is centered in the center of the array. FFTs work considering that the signal starts at the corners. This center mismatch did not cause any issue for the on-axis case, due to the symmetry of the problem. We did not observe both of these two bugs because in the on-axis case everything is centered.
|
2026-07-14 17:13:02 +02:00 |
|
edoardo
|
fb55b76485
|
added metaprop_fibermode_doublet_epigraph which implements the epigraph formulation of the problem to handle multiplexing
|
2026-07-06 10:22:23 +02:00 |
|
edoardo
|
f6fd791fff
|
general testing of parameters. Regarding metaprop_fibermode_doublet, the spatial sampling has been fixed and the grid size is controlled by the number of pixels. I have seen that the mask-mask and mask-output plane distance is crucial and should not be chosen randomly, at the moment i have tested empirically some dimensions. The parameters in this commit seem to work ok, but we need to understand. Then, intensity conversation is still an issue, since the pattern at the output has 95/100, meaning 5/100 is lost somewhere. We really need to understand if this is an issue or not. With these settings, we might want to increase the window size, but then see the next point. I have introduced boundary boxes on phase masks, this is to avoid the algorithm using pixels that are clearly outside and only see noise. If we extend the simulation domain, we ought to extend these boundaries, otherwise the issue will present itself again. For what pixelation is concerned, honestly i expected worse, though there is still the need to apply some kind of filter to eradicate spurious single pixels. That should be doable using autograd, since the heavylifting is done by the adjoint, using autograd just for the filter part should not require too much computing effort. This needs to be tested.
|
2026-06-19 17:17:45 +02:00 |
|
edoardo
|
3276b3991c
|
modified parameters for testing
|
2026-06-19 13:46:30 +02:00 |
|
edoardo
|
f99dc5308e
|
modified parameters for testing
|
2026-06-19 13:40:43 +02:00 |
|
edoardo
|
0d8c90c7fb
|
modified parameters for testing
|
2026-06-19 13:38:07 +02:00 |
|
edoardo
|
b57ec8e757
|
added metaprop_asm.py used to test the angular spectrum method
|
2026-06-19 13:37:41 +02:00 |
|
edoardo
|
1668de238d
|
changing the grid system requires using a larger beamwaist for the input field. Effectively, the larger beam incides onto a larger number of unit-cells
|
2026-06-18 21:00:51 +02:00 |
|
edoardo
|
5e7ad710ba
|
params. fix
|
2026-06-18 17:44:01 +02:00 |
|
edoardo
|
a008cada72
|
more testing on grid size and propagation distances
|
2026-06-18 17:39:32 +02:00 |
|
edoardo
|
b7271ffdf9
|
increasing domain size for testing
|
2026-06-18 14:04:06 +02:00 |
|
edoardo
|
e275ea610b
|
parameter change for testing
|
2026-06-18 11:48:30 +02:00 |
|
edoardo
|
24f3f24e5d
|
code improvements and cleanup after introducing fftw
|
2026-06-18 10:45:31 +02:00 |
|
edoardo
|
dee7bc9c8f
|
fixed variable names
|
2026-06-17 14:18:31 +02:00 |
|
edoardo
|
a87258a9c5
|
testing pyfftw
|
2026-06-17 13:49:25 +02:00 |
|
edoardo
|
93be0f6954
|
added timestamps for evaluation
|
2026-06-17 10:43:26 +02:00 |
|
edoardo
|
e5ae6f6cf2
|
added metaprop_fibermode_doublet.py which implements the angular spectrum method, together with the adjoint formulation to simulate a metasurface doublet
|
2026-06-17 08:36:08 +02:00 |
|
edoardo
|
034f6c83c7
|
modified filter parameters. Using a conic filter with radius 0.5
|
2026-06-05 08:32:06 +02:00 |
|
edoardo
|
1f3e3d5775
|
uniform filter with radius 1
|
2026-06-04 17:07:50 +02:00 |
|
edoardo
|
54de099e46
|
added fiber_modes.ipynb useful utility to compute fiber modes
|
2026-06-04 14:29:31 +02:00 |
|
edoardo
|
dae3d64b74
|
added metaprop_ad.py for testing automatic differentiation and conic filtering
|
2026-06-04 14:16:47 +02:00 |
|
edoardo
|
9b6842a061
|
added metaprop, implementing adjoint inverse design through the angular spectrum method
|
2026-06-02 23:17:21 +02:00 |
|
edoardo
|
15a1f59be6
|
fixed plots between epochs
|
2026-05-31 10:51:01 +02:00 |
|
edoardo
|
5523439021
|
I have seen that the first naive version does not converge well in the dft fields. So in the mean time I am running this version which outputs data more frequenctly
|
2026-05-30 22:36:03 +02:00 |
|
edoardo
|
4579f8544f
|
updated parameters
|
2026-05-30 15:53:52 +02:00 |
|