picongpu icon indicating copy to clipboard operation
picongpu copied to clipboard

[WIP] Gaussian laser based on background field approach

Open BeyondEspresso opened this issue 5 years ago • 7 comments

This pull request adds a Gaussian laser based on PIConGPUs background field approach. This allows to

  • use several independent lasers simultaneously in one simulation.
  • shoot lasers into the plasma from all direction.

This is particularly interesting for simulating probe beams, such as for shadowgraphy. The code compiles, runs and has passed already a number of tests (propagation in vacuum, plasma, different angles, qualitative symmetry tests and comparison with existing laser, various angles, moving window). Although there is still plenty of work for me (see below), the code can be already used for testing and development (@PrometheusPi ).

The laser model also includes first-order corrections for ultrashort duration (fs-scale in optical probe lasers), as well as tight focusing. Also both linear polarizations are included. Arbitrary linear polarization states can be already realized using superposition.

To do:

  • [x] Need to check pulse duration interface. It is probably off by sqrt(2).
  • [ ] Test 2D implementation.
  • [ ] Test orthogonal polarization.
  • [ ] Implement additional precautions for long term stability. Phase should be calculated with double precision, as well as complex divisions.
  • [ ] Expose the carrier-envelope phase to the interface. This will allow to also include elliptically polarized lasers.
  • [ ] Discuss a more user friendly interface for lasers in fieldBackground.param without E- and B-Fields being separate.
  • [ ] Eventually shorten the mathematical boiler plate of the individual field components.

Probably for future pull requests:

  • Enable laser propagation vectors outside the y-z-plane using an additional azimuthal coordinate.
  • Enable focal positions outside the y-axis. Although the feature is straight forward, it messes with the automatic pulse delay calculation feature. The latter might be also just superfluous.

Please, feel free in testing, reviewing and contributing helpful suggestions. Particularly, I would like to know what is missing / can be improved in the

  • documentation
  • coding style
  • current best practices in coding constructs and removing workarounds (i.e. when to use PMACC_ALIGN, does precisionCast on picongpu::cellSize or casting on floatD_ work)
  • important tests
  • potential for performance improvements

Enjoy 😃 !

BeyondEspresso avatar Apr 17 '20 13:04 BeyondEspresso

Rebased to current dev.

BeyondEspresso avatar Jun 03 '20 11:06 BeyondEspresso

So the CI issue is resolved, but I assume the checkboxes are accurate and so the PR is not yet ready for review?

sbastrakov avatar Jun 03 '20 14:06 sbastrakov

@sbastrakov Yes, the checkboxes are accurate, so the PR is not yet ready for the final review. However, any suggestions and recommendations to improve the current PR are welcome. 😃

BeyondEspresso avatar Jun 03 '20 14:06 BeyondEspresso

I set this PR to draft because there is no progress.

psychocoderHPC avatar Jun 28 '21 06:06 psychocoderHPC

In case the idea was to provide explicit B and E formulas, perhaps it would be now easier as an incident field.

sbastrakov avatar Jun 28 '21 13:06 sbastrakov

@BeyondEspresso can we close this PR or is this still relevant? We have the new feature incident fields where we can define laser from all sides too. see: #3592

psychocoderHPC avatar Aug 31 '21 15:08 psychocoderHPC

@BeyondEspresso can we close this PR or is this still relevant? We have the new feature incident fields where we can define laser from all sides too. see: #3592

@sbastrakov @psychocoderHPC I'm actually using this PR at the moment, to have a second, perpendicular laser at a specific time for shadowgraphy images. But I can come to you later today (or tomorrow) to see how the migration from the background field laser to the incident fields works.

finnolec avatar Sep 01 '21 06:09 finnolec

I will close this PR since there is no reaction for 3 years.

psychocoderHPC avatar Mar 02 '23 16:03 psychocoderHPC