Skip to content

Propagator

Sajid Ali edited this page Oct 19, 2022 · 1 revision

Synergia can simulate the beam dynamics with full three-dimensional space charge effect. It implements the split-operator technique for the space charge operators. The object that employs this split-operator is the Propagator.

To create a Propagator we would need to prepare a machine lattice from the Lattice object (as shown above), and a Stepper object to split the lattice and insert the space charge operator at proper positions.

# prepare the space charge operator
sc_ops = synergia.collective.Space_charge_3d_open_hockney_options(gridx, gridy, gridz)
sc_ops.comm_group_size = 1

# we will use the split operator stepper for the propagator
stepper = synergia.simulation.Split_operator_stepper(sc_ops, num_steps)

# finally we may create the propagator with lattice and stepper
propagator = synergia.simulation.Propagator(lattice, stepper)

With both the Propagator and Bunch_simulator objects ready, we may instruct the propagator to start the propagation,

# a log object for writing out the system messages during simulation
logger = synergia.utils.parallel_utils.Logger(
    0, synergia.utils.parallel_utils.LoggerV.INFO_TURN)

# propagate for number of turns
propagator.propagate(simulator, logger, turns)
Clone this wiki locally