Dear Developers,
Hi. I was trying to implement a pulse-front-tilted laser in PIConGPU, expecting that the laser has wavefront rotation at the focus. I started an very simple simulation with the parameters attached below (basically the default parameters). The tilt angle is set to be 45 degrees. But I didn't see any pulse-front tilt or wavefront rotation in the output RNG figures:
.
It is the same as the result of another simulation in which the tilt angle is 0 (other parameters are the same). While I was expecting something like that in Fig(1d) of H. Vincenti and F. Quere, Phy. Rev. Lett. 108, 113904 (2012):
.
Could you please help me with it? Thanks in advance.
param.zip
hey @prlWanted. Generally, pulse-front tilt is not equal to a wave-front rotation. Pulse-front tilt means that the intensity envelope along the propagation direction. i.e. the temporal envelope, has an increasing time delay along the transverse coordinate. You can actually see this in your first plot, where the left edge of the pulse is delayed with respect to the right edge. The wave fronts are still perpendicular to the propagation direction, which is the y-axis!
In your plot above, the pulse-front tilt is not 45 deg at first appearance.
Possibly that is a problem of your plotting procedure.
Take care that your axes need to be equal in length in order to see the expected pulse-front tilt angle in the picture.
That is, label your spatial axes in SI units and plot equally long sections along the x and y axis.
Does this help already?
Dear @steindev, thanks for your reply. I checked the references and combining with your comment, now I think I understand. A wavefront-rotated laser is usually generated by focusing a pulse-front-tilted laser with a lens, at the focus one should be able to see the wavefront rotation. The maximum rotation angle equals to the beam waist at the input boundary divided by the focal length. Here the focal length is very short, so the rotation angle is too small to be noticed. Also it seems infeasible to set up the laser's beam waist at the input boundary in PIConGPU. I may not be able to implement the desired wavefront-rotated laser in PIConGPU.
If you know how to create it, why do you think it is infeasible? You do not need a larger simulation volume. You can use a moving window simulation where the simulation window propagates with your laser. Of course, this will take more time than the initialization period you used before, but should not consume more memory. You can select a time step at which the simulation window stops, too. If this is of interest...
But beware, in a moving window simulation, the window is smaller than the simulation volume by one "row" of gpus.
That is, if you use in your *.cfg a total of gpus_x in x direction, gpus_y in y direction, gpus_z in z direction, than the volume within the moving window will be gpus_x * (gpus_y - 1) * gpus_z. So you maybe need to increase your actual simulation volume a little to have the volume in the window as large as the volume in a simulation without moving window.
Ahh now I think I understand what you meant: You may get a problem if the laser size at the input boundary is larger than the transverse size of your simulation volume. To circumvent this, you could increase the focal distance in your setup and start with a smaller laser pulse at the boundary such that both the laser width and the rotation angle in the focus are the same as for a setup with a larger input pulse and shorter focal distance (focal width and rotation angle scale equally according to your description).
@steindev Do you think that implementing such a pulse via background fields could solve @prlWanted issue?
@steindev Do you think that implementing such a pulse via background fields could solve @prlWanted issue?
In principle yes. But he would need to know the electric and magnetic field of the pulse to implement the background field.
I am not sure if the analytic form of the magnetic field can be derived.
And you would need to manually correct for the time difference between electric field and magnetic field evaluation in the PIC loop, as the background field functor only has the (time) step number as an argument.
The same holds for the spatial coordinate since the Yee grid is staggered in space, too.
@steindev Yes, exactly. One can obtain a wave-front rotated laser by focusing a pulse-front tilted laser at the focus. But if I use the moving window to implement wave-front rotation, I need a very long simulation length and a very large input boundary, which seems unpractical.
The form of the electrical field at the focus is the spatial Fourier transform of the electrical field out of focus. But in simulations the focus needs to be placed in the simulation box(not at the boundaries). In principle, the field at the boundary can be known by inverting the field at focus. But for PIConGPU, it seems that the user can not customize the input laser just like the plasma density with a FreeFormulaFunctor or FromHDF5Param.
@steindev Do you think that implementing such a pulse via background fields could solve @prlWanted issue?
In principle yes. But he would need to know the electric and magnetic field of the pulse to implement the background field.
I am not sure if the analytic form of the magnetic field can be derived.
And you would need to manually correct for the time difference between electric field and magnetic field evaluation in the PIC loop, as the background field functor only has the (time) step number as an argument.
The same holds for the spatial coordinate since the Yee grid is staggered in space, too.
Maybe I can implement the wave-front laser by performing two simulations with PIConGPU with the same resolutions. In the first run, I use the moving window and pulse-front tilt to generate a wave-front rotated laser at focus and save the fields at focus within proper time. Because no particles are loaded, this should be very quick. While in the second run, I use a much smaller simulation box(around the focus) and import the saved fields as an input external electric and magnetic field, also place a plasma target at focus to interact with the laser. The problems are whether I can customize the space and time window to save the fields and this method can not be applied to other spatial-temporal coupled lasers(e.g. lasers with pulse-front curvature). What do you think?
Maybe I can implement the wave-front laser by performing two simulations with PIConGPU with the same resolutions. In the first run, I use the moving window and pulse-front tilt to generate a wave-front rotated laser at focus and save the fields at focus within proper time. Because no particles are loaded, this should be very quick. While in the second run, I use a much smaller simulation box(around the focus) and import the saved fields as an input external electric and magnetic field, also place a plasma target at focus to interact with the laser. The problems are whether I can customize the space and time window to save the fields and this method can not be applied to other spatial-temporal coupled lasers(e.g. lasers with pulse-front curvature). What do you think?
Well, this might work. But loading fields is at the moment only possible by restarting from a checkpoint.
But this means that you would need to create a checkpoint in your laser only simulation and restart from this checkpoint in your simulation with particles.
I see an issues with this approach at the moment.
As your laser-only simulation will have a larger volume, you can not simply restart from this checkpoint.
You would actually transfer the necessary data from a fields record in a checkpoint of one simulation to a corresponding record in a checkpoint of the other and thereby manipulate the size of the record as needed.
Furthermore, you need to restart from this checkpoint before your laser interacts with the target, as all the fields generated through this interaction will not be calculated in the laser only simulation.
I would like to reiterate what has been said before as a proposed solution to your problem.
Both the wave front rotation and the laser size in the focus scale with focal distance f over laser diameter D at the mirror, i.e. 螖尾 ~ f/D.
You can make use of that scaling in order to keep the size of the simulation box small and arrive at the expected laser width and wave front rotation in the focus.
To achieve this, you reduce the laser size D at the mirror (i.e. at the box boundary) but increase the focal length f, such that f/D remains constant.
If you perform a moving window simulation, this will only increase your time to solution by a small factor as there are no particles in the simulation until you arrive at the target.
@steindev Yes, exactly. One can obtain a wave-front rotated laser by focusing a pulse-front tilted laser at the focus. But if I use the moving window to implement wave-front rotation, I need a very long simulation length and a very large input boundary, which seems unpractical.
Just to be clear, with "simulation length" you mean time to solution and not the extent of the simulation box in laser propagation direction? If time to solution is not the problem, you can perform a "moving window" simulation.
Then your simulation box extent just needs to be as large as the laser field plus space for particle dynamics.
See for example the laser wakefield example which is a moving window simulation.
Note, there is a run time parameter to define a time step at which the moving window stops moving, which may be handy if your actual interest is in the target dynamics, e.g. when simulating laser irradiation of a foil.
The form of the electrical field at the focus is the spatial Fourier transform of the electrical field out of focus. But in simulations the focus needs to be placed in the simulation box(not at the boundaries). In principle, the field at the boundary can be known by inverting the field at focus. But for PIConGPU, it seems that the user can not customize the input laser just like the plasma density with a
FreeFormulaFunctororFromHDF5Param.
You are right, there is no FreeFormulaFunctor to provide a laser field at the boundary.
But you could rewrite any laser profile according to your needs or create a new profile.
If you have a look at the implementation of e.g. the Gaussian laser or plane wave laser, you will see that the formula to evaluate the profile at the simulation box boundary is implemented in a fashion allowing easy manipulation of the formula.
In principle, I can assist you with the implementation if you wish to do it this way.
@steindev Thanks for your replies. I double-check the principle of the wave-front rotation. Actually the maximum rotation angle and rotation speed of the laser are

where wi and ti are the beam waist and duration of the laser at the injected plane(before focus), xi is the rotation parameter which is related to the laser tilt angle 胃 by:

and f is the focus length. Also note the duration and beam waist of the PFT laser at focus are:

, where

is the usual beam waist. For the example simulation in the paper(H. Vincenti and F. Quere, Phy. Rev. Lett. 108, 113904 (2012)), wi=70 mm, f=200 mm and xi=0.36 fs/mm, so it seems reasonable that here I scale wi and f down e.g. 1000 times to wi=70 um, f=200 um, while scale xi up to 360 fs/mm (the tilt angle is 6.16 degree) to get the same wave-front rotation(胃r=20 degree, vr=7 mrad/fs).
The PFT lasers around focus with 胃=6.16 degree, 0 and -6.16 degree are as follows(f is changed to 100 um for a clear rotation):



But the problem is for PFT lasers, beam waists and durations are different in the injected plane and at focus(wi, ti and wf, tf), while in PIConGPU, the user can only define the beam waist at focus and laser duration not specified in the injected plane or at focus. So if the simulations may not be right. Is there a way to specify wi, ti, please?
You posted the relation between the initial values and "in-focus values" yourself. What is the problem with using these relations to compute the values in the focus from the initial values and initialize a laser pulse in PIConGPU with these in-focus values?
PS: Sorry for the late reply.
@steindev Hi. I think by scaling the parameters down, it is possible to realize a wave-front-rotated laser with PIConGPU.
@prlWanted and @HaoPengYY what is the status of your question?
@PrometheusPi I think we are clear about that, please close the issue.
@HaoPengYY Thanks for replying so quickly. I will close the issue.