QuickstartĀ¶
InĀ [1]:
Copied!
import matplotlib.pyplot as plt
from genesis.version4 import Genesis4
import genesis.version4 as g4
%config InlineBackend.figure_format = 'retina' # Nicer plots
import matplotlib.pyplot as plt
from genesis.version4 import Genesis4
import genesis.version4 as g4
%config InlineBackend.figure_format = 'retina' # Nicer plots
Load an existing main input file and run Genesis4Ā¶
Load a pre-existing Genesis 4 main input file - "Example 1: Steady State" from Sven's documentation. The lattice file will be determined automatically from its &setup
namelist.
InĀ [2]:
Copied!
G = Genesis4("data/example1-steadystate/Example1.in")
G.verbose = True
G = Genesis4("data/example1-steadystate/Example1.in")
G.verbose = True
InĀ [3]:
Copied!
output = G.run()
output = G.run()
Configured to run in: /tmp/tmppbp236gs Running Genesis4 in /tmp/tmppbp236gs /home/runner/miniconda3/envs/lume-genesis-dev/bin/genesis4 -l Example1.lat genesis4.in
--------------------------------------------- GENESIS - Version 4.6.7 has started... Compile info: Compiled by conda at 2024-12-09 17:34:26 [UTC] from Git Commit ID: f166211af8ded3543c5b983d3d6d8680af6ab767 Starting Time: Mon Jan 6 22:25:39 2025 MPI-Comm Size: 1 node Opened input file genesis4.in Parsing lattice file Example1.lat ... Matching for periodic solution between z = 0 and z = 9.5 : betax (m) : 8.53711 alphax : -0.703306 phix (deg): 45.818 betay (m) : 17.3899 alphay : 1.40348 phiy (deg): 45.818 Generating input radiation field for HARM = 1 ... Generating input particle distribution... Running Core Simulation... Steady-state run Initial analysis of electron beam and radiation field... Calculation: 0% done
Calculation: 10% done
Calculation: 20% done
Calculation: 30% done
Calculation: 40% done
Calculation: 50% done
Calculation: 60% done
Calculation: 70% done
Calculation: 80% done
Calculation: 90% done
Calculation: 100% done Writing output file... Core Simulation done. End of Track Program is terminating... Ending Time: Mon Jan 6 22:25:46 2025 Total Wall Clock Time: 6.94839 seconds ------------------------------------- Success - execution took 8.13s.
LUME-Genesis offers a plotting helpers on the Genesis4 object (and Genesis4Output
itself) to work with the output data.
You can specify individual data keys to plot the output data and the layout below.
InĀ [4]:
Copied!
G.plot(["beam_xsize", "beam_ysize", "field_xsize", "field_ysize"])
G.plot(["beam_xsize", "beam_ysize", "field_xsize", "field_ysize"])
InĀ [5]:
Copied!
output.lattice.plot();
output.lattice.plot();
Beam and field sizesĀ¶
InĀ [6]:
Copied!
zplot = output.lattice.zplot
field = output.field
plt.plot(zplot, output.beam.xsize * 1e6, label=r"Beam: $\sigma_x$")
plt.plot(zplot, output.beam.ysize * 1e6, label=r"Beam: $\sigma_y$")
plt.plot(zplot, field.xsize * 1e6, label=r"Field: $\sigma_x$")
plt.plot(zplot, field.ysize * 1e6, label=r"Field: $\sigma_y$")
plt.legend()
plt.xlabel(r"$z$ (m)")
plt.ylabel(r"$\sigma_{x,y}$ ($\mu$m)")
plt.ylim([0, 60])
plt.show()
zplot = output.lattice.zplot
field = output.field
plt.plot(zplot, output.beam.xsize * 1e6, label=r"Beam: $\sigma_x$")
plt.plot(zplot, output.beam.ysize * 1e6, label=r"Beam: $\sigma_y$")
plt.plot(zplot, field.xsize * 1e6, label=r"Field: $\sigma_x$")
plt.plot(zplot, field.ysize * 1e6, label=r"Field: $\sigma_y$")
plt.legend()
plt.xlabel(r"$z$ (m)")
plt.ylabel(r"$\sigma_{x,y}$ ($\mu$m)")
plt.ylim([0, 60])
plt.show()
Make your own inputĀ¶
This section replicates the above Genesis 4-format input entirely in Python.
InĀ [7]:
Copied!
main = g4.MainInput(
[
g4.Setup(
rootname="Example1",
beamline="FEL",
gamma0=11357.82,
delz=0.045,
nbins=8,
shotnoise=False,
),
g4.LatticeNamelist(zmatch=9.5),
g4.Field(power=5000.0, waist_size=3e-05, dgrid=0.0002, ngrid=255),
g4.Beam(delgam=1.0, current=3000.0, ex=4e-07, ey=4e-07),
g4.Track(),
],
)
lattice = g4.Lattice(
{
"D1": g4.Drift(L=0.44),
"D2": g4.Drift(L=0.24),
"FEL": g4.Line(elements=["FODO"] * 6),
"FODO": g4.Line(
elements=["UND", "D1", "QF", "D2", "UND", "D1", "QD", "D2"],
),
"QD": g4.Quadrupole(L=0.08, k1=-2.0),
"QF": g4.Quadrupole(L=0.08, k1=2.0),
"UND": g4.Undulator(aw=0.84853, lambdau=0.015, nwig=266, helical=True),
}
)
main = g4.MainInput(
[
g4.Setup(
rootname="Example1",
beamline="FEL",
gamma0=11357.82,
delz=0.045,
nbins=8,
shotnoise=False,
),
g4.LatticeNamelist(zmatch=9.5),
g4.Field(power=5000.0, waist_size=3e-05, dgrid=0.0002, ngrid=255),
g4.Beam(delgam=1.0, current=3000.0, ex=4e-07, ey=4e-07),
g4.Track(),
],
)
lattice = g4.Lattice(
{
"D1": g4.Drift(L=0.44),
"D2": g4.Drift(L=0.24),
"FEL": g4.Line(elements=["FODO"] * 6),
"FODO": g4.Line(
elements=["UND", "D1", "QF", "D2", "UND", "D1", "QD", "D2"],
),
"QD": g4.Quadrupole(L=0.08, k1=-2.0),
"QF": g4.Quadrupole(L=0.08, k1=2.0),
"UND": g4.Undulator(aw=0.84853, lambdau=0.015, nwig=266, helical=True),
}
)
InĀ [8]:
Copied!
G = Genesis4(main, lattice)
G.verbose = True
G = Genesis4(main, lattice)
G.verbose = True
InĀ [9]:
Copied!
output = G.run()
output = G.run()
Configured to run in: /tmp/tmp2q_gezud Running Genesis4 in /tmp/tmp2q_gezud /home/runner/miniconda3/envs/lume-genesis-dev/bin/genesis4 -l genesis.lat genesis4.in
--------------------------------------------- GENESIS - Version 4.6.7 has started... Compile info: Compiled by conda at 2024-12-09 17:34:26 [UTC] from Git Commit ID: f166211af8ded3543c5b983d3d6d8680af6ab767 Starting Time: Mon Jan 6 22:25:48 2025 MPI-Comm Size: 1 node Opened input file genesis4.in Parsing lattice file genesis.lat ... Matching for periodic solution between z = 0 and z = 9.5 : betax (m) : 8.53711 alphax : -0.703306 phix (deg): 45.818 betay (m) : 17.3899 alphay : 1.40348 phiy (deg): 45.818 Generating input radiation field for HARM = 1 ... Generating input particle distribution... Running Core Simulation... Steady-state run Initial analysis of electron beam and radiation field... Calculation: 0% done
Calculation: 10% done
Calculation: 20% done
Calculation: 30% done
Calculation: 40% done
Calculation: 50% done
Calculation: 60% done
Calculation: 70% done
Calculation: 80% done
Calculation: 90% done
Calculation: 100% done Writing output file... Core Simulation done. End of Track Program is terminating... Ending Time: Mon Jan 6 22:25:55 2025 Total Wall Clock Time: 6.9672 seconds ------------------------------------- Success - execution took 8.14s.
InĀ [10]:
Copied!
G.plot(["beam_xsize", "beam_ysize", "field_xsize", "field_ysize"])
G.plot(["beam_xsize", "beam_ysize", "field_xsize", "field_ysize"])
View available output dataĀ¶
InĀ [11]:
Copied!
output.info()
output.info()
Out[11]:
Key | Units | Shape | Description |
---|---|---|---|
alphax | rad | (1, 1) | Twiss alpha horizontal. Evaluated only at the beginning. (output.beam.alphax) |
alphay | rad | (1, 1) | Twiss alpha vertical. Evaluated only at the beginning. (output.beam.alphay) |
aw | (1104,) | The dimensionless rms undulator parameter. For planar undulator this value is smaller by a factor $1 / \sqrt{2}$ than its K-value, while for helical undulator rms and peak values are identical. (output.lattice.aw) | |
ax | m | (1104,) | Offset of the undulator module in $x$. (output.lattice.ax) |
ay | m | (1104,) | Offset of the undulator module in $y$. (output.lattice.ay) |
beam_alphax | rad | (1, 1) | Twiss alpha horizontal. Evaluated only at the beginning. (output.beam.alphax) |
beam_alphay | rad | (1, 1) | Twiss alpha vertical. Evaluated only at the beginning. (output.beam.alphay) |
beam_betax | m | (1, 1) | Twiss beta horizontal. Evaluated only at the beginning. (output.beam.betax) |
beam_betay | m | (1, 1) | Twiss beta vertical. Evaluated only at the beginning. (output.beam.betay) |
beam_bunching | (1105, 1) | Evaluated at each integration step. [unitless] (output.beam.bunching) | |
beam_bunchingphase | rad | (1105, 1) | Evaluated at each integration step. (output.beam.bunchingphase) |
beam_current | A | (1, 1) | Beam current. Evaluated only at the beginning. (output.beam.current) |
beam_efield | eV/m | (1105, 1) | Efield, internally eloss+longESC (output.beam.efield) |
beam_emax | eV | (1105, 1) | Particle energy maximum. Genesis4 mc^2 units are automatically converted to eV in LUME-Genesis. (output.beam.emax) |
beam_emin | eV | (1105, 1) | Particle energy minimum. Genesis4 mc^2 units are automatically converted to eV in LUME-Genesis. (output.beam.emin) |
beam_emitx | m | (1, 1) | Beam horizontal emittance. Evaluated only at the beginning. (output.beam.emitx) |
beam_emity | m | (1, 1) | Beam vertical emittance. Evaluated only at the beginning. (output.beam.emity) |
beam_energy | eV | (1105, 1) | Evaluated at each integration step. Genesis4 mc^2 units are automatically converted to eV in LUME-Genesis. (output.beam.energy) |
beam_energyspread | eV | (1105, 1) | Evaluated at each integration step. Genesis4 mc^2 units are automatically converted to eV in LUME-Genesis. (output.beam.energyspread) |
beam_globals_energy | eV | (0,) | Average beam energy (output.beam.globals.energy) |
beam_globals_energyspread | (0,) | Projected energy spread [1] (output.beam.globals.energyspread) | |
beam_globals_xposition | m | (0,) | Slice average centroid X position (output.beam.globals.xposition) |
beam_globals_xsize | m | (0,) | Projected RMS beam size in X (output.beam.globals.xsize) |
beam_globals_yposition | m | (0,) | Slice average centroid Y position (output.beam.globals.yposition) |
beam_globals_ysize | m | (0,) | Projected RMS beam size in Y (output.beam.globals.ysize) |
beam_lsc_field | eV/m | (1105, 1) | Longitudinal space charge (output.beam.lsc_field) |
beam_pxmax | rad | (1105, 1) | Particle horizontal maximum momentum (output.beam.pxmax) |
beam_pxmin | rad | (1105, 1) | Particle horizontal minimum momentum (output.beam.pxmin) |
beam_pxposition | rad | (1105, 1) | Particle horizontal position in momentum space (output.beam.pxposition) |
beam_pymax | rad | (1105, 1) | Particle vertical maximum momentum (output.beam.pymax) |
beam_pymin | rad | (1105, 1) | Particle vertical minimum momentum (output.beam.pymin) |
beam_pyposition | rad | (1105, 1) | Particle vertical position in momentum space (output.beam.pyposition) |
beam_sigma_energy | eV | (1105,) | Average beam energy (output.beam.stat.sigma_energy) |
beam_sigma_x | m | (1105,) | Projected RMS beam size in X (output.beam.stat.sigma_x) |
beam_sigma_y | m | (1105,) | Projected RMS beam size in Y (output.beam.stat.sigma_y) |
beam_ssc_field | eV/m | (1105, 1) | Short-range space charge (output.beam.ssc_field) |
beam_stat_alphax | rad | (1,) | Slice-averaged by current twiss alpha horizontal. Evaluated only at the beginning. (output.beam.stat.alphax) |
beam_stat_alphay | rad | (1,) | Slice-averaged by current twiss alpha vertical. Evaluated only at the beginning. (output.beam.stat.alphay) |
beam_stat_betax | m | (1,) | Slice-averaged by current twiss beta horizontal. Evaluated only at the beginning. (output.beam.stat.betax) |
beam_stat_betay | m | (1,) | Slice-averaged by current twiss beta vertical. Evaluated only at the beginning. (output.beam.stat.betay) |
beam_stat_bunching | (1105,) | Bunching - see `OutputBeamStat.calculate_bunching` method for details. (output.beam.stat.bunching) | |
beam_stat_bunchingphase | rad | (1105,) | Bunching phase evaluated at each integration step. (output.beam.stat.bunchingphase) |
beam_stat_current | A | (1,) | [Deprecated] Beam current. Evaluated only at the beginning. (output.beam.stat.current) |
beam_stat_efield | eV/m | (1105,) | Slice-averaged by current Efield, internally eloss+longESC (output.beam.stat.efield) |
beam_stat_emitx | m | (1,) | Slice-averaged by current beam horizontal emittance. Evaluated only at the beginning. (output.beam.stat.emitx) |
beam_stat_emity | m | (1,) | Slice-averaged by current beam vertical emittance. Evaluated only at the beginning. (output.beam.stat.emity) |
beam_stat_energy | eV | (1105,) | Slice-averaged by current energy (output.beam.stat.energy) |
beam_stat_energyspread | eV | (1105,) | Slice-averaged by current energy spread (output.beam.stat.energyspread) |
beam_stat_lsc_field | eV/m | (1105,) | Slice-averaged by current longitudinal space charge (output.beam.stat.lsc_field) |
beam_stat_pxmax | rad | (1105,) | Slice-averaged by current particle horizontal maximum momentum (output.beam.stat.pxmax) |
beam_stat_pxmin | rad | (1105,) | Slice-averaged by current particle horizontal minimum momentum (output.beam.stat.pxmin) |
beam_stat_pxposition | rad | (1105,) | Slice-averaged by current particle horizontal position in momentum space (output.beam.stat.pxposition) |
beam_stat_pymax | rad | (1105,) | Slice-averaged by current particle vertical maximum momentum (output.beam.stat.pymax) |
beam_stat_pymin | rad | (1105,) | Slice-averaged by current particle vertical minimum momentum (output.beam.stat.pymin) |
beam_stat_pyposition | rad | (1105,) | Slice-averaged by current particle vertical position in momentum space (output.beam.stat.pyposition) |
beam_stat_sigma_energy | eV | (1105,) | Average beam energy (output.beam.stat.sigma_energy) |
beam_stat_sigma_x | m | (1105,) | Projected RMS beam size in X (output.beam.stat.sigma_x) |
beam_stat_sigma_y | m | (1105,) | Projected RMS beam size in Y (output.beam.stat.sigma_y) |
beam_stat_ssc_field | eV/m | (1105,) | Slice-averaged by energy short-range space charge (output.beam.stat.ssc_field) |
beam_stat_wakefield | eV/m | (1105,) | Slice-averaged by energy wakefield, internally the energy loss. (output.beam.stat.wakefield) |
beam_stat_xmax | m | (1105,) | Maximum over all slices of particle horizontal minimum position (output.beam.stat.xmax) |
beam_stat_xmin | m | (1105,) | Minimum over all slices of particle horizontal minimum position (output.beam.stat.xmin) |
beam_stat_xposition | m | (1105,) | Slice-averaged by current particle horizontal position (output.beam.stat.xposition) |
beam_stat_ymax | m | (1105,) | Slice-averaged by current particle vertical maximum position (output.beam.stat.ymax) |
beam_stat_ymin | m | (1105,) | Slice-averaged by current particle vertical minimum position (output.beam.stat.ymin) |
beam_stat_yposition | m | (1105,) | Slice-averaged by current particle vertical position (output.beam.stat.yposition) |
beam_wakefield | eV/m | (1105, 1) | Wakefield, internally the energy loss. (output.beam.wakefield) |
beam_xmax | m | (1105, 1) | Particle horizontal maximum position (output.beam.xmax) |
beam_xmin | m | (1105, 1) | Particle horizontal minimum position (output.beam.xmin) |
beam_xposition | m | (1105, 1) | Particle horizontal position (output.beam.xposition) |
beam_xsize | m | (1105, 1) | Beam horizontal sigma. (output.beam.xsize) |
beam_ymax | m | (1105, 1) | Particle vertical maximum position (output.beam.ymax) |
beam_ymin | m | (1105, 1) | Particle vertical minimum position (output.beam.ymin) |
beam_yposition | m | (1105, 1) | Particle vertical position (output.beam.yposition) |
beam_ysize | m | (1105, 1) | Beam horizontal sigma. (output.beam.ysize) |
betax | m | (1, 1) | Twiss beta horizontal. Evaluated only at the beginning. (output.beam.betax) |
betay | m | (1, 1) | Twiss beta vertical. Evaluated only at the beginning. (output.beam.betay) |
bunching | (1105, 1) | Evaluated at each integration step. [unitless] (output.beam.bunching) | |
bunchingphase | rad | (1105, 1) | Evaluated at each integration step. (output.beam.bunchingphase) |
chic_angle | degree | (1104,) | Chicane angle (output.lattice.chic_angle) |
chic_lb | m | (1104,) | Length of an individual dipole in meter. (output.lattice.chic_lb) |
chic_ld | m | (1104,) | Drift between the outer and inner dipoles, projected onto the undulator axis. The actual path length is longer by the factor $1/\cos\theta$, where $\theta$ is the bending angle of an individual dipole. (output.lattice.chic_ld) |
chic_lt | m | (1104,) | Chicane length (output.lattice.chic_lt) |
current | A | (1, 1) | Beam current. Evaluated only at the beginning. (output.beam.current) |
cx | rad | (1104,) | Kick angle in $x$ in units of $\gamma \beta_x$. (output.lattice.cx) |
cy | rad | (1104,) | Kick angle in $y$ in units of $\gamma \beta_y$. (output.lattice.cy) |
dz | m | (1104,) | Step length (output.lattice.dz) |
efield | eV/m | (1105, 1) | Efield, internally eloss+longESC (output.beam.efield) |
emax | eV | (1105, 1) | Particle energy maximum. Genesis4 mc^2 units are automatically converted to eV in LUME-Genesis. (output.beam.emax) |
emin | eV | (1105, 1) | Particle energy minimum. Genesis4 mc^2 units are automatically converted to eV in LUME-Genesis. (output.beam.emin) |
emitx | m | (1, 1) | Beam horizontal emittance. Evaluated only at the beginning. (output.beam.emitx) |
emity | m | (1, 1) | Beam vertical emittance. Evaluated only at the beginning. (output.beam.emity) |
field1_energy | J | (1105,) | Calculated by LUME-Genesis using slen from /Global. (output.field.energy) |
field1_globals_energy | J | (0,) | Field energy (output.field.globals.energy) |
field1_globals_intensity_farfield | (0,) | Field intensity in the far field [arb units] (output.field.globals.intensity_farfield) | |
field1_globals_intensity_nearfield | (0,) | Field intensity in the near field [arb units] (output.field.globals.intensity_nearfield) | |
field1_globals_xdivergence | rad | (0,) | Horizontal divergence (output.field.globals.xdivergence) |
field1_globals_xpointing | rad | (0,) | Horizontal pointing. (output.field.globals.xpointing) |
field1_globals_xposition | m | (0,) | Horizontal position. (output.field.globals.xposition) |
field1_globals_xsize | m | (0,) | Horizontal sigma. (output.field.globals.xsize) |
field1_globals_ydivergence | rad | (0,) | Vertical divergence (output.field.globals.ydivergence) |
field1_globals_ypointing | rad | (0,) | Vertical pointing. (output.field.globals.ypointing) |
field1_globals_yposition | m | (0,) | Vertical position. (output.field.globals.yposition) |
field1_globals_ysize | m | (0,) | Vertical sigma. (output.field.globals.ysize) |
field1_intensity_farfield | W/rad^2 | (1105, 1) | Field intensity in the far field [arb units] (output.field.intensity_farfield) |
field1_intensity_nearfield | W/m^2 | (1105, 1) | Field intensity in the near field [arb units] (output.field.intensity_nearfield) |
field1_peak_power | W | (1105,) | Peak power . (output.field.peak_power) |
field1_phase_farfield | rad | (1105, 1) | Far field phase (output.field.phase_farfield) |
field1_phase_nearfield | rad | (1105, 1) | Near field phase (output.field.phase_nearfield) |
field1_power | W | (1105, 1) | Power (output.field.power) |
field1_stat_energy | J | (1105,) | Power-weighted energy (output.field.stat.energy) |
field1_stat_intensity_farfield | W/rad^2 | (1105,) | Power-weighted field intensity in the far field [arb units] (output.field.stat.intensity_farfield) |
field1_stat_intensity_nearfield | W/m^2 | (1105,) | Power-weighted field intensity in the near field [arb units] (output.field.stat.intensity_nearfield) |
field1_stat_phase_farfield | rad | (1105,) | Power-weighted far field phase (output.field.stat.phase_farfield) |
field1_stat_phase_nearfield | rad | (1105,) | Power-weighted near field phase (output.field.stat.phase_nearfield) |
field1_stat_power | W | (1105,) | Power (output.field.stat.power) |
field1_stat_xdivergence | rad | (1105,) | Power-weighted horizontal divergence (output.field.stat.xdivergence) |
field1_stat_xpointing | rad | (1105,) | Power-weighted horizontal pointing. (output.field.stat.xpointing) |
field1_stat_xposition | m | (1105,) | Power-weighted horizontal position. (output.field.stat.xposition) |
field1_stat_xsize | m | (1105,) | Power-weighted horizontal sigma. (output.field.stat.xsize) |
field1_stat_ydivergence | rad | (1105,) | Power-weighted vertical divergence (output.field.stat.ydivergence) |
field1_stat_ypointing | rad | (1105,) | Power-weighted vertical pointing. (output.field.stat.ypointing) |
field1_stat_yposition | m | (1105,) | Power-weighted vertical position. (output.field.stat.yposition) |
field1_stat_ysize | m | (1105,) | Power-weighted vertical sigma. (output.field.stat.ysize) |
field1_xdivergence | rad | (1105, 1) | Horizontal divergence (output.field.xdivergence) |
field1_xpointing | rad | (1105, 1) | Horizontal pointing. (output.field.xpointing) |
field1_xposition | m | (1105, 1) | Horizontal position. (output.field.xposition) |
field1_xsize | m | (1105, 1) | Horizontal sigma. (output.field.xsize) |
field1_ydivergence | rad | (1105, 1) | Vertical divergence (output.field.ydivergence) |
field1_ypointing | rad | (1105, 1) | Vertical pointing. (output.field.ypointing) |
field1_yposition | m | (1105, 1) | Vertical position. (output.field.yposition) |
field1_ysize | m | (1105, 1) | Vertical sigma. (output.field.ysize) |
field_energy | J | (1105,) | Calculated by LUME-Genesis using slen from /Global. (output.field.energy) |
field_globals_energy | J | (0,) | Field energy (output.field.globals.energy) |
field_globals_intensity_farfield | (0,) | Field intensity in the far field [arb units] (output.field.globals.intensity_farfield) | |
field_globals_intensity_nearfield | (0,) | Field intensity in the near field [arb units] (output.field.globals.intensity_nearfield) | |
field_globals_xdivergence | rad | (0,) | Horizontal divergence (output.field.globals.xdivergence) |
field_globals_xpointing | rad | (0,) | Horizontal pointing. (output.field.globals.xpointing) |
field_globals_xposition | m | (0,) | Horizontal position. (output.field.globals.xposition) |
field_globals_xsize | m | (0,) | Horizontal sigma. (output.field.globals.xsize) |
field_globals_ydivergence | rad | (0,) | Vertical divergence (output.field.globals.ydivergence) |
field_globals_ypointing | rad | (0,) | Vertical pointing. (output.field.globals.ypointing) |
field_globals_yposition | m | (0,) | Vertical position. (output.field.globals.yposition) |
field_globals_ysize | m | (0,) | Vertical sigma. (output.field.globals.ysize) |
field_intensity_farfield | W/rad^2 | (1105, 1) | Field intensity in the far field [arb units] (output.field.intensity_farfield) |
field_intensity_nearfield | W/m^2 | (1105, 1) | Field intensity in the near field [arb units] (output.field.intensity_nearfield) |
field_peak_power | W | (1105,) | Peak power . (output.field.peak_power) |
field_phase_farfield | rad | (1105, 1) | Far field phase (output.field.phase_farfield) |
field_phase_nearfield | rad | (1105, 1) | Near field phase (output.field.phase_nearfield) |
field_power | W | (1105, 1) | Power (output.field.power) |
field_stat_energy | J | (1105,) | Power-weighted energy (output.field.stat.energy) |
field_stat_intensity_farfield | W/rad^2 | (1105,) | Power-weighted field intensity in the far field [arb units] (output.field.stat.intensity_farfield) |
field_stat_intensity_nearfield | W/m^2 | (1105,) | Power-weighted field intensity in the near field [arb units] (output.field.stat.intensity_nearfield) |
field_stat_phase_farfield | rad | (1105,) | Power-weighted far field phase (output.field.stat.phase_farfield) |
field_stat_phase_nearfield | rad | (1105,) | Power-weighted near field phase (output.field.stat.phase_nearfield) |
field_stat_power | W | (1105,) | Power (output.field.stat.power) |
field_stat_xdivergence | rad | (1105,) | Power-weighted horizontal divergence (output.field.stat.xdivergence) |
field_stat_xpointing | rad | (1105,) | Power-weighted horizontal pointing. (output.field.stat.xpointing) |
field_stat_xposition | m | (1105,) | Power-weighted horizontal position. (output.field.stat.xposition) |
field_stat_xsize | m | (1105,) | Power-weighted horizontal sigma. (output.field.stat.xsize) |
field_stat_ydivergence | rad | (1105,) | Power-weighted vertical divergence (output.field.stat.ydivergence) |
field_stat_ypointing | rad | (1105,) | Power-weighted vertical pointing. (output.field.stat.ypointing) |
field_stat_yposition | m | (1105,) | Power-weighted vertical position. (output.field.stat.yposition) |
field_stat_ysize | m | (1105,) | Power-weighted vertical sigma. (output.field.stat.ysize) |
field_xdivergence | rad | (1105, 1) | Horizontal divergence (output.field.xdivergence) |
field_xpointing | rad | (1105, 1) | Horizontal pointing. (output.field.xpointing) |
field_xposition | m | (1105, 1) | Horizontal position. (output.field.xposition) |
field_xsize | m | (1105, 1) | Horizontal sigma. (output.field.xsize) |
field_ydivergence | rad | (1105, 1) | Vertical divergence (output.field.ydivergence) |
field_ypointing | rad | (1105, 1) | Vertical pointing. (output.field.ypointing) |
field_yposition | m | (1105, 1) | Vertical position. (output.field.yposition) |
field_ysize | m | (1105, 1) | Vertical sigma. (output.field.ysize) |
frequency | eV | (1,) | Frequency (output.globals.frequency) |
globals_frequency | eV | (1,) | Frequency (output.globals.frequency) |
globals_s | m | (1,) | Longitudinal position (output.globals.s) |
gradx | 1/m | (1104,) | Relative transverse gradient of undulator field in $x$ $\equiv (1/a_w) \partial a_w/\partial x$. (output.lattice.gradx) |
grady | 1/m | (1104,) | Relative transverse gradient of undulator field in $y$ $\equiv (1/a_w) \partial a_w/\partial y$. (output.lattice.grady) |
ku | 1/m | (1104,) | Ku (output.lattice.ku) |
kx | (1104,) | Roll-off parameter of the quadratic term of the undulator field in x. It is normalized with respect to $k_u^2$. (output.lattice.kx) | |
ky | (1104,) | Roll-off parameter of the quadratic term of the undulator field in y. (output.lattice.ky) | |
lattice_aw | (1104,) | The dimensionless rms undulator parameter. For planar undulator this value is smaller by a factor $1 / \sqrt{2}$ than its K-value, while for helical undulator rms and peak values are identical. (output.lattice.aw) | |
lattice_ax | m | (1104,) | Offset of the undulator module in $x$. (output.lattice.ax) |
lattice_ay | m | (1104,) | Offset of the undulator module in $y$. (output.lattice.ay) |
lattice_chic_angle | degree | (1104,) | Chicane angle (output.lattice.chic_angle) |
lattice_chic_lb | m | (1104,) | Length of an individual dipole in meter. (output.lattice.chic_lb) |
lattice_chic_ld | m | (1104,) | Drift between the outer and inner dipoles, projected onto the undulator axis. The actual path length is longer by the factor $1/\cos\theta$, where $\theta$ is the bending angle of an individual dipole. (output.lattice.chic_ld) |
lattice_chic_lt | m | (1104,) | Chicane length (output.lattice.chic_lt) |
lattice_cx | rad | (1104,) | Kick angle in $x$ in units of $\gamma \beta_x$. (output.lattice.cx) |
lattice_cy | rad | (1104,) | Kick angle in $y$ in units of $\gamma \beta_y$. (output.lattice.cy) |
lattice_dz | m | (1104,) | Step length (output.lattice.dz) |
lattice_gradx | 1/m | (1104,) | Relative transverse gradient of undulator field in $x$ $\equiv (1/a_w) \partial a_w/\partial x$. (output.lattice.gradx) |
lattice_grady | 1/m | (1104,) | Relative transverse gradient of undulator field in $y$ $\equiv (1/a_w) \partial a_w/\partial y$. (output.lattice.grady) |
lattice_ku | 1/m | (1104,) | Ku (output.lattice.ku) |
lattice_kx | (1104,) | Roll-off parameter of the quadratic term of the undulator field in x. It is normalized with respect to $k_u^2$. (output.lattice.kx) | |
lattice_ky | (1104,) | Roll-off parameter of the quadratic term of the undulator field in y. (output.lattice.ky) | |
lattice_phaseshift | rad | (1104,) | Phase shift in radians. (output.lattice.phaseshift) |
lattice_qf | 1/m^2 | (1104,) | Quadrupole focusing strength in $1/m^2$ (output.lattice.qf) |
lattice_qx | m | (1104,) | Quadrupole offset in $x$ in meters. (output.lattice.qx) |
lattice_qy | m | (1104,) | Quadrupole offset in $y$ in meters. (output.lattice.qy) |
lattice_slippage | (1104,) | Lattice slippage. [1] (output.lattice.slippage) | |
lattice_z | m | (1104,) | Step Z position in m. The same length and describes the lattice quantities from the position ``.z[i]`` to ``.z[i]+.dz[i]`` of the i-th integration step. (output.lattice.z) |
lattice_zplot | m | (1105,) | For plotting the beam or field parameters along the undulator. (output.lattice.zplot) |
lsc_field | eV/m | (1105, 1) | Longitudinal space charge (output.beam.lsc_field) |
meta_beamdumps_intstep | (0,) | Integration step (output.meta.beamdumps.intstep) | |
meta_fielddumps_intstep | (0,) | Integration step (output.meta.fielddumps.intstep) | |
peak_power | W | (1105,) | Peak power . (output.field.peak_power) |
phase_farfield | rad | (1105, 1) | Far field phase (output.field.phase_farfield) |
phase_nearfield | rad | (1105, 1) | Near field phase (output.field.phase_nearfield) |
phaseshift | rad | (1104,) | Phase shift in radians. (output.lattice.phaseshift) |
power | W | (1105, 1) | Power (output.field.power) |
pxmax | rad | (1105, 1) | Particle horizontal maximum momentum (output.beam.pxmax) |
pxmin | rad | (1105, 1) | Particle horizontal minimum momentum (output.beam.pxmin) |
pxposition | rad | (1105, 1) | Particle horizontal position in momentum space (output.beam.pxposition) |
pymax | rad | (1105, 1) | Particle vertical maximum momentum (output.beam.pymax) |
pymin | rad | (1105, 1) | Particle vertical minimum momentum (output.beam.pymin) |
pyposition | rad | (1105, 1) | Particle vertical position in momentum space (output.beam.pyposition) |
qf | 1/m^2 | (1104,) | Quadrupole focusing strength in $1/m^2$ (output.lattice.qf) |
qx | m | (1104,) | Quadrupole offset in $x$ in meters. (output.lattice.qx) |
qy | m | (1104,) | Quadrupole offset in $y$ in meters. (output.lattice.qy) |
s | m | (1,) | Longitudinal position (output.globals.s) |
slippage | (1104,) | Lattice slippage. [1] (output.lattice.slippage) | |
ssc_field | eV/m | (1105, 1) | Short-range space charge (output.beam.ssc_field) |
wakefield | eV/m | (1105, 1) | Wakefield, internally the energy loss. (output.beam.wakefield) |
xmax | m | (1105, 1) | Particle horizontal maximum position (output.beam.xmax) |
xmin | m | (1105, 1) | Particle horizontal minimum position (output.beam.xmin) |
ymax | m | (1105, 1) | Particle vertical maximum position (output.beam.ymax) |
ymin | m | (1105, 1) | Particle vertical minimum position (output.beam.ymin) |
z | m | (1104,) | Step Z position in m. The same length and describes the lattice quantities from the position ``.z[i]`` to ``.z[i]+.dz[i]`` of the i-th integration step. (output.lattice.z) |
zplot | m | (1105,) | For plotting the beam or field parameters along the undulator. (output.lattice.zplot) |
InĀ [12]:
Copied!
output["beam_energy"]
output["beam_energy"]
Out[12]:
array([[5.80383410e+09], [5.80383410e+09], [5.80383410e+09], ..., [5.80353021e+09], [5.80353021e+09], [5.80353021e+09]], shape=(1105, 1))
Archive the results to an HDF5 fileĀ¶
InĀ [13]:
Copied!
G.archive("quickstart-results.h5")
G.archive("quickstart-results.h5")
InĀ [14]:
Copied!
restored = Genesis4.from_archive("quickstart-results.h5")
restored = Genesis4.from_archive("quickstart-results.h5")
InĀ [15]:
Copied!
restored.output.plot()
restored.output.plot()
InĀ [16]:
Copied!
G == restored
G == restored
Out[16]:
True