Page 1 of 1

Arbitary charge per bunch with arbitary macro-particles per bunch?

Posted: 30 Aug 2022, 07:30
by Seb_Wilkes
Hi all,

I'm scratching my head how to do this. Take for instance if we want to run hybrid mode. Right now, if we want to run a bunch with a greater charge, we have to run more particles (with CHARGE, PER_PARTICLE=1). Clearly we are concerned with the running of the single bunch with greater charge, but wish to know how long range wake effects affect the dynamics. At a minimum we would like to run every bunch with the minimum number of particles required (just with different charge specified). Perhaps a little safer still would be to specify more particles for the studied bunch in question. Afterall, the long range effects aren't as strong meaning that the exact shape and position of the other bunches isn't as essential to the calculations.

Re: Arbitary charge per bunch with arbitary macro-particles per bunch?

Posted: 02 Sep 2022, 03:44
by Siwei_Wang
I'm facing the same problem. Recently I'm doing hybrid mode filling patterns and charge variation where each bunch have different charges. Now I have to use different number of particles to distinguish the charge difference, this is fine for a standard filling pattern where the charges of different bunches are similar. But for hybrid mode filling pattern, there will be several bunches have much higher charges than the other ones, so those bunches will need much higher number of particles. This might cause a different sensitivity of the bunches to, for example, short-range impedance. It would be good if we can have the same number of particles per bunch but different charge assignment.

Re: Arbitary charge per bunch with arbitary macro-particles per bunch?

Posted: 08 Sep 2022, 05:29
by Seb_Wilkes
Hvaing dug into the source code, it strongly appears that the code is designde around the principle of the charge being fixed around the number of particles or bunches, but not either. I suspect this post is now a feature request. I can't personally think of a simple way of correctly allocating the charge.

In terms of getting some bunches to be ignored by certain elements, I am going to explore just having something like the following (taken from ztransverse.c):

Code: Select all

    long max_buckets;
    long iBucket; // index used in MB's For Loop
    if (single_bunch_only!=-1) {
        // this means you only want to affect one bunch of your choice; we only run the For loop once
        iBucket = single_bunch_only;
        max_buckets = single_bunch_only + 1;
    }
    else {
      // standard running
      iBucket = 0;
      max_buckets = nBuckets;
    }
    for (iBucket; iBucket<max_buckets; iBucket++) {...}
Will report back if I get this to work.

Re: Arbitary charge per bunch with arbitary macro-particles per bunch?

Posted: 19 Sep 2022, 13:25
by michael_borland
Seb,

There's some infrastructure in elegant to support variable weighting of simulation particles. However, implementing it consistently across the code is a big job that I haven't found time to take on.

For example, you'll note in track.h there is a definition of a quantity weightIndex. This gives the index in the particle properties array of the weight property. It just isn't used for anything.

--Michael