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

Something wrong in propagation possibly specific to IOTA #306

Open
egstern opened this issue Sep 17, 2024 · 0 comments · May be fixed by #310
Open

Something wrong in propagation possibly specific to IOTA #306

egstern opened this issue Sep 17, 2024 · 0 comments · May be fixed by #310

Comments

@egstern
Copy link
Collaborator

egstern commented Sep 17, 2024

Propagating particles all at 0 through the IOTA lattice for ten turns works with default options repository https://github.com/egstern/iota_problem tag fe3b090333a33e83508fc2400ecee8d72a7fda1f. Adding 4 spectator particles to the bunch, all particles are lost after 4 turns tag c9f5332c685abf680aa3106d0173be1a65809f28. Replacing the IOTA lattice with just a FODO allows all 10 turns again da80939f77c76f4f2f482800e6510a3a25afa357.

egstern@WL-146057:~/xyzzy$ git checkout fe3b090333a33e83508fc2400ecee8d72a7fda1f
Note: switching to 'fe3b090333a33e83508fc2400ecee8d72a7fda1f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at fe3b090 Initial application to demonstrate problem however this application allows 10 turns of propagation, unlike the original source of the problem.
egstern@WL-146057:~/xyzzy$ python iota.py
Kokkos::OpenMP::initialize WARNING: OMP_PROC_BIND environment variable not set
  In general, for best performance with OpenMP 4.0 or better set OMP_PROC_BIND=spread and OMP_PLACES=threads
  For best performance with OpenMP 3.1 set OMP_PROC_BIND=true
  For unit testing set OMP_PROC_BIND=false

Read lattice, length = 39.95567224300007, 259 elements
RF cavity frequency should be:  2186534.51809303
state:  [2.6228316936993862e-15, 5.5271381883598036e-17, 0.0, 0.0, 548.4339817538516, 0.0]
length maybe:  39.95567224300006
RF cavity:   rfcavity rfc: circular_aperture_radius=0.02500000000000000139, freq=2.186534518093030677, harmon=4, l=0.05000000000000000278, lag=0, shunt=0, volt=0.0008469999999999999881, aperture_type=circular
energy:  0.9407720459999999
momentum:  0.0685391145988896
gamma:  1.002664472431698
beta:  0.07285411475639192
IOTA lattice Twiss parameters:
beta x: 0.7929530839800709, alpha x: -1.0024078120929111e-05, x tune: 5.300059023235037
disp x: -0.25146056008195367, dprime x: 0.00157192871012215
beta y: 1.5080828234123254, alpha y: -1.1605994300541831e-08, y tune: 5.300036432022202
disp y: 0.0, dprime y: 0.0
eigenvalues:
|z|:  0.9999999999999968  z:  (-0.30937135154184836+0.9509413056783071j)  tune:  0.300059303636869
|z|:  0.9999999999999968  z:  (-0.30937135154184836-0.9509413056783071j)  tune:  -0.300059303636869
|z|:  1.0000000000000047  z:  (0.9980248194126311+0.062820855107158j)  tune:  0.010004837607696378
|z|:  1.0000000000000047  z:  (0.9980248194126311-0.062820855107158j)  tune:  -0.010004837607696378
|z|:  1.0000000000000049  z:  (-0.3092346918124168+0.9509857545619121j)  tune:  0.30003643202220165
|z|:  1.0000000000000049  z:  (-0.3092346918124168-0.9509857545619121j)  tune:  -0.30003643202220165
beam current:  0.1  mA
bunch created with  1000  macroparticles
bunch charge:  285452129459.3449
(1000, 7) ,  7000
shape: 1000, 7
mean = [0. 0. 0. 0. 0. 0.]
std = [0. 0. 0. 0. 0. 0.]
Propagator: starting turn 1, final turn 10

Propagator: turn 1/inf., time = 0.112s, macroparticles = (1000) / ()
Propagator: turn 2/inf., time = 0.350s, macroparticles = (1000) / ()
Propagator: turn 3/inf., time = 0.111s, macroparticles = (1000) / ()
Propagator: turn 4/inf., time = 0.206s, macroparticles = (1000) / ()
Propagator: turn 5/inf., time = 0.224s, macroparticles = (1000) / ()
Propagator: turn 6/inf., time = 0.148s, macroparticles = (1000) / ()
Propagator: turn 7/inf., time = 0.204s, macroparticles = (1000) / ()
Propagator: turn 8/inf., time = 0.194s, macroparticles = (1000) / ()
Propagator: turn 9/inf., time = 0.173s, macroparticles = (1000) / ()
Propagator: turn 10/inf., time = 0.165s, macroparticles = (1000) / ()
Propagator: maximum number of turns reached
Propagator: total time = 1.921s

Adding the spectator particles:

egstern@WL-146057:~/xyzzy$ git checkout c9f5332c685abf680aa3106d0173be1a65809f28
Note: switching to 'c9f5332c685abf680aa3106d0173be1a65809f28'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at c9f5332 Adding 4 spectator particle to the bunch causes full particle loss after 4 turns. These particles are all at location 0 so they should propagate through in any case.
egstern@WL-146057:~/xyzzy$ python iota.py
Kokkos::OpenMP::initialize WARNING: OMP_PROC_BIND environment variable not set
  In general, for best performance with OpenMP 4.0 or better set OMP_PROC_BIND=spread and OMP_PLACES=threads
  For best performance with OpenMP 3.1 set OMP_PROC_BIND=true
  For unit testing set OMP_PROC_BIND=false

Read lattice, length = 39.95567224300007, 259 elements
RF cavity frequency should be:  2186534.51809303
state:  [2.6228316936993862e-15, 5.5271381883598036e-17, 0.0, 0.0, 548.4339817538516, 0.0]
length maybe:  39.95567224300006
RF cavity:   rfcavity rfc: circular_aperture_radius=0.02500000000000000139, freq=2.186534518093030677, harmon=4, l=0.05000000000000000278, lag=0, shunt=0, volt=0.0008469999999999999881, aperture_type=circular
energy:  0.9407720459999999
momentum:  0.0685391145988896
gamma:  1.002664472431698
beta:  0.07285411475639192
IOTA lattice Twiss parameters:
beta x: 0.7929530839800709, alpha x: -1.0024078120929111e-05, x tune: 5.300059023235037
disp x: -0.25146056008195367, dprime x: 0.00157192871012215
beta y: 1.5080828234123254, alpha y: -1.1605994300541831e-08, y tune: 5.300036432022202
disp y: 0.0, dprime y: 0.0
eigenvalues:
|z|:  0.9999999999999968  z:  (-0.30937135154184836+0.9509413056783071j)  tune:  0.300059303636869
|z|:  0.9999999999999968  z:  (-0.30937135154184836-0.9509413056783071j)  tune:  -0.300059303636869
|z|:  1.0000000000000047  z:  (0.9980248194126311+0.062820855107158j)  tune:  0.010004837607696378
|z|:  1.0000000000000047  z:  (0.9980248194126311-0.062820855107158j)  tune:  -0.010004837607696378
|z|:  1.0000000000000049  z:  (-0.3092346918124168+0.9509857545619121j)  tune:  0.30003643202220165
|z|:  1.0000000000000049  z:  (-0.3092346918124168-0.9509857545619121j)  tune:  -0.30003643202220165
beam current:  0.1  mA
bunch created with  1000  macroparticles
bunch charge:  285452129459.3449
(1000, 7) ,  7000
shape: 1000, 7
mean = [0. 0. 0. 0. 0. 0.]
std = [0. 0. 0. 0. 0. 0.]
Propagator: starting turn 1, final turn 10

Propagator: turn 1/inf., time = 0.169s, macroparticles = (1000) / ()
Propagator: turn 2/inf., time = 0.178s, macroparticles = (1000) / ()
Propagator: turn 3/inf., time = 0.205s, macroparticles = (1000) / ()
Propagator: turn 4/inf., time = 0.212s, macroparticles = (1000) / ()
Propagator: turn 5/inf., time = 0.224s, macroparticles = (0) / ()
Propagator: turn 6/inf., time = 0.190s, macroparticles = (0) / ()
Propagator: turn 7/inf., time = 0.214s, macroparticles = (0) / ()
Propagator: turn 8/inf., time = 0.178s, macroparticles = (0) / ()
Propagator: turn 9/inf., time = 0.202s, macroparticles = (0) / ()
Propagator: turn 10/inf., time = 0.178s, macroparticles = (0) / ()
Propagator: maximum number of turns reached
Propagator: total time = 1.988s

Using the simple lattice

egstern@WL-146057:~/xyzzy$ git checkout da80939f77c76f4f2f482800e6510a3a25afa357
Note: switching to 'da80939f77c76f4f2f482800e6510a3a25afa357'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at da80939 Using a plain FODO lattice instead of the IOTA lattice allows particle propagation through all 10 turns.
egstern@WL-146057:~/xyzzy$ python iota.py
Kokkos::OpenMP::initialize WARNING: OMP_PROC_BIND environment variable not set
  In general, for best performance with OpenMP 4.0 or better set OMP_PROC_BIND=spread and OMP_PLACES=threads
  For best performance with OpenMP 3.1 set OMP_PROC_BIND=true
  For unit testing set OMP_PROC_BIND=false

Read lattice, length = 20.0, 4 elements
RF cavity frequency should be:  4368222.827646561
state:  [0.0, 0.0, 0.0, 0.0, 274.5212136181407, 0.0]
length maybe:  20.0
energy:  0.9407720459999999
momentum:  0.0685391145988896
gamma:  1.002664472431698
beta:  0.07285411475639192
IOTA lattice Twiss parameters:
beta x: 30.509802519558907, alpha x: -2.2014182866134835, x tune: 0.23144433247368534
disp x: 0.0, dprime x: 0.0
beta y: 7.550693678962674, alpha y: 0.6684703184610447, y tune: 0.23144433247368548
disp y: 0.0, dprime y: 0.0
eigenvalues:
|z|:  1.0000000000000009  z:  (0.11632474679794863+0.993211232962251j)  tune:  0.2314443324736854
|z|:  1.0000000000000009  z:  (0.11632474679794863-0.993211232962251j)  tune:  -0.2314443324736854
|z|:  1.0000000000000002  z:  (0.11632474679794805+0.9932112329622503j)  tune:  0.23144433247368548
|z|:  1.0000000000000002  z:  (0.11632474679794805-0.9932112329622503j)  tune:  -0.23144433247368548
|z|:  1.0  z:  (1+0j)  tune:  0.0
|z|:  1.0  z:  (1+0j)  tune:  0.0
beam current:  0.1  mA
bunch created with  1000  macroparticles
bunch charge:  142884408362.99728
(1000, 7) ,  7000
shape: 1000, 7
mean = [0. 0. 0. 0. 0. 0.]
std = [0. 0. 0. 0. 0. 0.]
Propagator: starting turn 1, final turn 10

Propagator: turn 1/inf., time = 0.009s, macroparticles = (1000) / ()
Propagator: turn 2/inf., time = 0.007s, macroparticles = (1000) / ()
Propagator: turn 3/inf., time = 0.008s, macroparticles = (1000) / ()
Propagator: turn 4/inf., time = 0.015s, macroparticles = (1000) / ()
Propagator: turn 5/inf., time = 0.010s, macroparticles = (1000) / ()
Propagator: turn 6/inf., time = 0.019s, macroparticles = (1000) / ()
Propagator: turn 7/inf., time = 0.006s, macroparticles = (1000) / ()
Propagator: turn 8/inf., time = 0.005s, macroparticles = (1000) / ()
Propagator: turn 9/inf., time = 0.003s, macroparticles = (1000) / ()
Propagator: turn 10/inf., time = 0.003s, macroparticles = (1000) / ()
Propagator: maximum number of turns reached
Propagator: total time = 0.103s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant