rizer.misc.simulation.cable_transport#
Mid-cable electrical-signal transport via pyresiflex.
The 0D2T nanosecond-pulse model only computes electrical quantities at the
plasma end of the coaxial cable (V_p, I_p, E_p, see
rizer.misc.simulation.post_process_quantities). Some experiments
instead measure the electrical signal mid-cable.
compute_mid_cable_voltage_current_energy re-solves the same cable, given
the plasma resistance trace R_p(t) a run already produced, at an arbitrary
position along the cable, using pyresiflex (a sibling package, same
author, not otherwise a rizer dependency).
Functions#
|
Transport plasma-side voltage, current, and energy to a position along the cable. |
Module Contents#
- rizer.misc.simulation.cable_transport.compute_mid_cable_voltage_current_energy(states: cantera.SolutionArray, generator: rizer.electric_circuit.generator.PurelyResistiveBaseGenerator, cable: rizer.electric_circuit.cable.IdealCable, x: float | None = None) dict[str, numpy.ndarray]#
Transport plasma-side voltage, current, and energy to a position along the cable.
Re-solves the transmission line exactly (pyresiflex.solver.purely_resistive_solution.PurelyResistiveSolution), treating the plasma resistance trace states.R_p as an external forcing function – this does not re-run the reactor ODE, only re-derives the electrical solution at a new cable position.
- Parameters:
states (
cantera.SolutionArray) – Simulation state array with t [s] and R_p [Ohm] columns.generator (
rizer.electric_circuit.generator.PurelyResistiveBaseGenerator) – The run’s own generator (the one states.V_g was computed from), re-wrapped for pyresiflex via its R_g/generator_voltage, not reconstructed from a YAML input.cable (
rizer.electric_circuit.cable.IdealCable) – The run’s own cable, re-wrapped for pyresiflex as a PerfectCable.x (
floatorNone, optional) – Position along the cable, in meters, measured from the generator end (0 <= x <= cable.L). None (default) uses the cable midpoint, cable.L / 2.
- Returns:
“V_mid” : Voltage at x [V]. “I_mid” : Current at x [A]. “E_mid” : Cumulated energy at x [J], via pyresiflex’s own trapezoidal-rule integration of V_mid * I_mid over states.t’s own knots – no resampling.
- Return type:
dictofstrtonumpy.ndarray
Notes
states.t is anchored so the direct wave from the generator arrives at the plasma (x = cable.L) at t = 0; pyresiflex’s own clock is anchored at the generator (x = 0). The two are related by t_global = states.t + cable.L / cable.c, used internally for the plasma-resistance interpolation. The pyresiflex solve uses states.t, so that data are correctly saved (this avoids saving t_global in the output file).
PurelyResistiveSolution has no truncation option: it always sums the full reflection series, bounded only by elapsed time – the same physics as the bounce-diagram Neumann series that
NRPCircuit’s traveling-wave recursion (used by both 2T0D scripts) reproduces to infinite order via a linearly-interpolated delay buffer instead of summing the series directly. That approximation differs from this exact solution at the same cable position by a small residual – verified at ~0.0004% for a smooth TrapezoidalGenerator profile (5-6 ns rise/fall, as configured in production), up to ~0.18% for an idealized instantaneous-step generator. This is expected, not a bug: V_mid, I_mid, and E_mid computed here will not bit-exactly reproduce a hypothetical “recompute V_p via pyresiflex and compare to states.V_p” cross-check.