Skip to content

Commit dda7cfb

Browse files
committed
Possibility to load bunch from file
1 parent 3d6594b commit dda7cfb

28 files changed

+289
-17
lines changed

Simulation.py

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -316,23 +316,31 @@ def init_master(self):
316316
n_macroparticles=pp.n_macroparticles_for_footprint_track, intensity=pp.intensity,
317317
epsn_x=pp.epsn_x, epsn_y=pp.epsn_y, sigma_z=pp.sigma_z)
318318
elif SimSt.first_run:
319-
self.bunch = self.machine.generate_6D_Gaussian_bunch_matched(
320-
n_macroparticles=pp.n_macroparticles, intensity=pp.intensity,
321-
epsn_x=pp.epsn_x, epsn_y=pp.epsn_y, sigma_z=pp.sigma_z)
322-
323-
# compute initial displacements
324-
inj_opt = self.machine.transverse_map.get_injection_optics()
325-
sigma_x = np.sqrt(inj_opt['beta_x']*pp.epsn_x/self.machine.betagamma)
326-
sigma_y = np.sqrt(inj_opt['beta_y']*pp.epsn_y/self.machine.betagamma)
327-
x_kick = pp.x_kick_in_sigmas*sigma_x
328-
y_kick = pp.y_kick_in_sigmas*sigma_y
329-
330-
# apply initial displacement
331-
if not pp.footprint_mode:
332-
self.bunch.x += x_kick
333-
self.bunch.y += y_kick
334-
335-
print 'Bunch initialized.'
319+
320+
if pp.bunch_from_file is not None:
321+
print 'Loading bunch from file %s ...'%pp.bunch_from_file
322+
with h5py.File(pp.bunch_from_file, 'r') as fid:
323+
self.bunch = self.buffer_to_piece(np.array(fid['bunch']).copy())
324+
print 'Bunch loaded from file.\n'
325+
326+
else:
327+
self.bunch = self.machine.generate_6D_Gaussian_bunch_matched(
328+
n_macroparticles=pp.n_macroparticles, intensity=pp.intensity,
329+
epsn_x=pp.epsn_x, epsn_y=pp.epsn_y, sigma_z=pp.sigma_z)
330+
331+
# compute initial displacements
332+
inj_opt = self.machine.transverse_map.get_injection_optics()
333+
sigma_x = np.sqrt(inj_opt['beta_x']*pp.epsn_x/self.machine.betagamma)
334+
sigma_y = np.sqrt(inj_opt['beta_y']*pp.epsn_y/self.machine.betagamma)
335+
x_kick = pp.x_kick_in_sigmas*sigma_x
336+
y_kick = pp.y_kick_in_sigmas*sigma_y
337+
338+
# apply initial displacement
339+
if not pp.footprint_mode:
340+
self.bunch.x += x_kick
341+
self.bunch.y += y_kick
342+
343+
print 'Bunch initialized.'
336344
else:
337345
print 'Loading bunch from file...'
338346
with h5py.File('bunch_status_part%02d.h5'%(SimSt.present_simulation_part-1), 'r') as fid:

Simulation_parameters.py.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ if enable_transverse_damper: n_non_parallelizable += 1
4141
# Beam Parameters #
4242
###################
4343

44+
bunch_from_file = None
45+
4446
intensity = 1.2e+11
4547

4648
epsn_x = 2.5e-6

examples/feedback_damping_time/Simulation_parameters.py renamed to examples/000_feedback_damping_time/Simulation_parameters.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
# Beam Parameters #
4242
###################
4343

44+
bunch_from_file = None
45+
4446
intensity = 1.2e+11
4547

4648
epsn_x = 2.5e-6

0 commit comments

Comments
 (0)