Using Laser pulses
Introduction
Users may optionally define an arbitrary number of laser pulses to be added to the simulation. Each laser pulse is added through a call to the sim_add_laser() routine:
void sim_add_laser( t_simulation* sim, t_emf_laser* laser)
This routine should be called inside sim_init(), somewhere after the call to sim_new(), e.g.:
void sim_init( t_simulation* sim ){
//...
// Initialize Simulation data
sim_new( sim, nx, box, dt, tmax, ndump, species, n_species );
// Add laser pulse (this must come after sim_new)
t_emf_laser laser = {
.start = 17.0,
.fwhm = 2.0,
.a0 = 2.0,
.omega0 = 10.0,
.polarization = M_PI_2
};
sim_add_laser( sim, &laser );
// ...
}
Laser pulse parameters - 1D
Laser pulse parameters are specified by a t_emf_laser variable supplied to the sim_add_laser() function. In 1D the t_emf_laser structure has the following fields:
| Laser parameters | Description |
|---|---|
| type | PLANE for a plane wave or GAUSSIAN for a gaussian beam |
| start | Front edge of the laser pulse |
| fwhm | FWHM of the laser pulse duration |
| rise, flat, fall | Rise / flat / fall time of the laser pulse |
| a0 | Normalized peak vector potential of the pulse |
| omega0 | Laser frequency |
| polarization | Laser polarization angle, 0 aligns $E$ field along $x_2$ |
| W0 | Gaussian beam waist |
| focus | Focal plane position |
| axis | Position of the optical axis |
All parameters are in normalized simulation units except for the normalized peak vector potential, $a_0$, which is adimensional.
Using the fwhm parameter will override the rise, flat and fall parameters. Specifically, it sets rise = fwhm/2, flat = 0, and fall = fwhm/2.
The following example launches a laser starting at position 17.0, with a (temporal) full width at half max of 2.0. The peak normalized vector potential is 2.0, and the laser frequency is 10.0. The polarization degree is $\pi/2$, which aligns the $E$ field along the $x_3$ direction. All values are in normalized simulation units.
t_emf_laser laser = {
.start = 17.0,
.fwhm = 2.0,
.a0 = 2.0,
.omega0 = 10.0,
.polarization = M_PI_2
};
sim_add_laser( sim, &laser );
Laser pulse parameters - 2D
In 2D ZPIC also supports Gaussian beam laser pulses (besides plane wave pulses). The t_emf_laser structure has the additional fields:
| Laser parameters | Description |
|---|---|
| type | PLANE (default) for a plane wave or GAUSSIAN for a gaussian beam |
| W0 | Gaussian beam waist |
| focus | Focal plane position |
| axis | Position of the optical axis |
All parameters are in normalized simulation units. The following is a 2D example of a gaussian laser pulse. It uses the same parameters as the previous example, set the beam focus waist to $W_0=4.0$, the focal plane position to $x=20.0$, and the propagation axis to $y=12.8$.
t_emf_laser laser = {
.type = GAUSSIAN,
.start = 17.0,
.fwhm = 2.0,
.a0 = 2.0,
.omega0 = 10.0,
.W0 = 4.0,
.focus = 20.0,
.axis = 12.8,
.polarization = M_PI_2
};
sim_add_laser( sim, &laser );