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 transverse kicker #410

Merged
merged 15 commits into from
Aug 9, 2023
Merged

Add transverse kicker #410

merged 15 commits into from
Aug 9, 2023

Conversation

cemitch99
Copy link
Member

@cemitch99 cemitch99 commented Aug 1, 2023

Added a thin transverse kicker element, corresponding to MAD-X elements 'hkicker', 'vkicker', 'kicker', and 'tkicker'.

  • Add element
  • Add Python equivalent
  • Add example
  • Add documentation

@cemitch99 cemitch99 requested a review from ax3l August 1, 2023 20:23
@ax3l ax3l added the component: elements Elements/external fields label Aug 2, 2023
src/particles/elements/Kicker.H Outdated Show resolved Hide resolved
src/python/elements.cpp Outdated Show resolved Hide resolved
src/particles/elements/Kicker.H Outdated Show resolved Hide resolved
src/particles/elements/Kicker.H Outdated Show resolved Hide resolved
src/particles/elements/Kicker.H Outdated Show resolved Hide resolved
@ax3l ax3l self-assigned this Aug 2, 2023
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.

Thank you, that looks great.

I added a small commit using self-describing arguments at the call site for the kicker: a C++ enum and strings when describing the unit system of the Kicker. I also clarified a few details on the normalization of the dimensionless option.

cemitch99 and others added 13 commits August 9, 2023 09:06
- 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.
This is not part of this PR.
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
cemitch99 and others added 2 commits August 9, 2023 09:08
Relax tolerance slightly.
Update the C++ API to use an enum for the unit system and
the Python API & inputs file syntax to accept a string. That
makes the parameters at the call sites self-describing.

Also clarifies in doc strings what dimensionless is referring
to (units of magnetic rigidity of the reference particle).
Copy link
Member Author

@cemitch99 cemitch99 left a comment

Choose a reason for hiding this comment

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

These changes look reasonable to me, thanks. I agree that this should make the choice of units more transparent to the user.

@ax3l ax3l merged commit 709be0b into ECP-WarpX:development Aug 9, 2023
13 checks passed
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