NickKarpowicz / LightwaveExplorer

An efficient, user-friendly solver for nonlinear light-matter interaction
MIT License
60 stars 8 forks source link

Enhancement of Coherence Calculation in Lightwave Explorer #45

Open 889562 opened 3 weeks ago

889562 commented 3 weeks ago

Hello, I am a second-year graduate student majoring in laser science. Recently,pulse propagation in the presence of quantum noise has been generalized to waveguides with arbitrary frequency-dependent nonlinear profiles. This specifically involves two types of coherence:

  1. Interpulse Coherence:|g_12^((1)) (λ,t_1-t_2)|=|(⟨E_i^* (λ,t_1)E_j (λ,t2)⟩(i≠j))/([⟨|E_i (λ,t_1)|^2⟩⟨|E_j (λ,t_2)|^2⟩]^(1/2) )|,
  2. Intrapulse Coherence:Γ_CEP (λ)=(|⟨E ̃_i^2 (2λ)E ̃_i^ (λ)⟩|)/(⟨|E ̃_i^2 (2λ)E ̃_i^ (λ)|⟩).

When calculating coherence, it is common practice to include quantum-limited shot noise phenomenologically. This approach is part of my code, g12, where the Unidirectional Pulse Propagation Equation (UPPE) is solved in MATLAB. However, there may still be issues, particularly when adding noise to the spatial electric field.

I would like to inquire whether this functionality could be integrated into Lightwave Explorer. I believe this feature would be very useful. If feasible, I am willing to provide the corresponding materials to support this addition.

The image is sourced from the following article: "Space-time focusing and coherence properties of supercontinua in multipass cells" Mei, Chao; Steinmeyer, Günter Physical Review Research, 03/2021, Vol. 3, Issue 1 DOI https://doi.org/10.1103/PhysRevResearch.3.013259 11 1

111

NickKarpowicz commented 2 weeks ago

Hi there! Thanks for your comment and suggestion! I have to think about how to treat this kind of thing within LWE since so far my mental picture of how the processes unfolds is with the field as a well-defined quantity in time and space. One option would be to have a different kind of batch mode where rather than performing a sweep of one parameter of the pulse, it provides some kind of expectation under variability of some parameters... Interesting concept!

889562 commented 2 weeks ago

Figure 2 Figure1 Figure3 Hi Nick, Thank you once again for your thoughtful response and for considering my suggestion. To provide further context, there have been successful applications of the generalized nonlinear Schrödinger equation in the case of one-dimensional fibers, where a similar functionality was implemented, with the noise form being one-dimensional as well. I believe the core of my code is sound, and the process is as follows: I add noise to the initial electric field in each simulation, save multiple simulation results with different noise realizations, and then use these results to plot the two types of coherence. I have also experimented with adding multi-dimensional noise to a radial symmetric electric field in both MATLAB and Mathematica, Just add a noise to each row of the radial electric field matrix or directly add a noise matrix, although further improvements may still be necessary. For reference, you may find a similar approach in this Python code: GNLStools GitHub, specifically in the file path results/numExp03_noise_model_01/pp_fig_FIG03. In MATLAB, I follow a similar method of saving results to .mat files to avoid memory issues, and it seems that the Python code linked above does the same. As I am still becoming familiar with the structure of C++ code, I was wondering whether implementing this functionality in Lightwave Explorer would be feasible, and if there might be any significant challenges in doing so. I truly believe this addition could be a valuable enhancement to Lightwave Explorer, and I sincerely appreciate your willingness to explore how it might fit into the framework. Additionally, I am currently unable to fully reproduce the k-space results (Do I need to perform row transformation first and then column transformation to obtain the result of k-space) and time-domain plots as presented in Issue #36, particularly the horizontal axis of the time-domain plot. The time-domain axis seems to differ from what is shown in the program, and I suspect that the s.timeVector may not correspond to the time coordinate moving with the group velocity. Any guidance on this would be very much appreciated. If possible, could you kindly let me know if there is any way I could access the core code for the Unidirectional Pulse Propagation Equation (UPPE)? I would be grateful if you could point me to the specific part of the LWE source code responsible for solving UPPE and plotting the results. Thank you again for your time and consideration. I look forward to hearing your thoughts. issue36_result_pictures.zip 338219397-11bace39-b6b4-4cfa-a6dd-b9a756db34be