Diagnostics

To use diagnostics, you must import corresponding classes and include a list of diagnostics in the Simulation:

from lcode.simulation import Simulation
from lcode.diagnostics import FXiDiag, FXiType, OutputType, ParticlesDiag
from lcode.diagnostics import SliceDiag, SliceType, SliceValue
sim = Simulation(config=config, diagnostics = [Diag1(...), Diag2(...), ...])

This section will describe what can be transferred to the diagnostics list.

Note

You can use several diagnostics of the same type, but be sure to specify a different directory_name for each.

FXiDiag

These keys control output of various quantities as functions of \(\xi\), either in the form of a graph, or in the form of a data array.

class lcode.diagnostics.FXiDiag(output_period, saving_xi_period, f_xi, output_type, probe_lines, directory_name)
  • output_period (default: 100)

  • saving_xi_period (default: 100)

  • f_xi (default: FxiType.Ez)

  • output_type (default: OutputType.NUMBERS)

  • probe_lines (default: 0)

  • directory_name (default: None)

output_period

The period at which the diagnostics is triggered. If ∆tout < ∆t, then the diagnostics is called at each time step.

saving_xi_period

The period in \(\xi\) at which data is dumped to disk.

Warning

This property is experimental. Choosing a small value may slow down program execution.

f_xi

Selecting a value to output.

  • FXiType.E: All components of the electric field. You can also select the component you want to display by using Ex, Ey, Ez, Er, Ef instead of E.

  • FXiType.B: All components of the magnetic field. You can also select the component you want to display by using Bx, By, Bz, Bf instead of B.

  • FXiType.n: Electron and ion density of the plasma. You can also select the component you want to display by using ne or ni instead of n.

  • FxiType.rho_beam: Charge density of the beam.

  • FxiType.Phi: Wakefield potential (currently only works in 3D).

FXiType is imported from lcode.diagnostics.

Note

You can combine any values: FxiType.Ez | FxiType.Bx | FxiType.n

output_type

Data output format. It can be OutputType.NUMBERS, OutputType.PICTURES or OutputType.ALL, where OutputType is imported from lcode.diagnostics.

  • OutputType.NUMBERS: Output data in the form of numpy structured array.

  • OutputType.PICTURES: Output data in the form of png plots.

  • OutputType.ALL: Two above options at once.

probe_lines

Selecting an offset in x, y (r for 2D) from the axis.

Use a number, list or np.ndarray.

  • When using the number x, the resulting shift is (x, 0) [or x in r for 2D].

  • When using a one-dimensional array [x1, x2, …], the diagnostics will output data for shifts (x1, 0), (x2, 0), … [or x1, x2, … for 2D].

  • When using a two-dimensional array [[x1, y1], [x2, y2], …], diagnostics will output data for shifts (x1, y1), (x2, y2), … [or \(r_i = \sqrt{x_i^2 + y_i^2}\) for 2D].

directory_name

Select the folder in which the diagnostics will be saved. By default, the files will be saved in the diagnostics/ folder. When you specify the example directory_name, the files will be saved along the diagnsotics/example/ path.

SliceDiag

These keys control output of various quantities as functions of 2 coordinates, either in the form of a colored map, or in the form of a data array.

class lcode.diagnostics.SliceDiag(slice_type, slice_value, output_type, limits, offset, output_period, saving_xi_period, directory_name)
  • slice_type (default: SliceType.XI_X)

  • slice_value (default: SliceValue.Ez)

  • output_type (default: OutputType.NUMBERS)

  • limits (default: [[0, inf], [-inf, inf]])

  • offset (default: 0)

  • output_period (default: 100)

  • saving_xi_period (default: 100)

  • directory_name (default: None)

slice_type

Selecting a plane (2 coordinates) for output.

  • SliceType.XI_X

  • SliceType.XI_Y

  • SliceType.X_Y

  • SliceType.XI_R [Equivalent to XI_X]

SliceType is imported from lcode.diagnostics.

slice_value

Selecting a value to output.

  • SliceValue.E: All components of the electric field. You can also select the component you want to display by using Ex (Ey, Ez, Er, Ef) instead of E.

  • SliceValue.B: All components of the magnetic field. You can also select the component you want to display by using Bx (By, Bz, Bf) instead of B.

  • SliceValue.n: Electron and ion density of plasma. You can also select the component you want to display by using ne (ni) instead of n.

  • SliceValue.rho_beam: Density of beam.

  • SliceValue.Phi: Wake potential. (currently only works in 3D)

SliceValue is imported from lcode.diagnostics.

Note

You can combine any values: SliceValue.Ez | SliceValue.Bx | SliceValue.n

output_type

Data output format. It can be OutputType.NUMBERS, OutputType.PICTURES or OutputType.ALL, where OutputType is imported from lcode.diagnostics.

  • OutputType.NUMBERS: Output data in the form of numpy structured array.

  • OutputType.PICTURES: Output data in the form of png plots.

  • OutputType.ALL: Two previous points at the same time.

limits

Selecting a subwindow for output. By default, the entire window is displayed.

You need to use a two-dimensional list, np.ndarray like [[from1, to1], [from2, to2]]. Where 1 and 2 are the coordinates corresponding to the SliceType.

If you go beyond the limits, the limit will be returned to the window border.

offset

Responsible for shifting from the axis along a coordinate that is not specified in SliceType.

For example, offset set to x for slice XI_X means x shift along the Y coordinate.

output_period

The period with which the diagnosis is triggered. If ∆tout < ∆t, then diagnostics will be called at every step.

saving_xi_period

The intermediate period with which data is flushed to disk.

Warning

This property is experimental. Changing it may slow down program execution.

directory_name

Select the folder in which the diagnostics will be saved. By default, the files will be saved in the diagnostics/ folder. When you specify the example directory_name, the files will be saved along the diagnsotics/example/ path.

ParticlesDiag

Output plasma and beam particles

class lcode.diagnostics.SliceDiag(slice_type, slice_value, output_type, limits, offset, output_period, saving_xi_period, directory_name)
  • save_beam (default: false)

  • save_plasma (default: false)

  • output_period (default: 100)

  • saving_xi_period (default: 100)

  • directory_name (default: None)

save_beam

If set to true, beam_<t>.npz files are output to diagnostics/directory_name every output_period.

save_plasma

If set to true, plasma_electrons_<t>.npz (and plasma_ions_<t>.npz for movable ions) files are output to diagnostics/directory_name every output_period.

output_period

The period with which the diagnosis is triggered. If ∆tout < ∆t, then diagnostics will be called at every step.

saving_xi_period

The intermediate period with which plasma state is flushed to disk into diagnostic/snapshot folder.

directory_name

Select the folder in which the diagnostics will be saved. By default, the files will be saved in the diagnostics/ folder. When you specify the example directory_name, the files will be saved along the diagnsotics/example/ path.