somersalo module

Produce the Somersalo plots.

Numerical implementation of the work from Somersalo et al. [SYOPS98].

somersalo_base_plot(xlim=(0.0, 3.5), ylim_one_point=(7.4, 9.2), ylim_two_point=(9.1, 11.0), **fig_kw)[source]

Create base figure and axes for Somersalo.

Parameters:
  • xlim (tuple[float, float], default: (0.0, 3.5)) – Limits for the x axis. The default matches the figure from Somersalo’s paper.

  • ylim_one_point (tuple[float, float], default: (7.4, 9.2)) – Limits for the one-point (left) y axis. The default matches the figure from Somersalo’s paper.

  • ylim_two_point (tuple[float, float], default: (9.1, 11.0)) – Limits for the two-point (right) y axis. The default matches the figure from Somersalo’s paper.

  • fig_kw – Other keyword arguments passed to the Figure constructor.

Return type:

tuple[Figure, Axes, Axes]

Returns:

Figure, left and right Axis.

webdplotdigitizerpoints_to_data(log_power, x_0, x_1, y_0, y_1)[source]

Fit the webplot points and compute Somersalo curve.

Parameters:
Return type:

ndarray[tuple[Any, ...], dtype[double]]

_one_point_analytical(log_power, order)[source]

Compute one-point multipactor bands of order order.

Note

For now, use data manually extracted from Somersalo’s fig.

Parameters:
Return type:

DataFrame

Returns:

Lower and upper multipactor limits, in \((\mathrm{GHz} \times \mathrm{mm})^4 \times \Omega\).

_two_point_analytical(log_power, order)[source]

Compute two-point multipactor bands of order order.

Note

For now, use data manually extracted from Somersalo’s fig.

Parameters:
Return type:

DataFrame

Returns:

Lower and upper multipactor limits, in \((\mathrm{GHz} \times \mathrm{mm})^4 \times \Omega^2\).

plot_somersalo_analytical(points, log_power, orders, ax, **plot_kw)[source]

Compute and plot single Somersalo plot, several orders.

Parameters:
Return type:

None

_somersalo_coordinates(powers_kw, d_mm, freq_ghz, z_ohm, mp_test_name)[source]

Convert measured data to coordinates for Somersalo plot.

Parameters:
Return type:

DataFrame

plot_somersalo_measured(mp_test_name, susceptibility_df, ax1, ax2, **plot_kw)[source]

Plot the data on Somersalo plot.

Parameters:
Return type:

None

somersalo_scaling_law(reflected, p_tw)[source]

Compute \(P_{MW} = f(P_{TW}, R)\).

Somersalo et al. [SYOPS98] link the mixed wave (\(MW\)) forward power with the traveling wave (\(TW\)) forward power through reflection coefficient \(R\).

\[P_\mathrm{MW} \sim \frac{1}{(1 + R)^2}P_\mathrm{TW}\]
Parameters:
  • reflected (ndarray) – Reflection coefficient.

  • p_tw (float) – Traveling Wave lower threshold (power).

Return type:

ndarray

Returns:

Mixed Wave lower threshold.

fit_somersalo_scaling(df_low, full_output, plot, axes=None, ls='--', p_col='lower', freq_mhz=None, **fit_plot_kw)[source]

Fit the Somersalo scaling law over measurements.

Parameters:
  • df_low (DataFrame) – DataFrame holding reflection coefficient and forward power. We take the proper columns by looking for 'ReflectionCoefficient' and 'ForwardPower' column names.

  • full_output (bool) – To ask for more detailed information on the fit process.

  • plot (bool) – To plot the fitted scaling law or not.

  • axes (Axes | None, default: None) – Axes on which scaling law will be drawn. If not provided, a new Axe will be created.

  • ls (str, default: '--') – Linestyle for the fit line.

  • p_col (str, default: 'lower') – Subset of the column name holding lower threshold.

  • freq_mhz (str | None, default: None) – Label added to the legend. This string already has an unit.

Return type:

DataFrame

Returns:

Holds the fitted Somersalo scaling law.