Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add thin nonlinear plasma lens with transverse taper #562

Merged
merged 20 commits into from
May 6, 2024

Conversation

cemitch99
Copy link
Member

@cemitch99 cemitch99 commented Mar 25, 2024

Added a thin nonlinear plasma lens with transverse (horizontal) taper, as described by C. Lindstrøm. Namely:

$$B_x = g \left( y + \frac{xy}{D_x} \right), \quad \quad B_y = -g \left(x + \frac{x^2 + y^2}{2 D_x} \right)$$

where $g$ is the (linear) field gradient in T/m and $D_x$ is the targeted horizontal dispersion in m.

Inputs:

k = integrated focusing strength ( = g ds or g ds / Brho, depending on the choice of units)
taper = taper parameter = 1/Dx

  • Add thin nonlinear PL element
  • Add Python bindings
  • Add element documentation
  • Add benchmark example
  • Add example documentation

cemitch99 and others added 3 commits March 25, 2024 10:52
- Modified the initial beam size in the IOTA lens benchmark example.
- Added 2 benchmarks of 3D space charge for initial testing.
- Add documentation for 2 benchmarks with space charge.
- Add a benchmark example with space charge and periodic s-dependent focusing.
- Added an s-dependent example using a Kurth beam without space charge.
- Modified tolerance for IOTA lens benchmark example.
  Reduced tolerance to account for smaller initial beam size and
  improved preservation of invariants of motion.
- Modified tolerances of space charge examples to allow CI tests to
  pass when space charge is not active.

- Modified tolerance for space charge examples.
  These should fail unless space charge is turned on.
Selected numerical values for amr.n_cell, lattice.nslice, and geometry.prob_relative.
@cemitch99 cemitch99 requested review from ax3l and qianglbl March 25, 2024 19:48
Eliminate unused variables.
src/particles/elements/TaperedPL.H Fixed Show fixed Hide fixed
src/particles/elements/TaperedPL.H Fixed Show fixed Hide fixed
@ax3l ax3l added the component: elements Elements/external fields label Mar 25, 2024
sigma -> lambda update
sigma -> lambda update (C++ input)
Provide a large tolerance until target values are updated.
Copy link
Member

@ax3l ax3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

examples/achromatic_spectrometer/README.rst Outdated Show resolved Hide resolved
examples/achromatic_spectrometer/README.rst Outdated Show resolved Hide resolved
examples/achromatic_spectrometer/README.rst Outdated Show resolved Hide resolved
examples/achromatic_spectrometer/README.rst Outdated Show resolved Hide resolved
examples/achromatic_spectrometer/README.rst Outdated Show resolved Hide resolved
src/particles/elements/TaperedPL.H Show resolved Hide resolved
src/particles/elements/TaperedPL.H Outdated Show resolved Hide resolved
src/particles/elements/TaperedPL.H Outdated Show resolved Hide resolved
src/particles/elements/TaperedPL.H Outdated Show resolved Hide resolved
docs/source/usage/python.rst Outdated Show resolved Hide resolved
cemitch99 and others added 2 commits May 2, 2024 13:48
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Add energy spread value to README.
Copy link
Member

@ax3l ax3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀 ✨

@ax3l ax3l merged commit e11b2ce into ECP-WarpX:development May 6, 2024
16 checks passed
@ax3l ax3l mentioned this pull request May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: elements Elements/external fields
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants