Dear Xinge Yang
Thank you for sharing awesome project!
All of your opensource projects are truly helpful for optics and photonics community.
I would like to request the addition of incoherent layer support natively within the differentiable PyTorch solvers (IsotropicFilmSolver and the general FilmSolver).
Currently, the PyTorch solvers assume perfectly coherent wave propagation across the entire multi-layer stack.
When simulating structures that include layers significantly thicker than the wavelength, the coherent TMM calculation produces extremely dense and highly oscillatory Fabry-Perot ripples in the spectrum.
In actual experimental measurements, these ripples are typically washed out because the finite coherence length of the light source.
As a result, a purely coherent simulation creates a massive discrepancy between the calculated spectrum and the real-world ground truth.
For example, thin film stacks on both the front and back sides of a thick substrate.
To accurately model this, we need to treat the thin films as coherent while breaking the phase coherence at the thick intermediate substrate.
I noticed that the bundled reference library (tmm_numpy/tmm_core.py) already handles this perfectly via the inc_tmm function using the c_list parameter.
It would be a massive improvement if the logic of inc_tmm (calculating intensity-based transfer matrices for specific layers) could be ported into the differentiable PyTorch pipeline.
Thank you for your time, and I appreciate your work on this repository!
Dear Xinge Yang
Thank you for sharing awesome project!
All of your opensource projects are truly helpful for optics and photonics community.
I would like to request the addition of incoherent layer support natively within the differentiable PyTorch solvers (IsotropicFilmSolver and the general FilmSolver).
Currently, the PyTorch solvers assume perfectly coherent wave propagation across the entire multi-layer stack.
When simulating structures that include layers significantly thicker than the wavelength, the coherent TMM calculation produces extremely dense and highly oscillatory Fabry-Perot ripples in the spectrum.
In actual experimental measurements, these ripples are typically washed out because the finite coherence length of the light source.
As a result, a purely coherent simulation creates a massive discrepancy between the calculated spectrum and the real-world ground truth.
For example, thin film stacks on both the front and back sides of a thick substrate.
To accurately model this, we need to treat the thin films as coherent while breaking the phase coherence at the thick intermediate substrate.
I noticed that the bundled reference library (tmm_numpy/tmm_core.py) already handles this perfectly via the inc_tmm function using the c_list parameter.
It would be a massive improvement if the logic of inc_tmm (calculating intensity-based transfer matrices for specific layers) could be ported into the differentiable PyTorch pipeline.
Thank you for your time, and I appreciate your work on this repository!