In this PR, the grid of the laser is decoupled from the field's grid. To facilitate this, this PR...
uses the laser geometry inside of laser functions
adds interpolation for aabs.
adds interpolation for chi.
adds a way to get chi outside the fields grid.
adds a check for laser functions if the current slice contains a laser.
adds support for the laser MPI communication to skip slices outside the laser grid.
changes the diagnostics to support getting the laser envelope on the laser grid and not the fields grid.
Test of getting chi outside the field:
Chi on the laser grid (changed diagnostic) with a slightly wrong box to transition between chi inside and outside the fields grid.
Chi on the laser grid with the correct box
Chi on the fields grid
[ ] Small enough (< few 100s of lines), otherwise it should probably be split into smaller PRs
[ ] Tested (describe the tests in the PR description)
[ ] Runs on GPU (basic: the code compiles and run well with the new module)
[ ] Contains an automated test (checksum and/or comparison with theory)
[ ] Documented: all elements (classes and their members, functions, namespaces, etc.) are documented
This would be non-backwards compatible only because of the changes to diagnostic.base_geometry. The laser should work the same if the laser box is the same as level 0 (which is the default).
In this PR, the grid of the laser is decoupled from the field's grid. To facilitate this, this PR...
Test of getting chi outside the field: Chi on the laser grid (changed diagnostic) with a slightly wrong box to transition between chi inside and outside the fields grid. Chi on the laser grid with the correct box Chi on the fields grid
const
isconst
)