Closed bruhwiler closed 1 year ago
A secondary consideration is where on the cell (side, vertices, center) are the E-field values are known. Initially, we can assume they are known in the cell centers.
Start by creating a notebook to demonstrate.
In the LaserPulseSlice constructor, the ds variable should be self.ds so that the slice length can be obtained. For now, a work around is to use self.num_sig_long, self.sig_s and the number of slices to calculate this externall.
pulseE is specified in the params object for LaserPulseSlice, which I think is kind of strange. It would be more natural to specify the energy in the LaserPulse as a whole, although either approach can work.
Our working model is that slices do not have longitudinal structure, so one must assume each slice is a flat top. If one specifies a single slice, then this is obviously wrong. However, maybe that's OK, because a single-slice representation is not going to be accurate in any case. We want the algorithm to work well in the limit that N >> 1
@k-wolfinger -- please check whether the wavefront intensity that results from a single-slice instantiation is consistent with the user-specified value of self.pulseE
Neither the LaserPulse nor the LaserPulseSlice constructors are creating a data member from pulseE, so it is not possible to query a pulse or a slice for its energy.
Currently not passing information on the pulse length to srw. Fix this by multiplying pulseE by a factor proportional to the length of the slice.
We've decided to use the 'arbitrary units' setting in SRW, so that we can use SI units for our calculations.
The following sub-issues need to be resolved: