rizer.models.hybrid.isomass_lte_discharge#

Classes#

IsomassLTEDischarge

Constant mass discharge in local thermodynamic equilibrium (LTE).

Functions#

load_isomass_lte_discharge_from_dict(→ IsomassLTEDischarge)

Load a IsomassLTEDischarge model from an input dictionary.

Module Contents#

class rizer.models.hybrid.isomass_lte_discharge.IsomassLTEDischarge(lte_data: rizer.io.lte.thermo_transport_data_reader.ThermoTransportDataReader, radiation_data: rizer.io.lte.radiation_data_reader.RadiationDataReader, pressure: float, L_gap: float, r_0: float, T_0: float, T_gas: float, T_electrode: float, h_cc_gas: float, h_cc_electrode: float, factor_radiation: float = 1.0, gas: cantera.Solution | None = None)#

Constant mass discharge in local thermodynamic equilibrium (LTE).

The low-voltage (LV) phase of a GGL discharge is modeled by this class.

The main assumptions of this model are:

  1. The plasma discharge is a cylinder of constant length, whose radius changes based on temperature.

  2. The discharge is considered as a closed system (the mass is constant).

  3. The plasma is in local thermodynamic equilibrium (LTE).

  4. The pressure is constant.

  5. The temperature is uniform within the plasma channel. Same goes for other properties.

  6. Outside the plasma channel, the gas is at ambient temperature.

  7. The plasma channel gains energy from Joule heating and loses energy through radiation and conduction.

  8. An electrical circuit with a voltage source, wire resistance, and inductance drives the injected power.

This model can simulate hybrid discharges, if it is coupled with a model for the NRP phase. For instance, the initial temperature can be set to the last temperature reached during the NRP phase. See rizer.models.nrp.roger_model.RogerModel for an example of such NRP plasma.

Parameters:
  • lte_data (ThermoTransportDataReader) –

    Thermo-transport data for the plasma, including properties such as:

    • density as a function of temperature,

    • electrical conductivity as a function of temperature,

    • enthalpy as a function of temperature, and vice versa.

  • radiation_data (RadiationDataReader) –

    Radiation data for the plasma, including properties such as:

    • net emission coefficient (NEC) as a function of temperature.

  • pressure (float) – Pressure of the plasma, assumed constant [Pa].

  • L_gap (float) – Length of the plasma channel (gap between electrodes, assumed constant) [m].

  • r_0 (float) – Initial radius of the plasma channel [m].

  • T_0 (float) – Initial temperature of the plasma channel [K].

  • T_gas (float) – Temperature of the gas surrounding the plasma channel [K].

  • T_electrode (float) – Temperature of the electrodes [K].

  • h_cc_gas (float) – Effective heat transfer coefficient for conductive-convective losses to the gas [W/(m^2.K)].

  • h_cc_electrode (float) – Effective heat transfer coefficient for conductive-convective losses to the electrode [W/(m^2.K)].

  • factor_radiation (float, optional) – Scaling factor for the radiative power loss [-]. Default is 1.0.

  • gas (cantera.Solution or None, optional) – Cantera plasma phase used only by get_electron_density(), to compute the equilibrium electron density at a given temperature (e.g. rizer.misc.ct_utils.load_goutier2025_mechanism()). Default None, in which case get_electron_density() cannot be called.

Examples

Tutorial 6 — Driving the same low-voltage discharge with two different circuits.

Tutorial 6 — Driving the same low-voltage discharge with two different circuits.
lte_data#

Thermo-transport data for the plasma, including properties such as:

  • density as a function of temperature,

  • electrical conductivity as a function of temperature,

  • enthalpy as a function of temperature, and vice versa.

radiation_data#

Radiation data for the plasma, including properties such as:

  • net emission coefficient (NEC) as a function of temperature.

P#

Pressure of the plasma, assumed constant [Pa].

L_gap#

Length of the plasma channel (gap between electrodes, assumed constant) [m].

r_0#

Initial radius of the plasma channel [m].

S_tr_0#

Initial transverse surface area of the plasma channel [m^2].

V_0#

Initial volume of the plasma channel [m^3].

T_0#

Initial temperature of the plasma channel [K].

m_0#

Mass of the plasma channel, assumed constant [kg].

T_gas#

Temperature of the gas surrounding the plasma channel [K].

T_electrode#

Temperature of the electrodes [K].

h_cc_gas#

Effective heat transfer coefficient for conductive-convective losses to the gas [W/(m^2.K)].

h_cc_electrode#

Effective heat transfer coefficient for conductive-convective losses to the electrode [W/(m^2.K)].

factor_radiation = 1.0#

Scaling factor for the radiative power loss [-].

gas = None#

Cantera plasma phase used by get_electron_density(), or None.

times: numpy.ndarray | None = None#
temperatures: numpy.ndarray | None = None#
currents: numpy.ndarray | None = None#
get_volume(T: float) → float#

Calculate the volume of the plasma channel based on the temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Volume in cubic meters.

Return type:

float

Notes

The volume is calculated assuming the mass of the plasma channel remains constant:

\[V(T) = \frac{m_0}{\rho(T)}\]

where:

  • \(m_0\) is the initial mass of the plasma channel.

  • \(\rho(T)\) is the mass density at temperature T, obtained from LTE data.

get_transverse_surface(T: float) → float#

Calculate the surface area of the plasma channel based on the temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Surface area in square meters.

Return type:

float

Notes

The transverse surface area of a cylindrical channel is given by:

\[S_{tr} = \pi r^2 = \frac{V}{L_{gap}}\]

where:

  • \(V\) is the volume of the plasma channel at temperature T.

  • \(L_{gap}\) is the length of the plasma channel (gap between electrodes).

get_diameter(T: float) → float#

Calculate the diameter of the plasma channel based on the temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Diameter in meters.

Return type:

float

Notes

The diameter is calculated from the transverse surface area:

\[d = 2 \sqrt{\frac{S_{tr}}{\pi}}\]

where \(S_{tr}\) is the transverse surface area at temperature T.

get_radius(T: float) → float#

Calculate the radius of the plasma channel based on the temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Radius in meters.

Return type:

float

Notes

The radius is half the diameter:

\[r = \frac{d}{2}\]
get_lateral_surface(T: float) → float#

Calculate the lateral surface area of the plasma channel based on the temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Lateral surface area in square meters.

Return type:

float

Notes

The lateral surface area of a cylindrical channel is given by:

\[S_{lat} = \pi d L_{gap}\]

where:

  • \(d\) is the diameter of the plasma channel at temperature T.

  • \(L_{gap}\) is the length of the plasma channel (gap between electrodes).

get_plasma_resistance(T: float) → float#

Calculate the plasma resistance based on the temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Resistance in Ohms.

Return type:

float

Notes

The plasma resistance is calculated using the formula:

\[R_p(T) = \frac{L_{gap}}{\sigma(T) S_{tr}(T)}\]

where:

  • \(L_{gap}\) is the length of the plasma channel (gap between electrodes).

  • \(\sigma(T)\) is the electrical conductivity at temperature T, obtained from LTE data.

  • \(S_{tr}(T)\) is the transverse surface area at temperature T.

get_electron_density(T: float) → float#

Calculate the equilibrium electron density at the given temperature.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Electron number density in m^-3.

Return type:

float

Raises:

ValueError – If the circuit was constructed without a gas phase.

Notes

The plasma is assumed to be in local thermodynamic equilibrium, so the electron density follows from equilibrating the Cantera gas phase at (T, P):

\[n_e(T) = X_{e^-}(T) \frac{P}{k_b T}\]

where \(X_{e^-}(T)\) is the electron mole fraction at equilibrium and \(P\) is the (constant) pressure. Mirrors ThermalSpark’s use of a live equilibrate(“TP”) call.

get_plasma_joule_power(T: float, i: float) → float#

Calculate the Joule power in the plasma channel based on the temperature.

Parameters:
  • T (float) – Temperature in Kelvin.

  • i (float) – Current in Amperes.

Returns:

Power in Watts.

Return type:

float

Notes

The Joule power is calculated using the formula:

\[P_{joule}(T, I) = R_p(T) I^2\]

where:

  • \(R_p(T)\) is the plasma resistance at temperature T.

  • \(I\) is the current through the plasma channel.

get_radiative_power(T: float) → float#

Calculate the radiative power in the plasma channel based on the temperature.

The radiative power is calculated using the net emission coefficient (NEC) from the radiation data.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Power in Watts.

Return type:

float

Notes

The radiative power is calculated using the formula:

\[P_{rad}(T) = factor_{radiation} \cdot 4 \pi \cdot NEC(T) \cdot V(T)\]

where:

  • \(factor_{radiation}\) is a scaling factor for the radiative power loss [-].

  • \(NEC(T)\) is the net emission coefficient at temperature T [W/(m^3·sr)].

  • \(V(T)\) is the volume of the plasma channel at temperature T [m^3]

  • \(4 \pi\) accounts for the integration over all solid angles.

get_plasma_cc_gas_power(T: float) → float#

Calculate the conductive-convective power loss to the gas surrounding the plasma channel.

The conductive-convective power loss with gas is modeled using Newton’s law of heat conduction.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Power in Watts.

Return type:

float

Notes

The conductive power is calculated using the formula:

\[P_{cond}(T) = h^{\text{cc, gas}} \cdot S_{lat}(T) \cdot (T - T_{gas})\]

where:

  • \(h^{\text{cc, gas}}\) is the effective heat transfer coefficient for conductive-convective losses to the gas [W/(m^2·K)],

  • \(S_{lat}(T) = 2 \pi r(T) L_{gap}\) is the lateral surface area of the plasma channel at temperature T [m^2],

  • \(T\) is the temperature of the plasma channel [K],

  • \(T_{gas}\) is the ambient temperature surrounding the plasma channel [K], assumed constant.

get_plasma_cc_electrode_power(T: float) → float#

Calculate the conductive power loss to the electrodes.

Conduction to the electrode is modeled using Newton’s law of heat conduction.

Parameters:

T (float) – Temperature in Kelvin.

Returns:

Power in Watts.

Return type:

float

Notes

The conductive power loss to the electrode is calculated using the formula:

\[P_{cond\_electrode}(T) = h^{\text{cc, electrode}} \cdot S_{tr} \cdot (T - T_{electrode}) \cdot 2\]

where:

  • \(h^{\text{cc, electrode}}\) is the effective heat transfer coefficient for conductive losses to the electrode [W/(m^2·K)].

  • \(S_{tr}\) is the transverse surface area in contact with the electrode [m^2].

  • \(T\) is the temperature of the plasma channel.

  • \(T_{electrode}\) is the temperature of the electrode, assumed to be constant.

  • The factor of 2 accounts for the two electrodes.

compute_dh_dt(t: float, h: float, i: float) → float#

Compute the time-derivative of the specific enthalpy based on the current state of the system.

Parameters:
  • t (float) – Time at which the circuit is solved.

  • h (float) – Specific enthalpy of the plasma channel at time t [J/kg].

  • i (float) – Current through the plasma channel at time t [A].

Returns:

The time-derivative of the specific enthalpy (dh/dt) in J/(kg.s).

Return type:

float

Notes

Thermal ODE:

\[\frac{dh}{dt} = \frac{P_{joule} - P_{thermal\_loss}}{m_0}\]

where:

  • \(h\) is the specific enthalpy (J/kg).

  • \(m_0\) is the initial mass of the plasma channel (kg).

  • \(P_{joule}\) is the Joule power (W).

  • \(P_{thermal\_loss}\) is the total thermal power loss (W), including:

    • radiation,

    • conductive-convective with gas,

    • conductive-convective with electrode.

rizer.models.hybrid.isomass_lte_discharge.load_isomass_lte_discharge_from_dict(input_dict: dict) → IsomassLTEDischarge#

Load a IsomassLTEDischarge model from an input dictionary.

Parameters:

input_dict (dict) – Input Dictionary containing the necessary parameters to create an instance of IsomassLTEDischarge.

Returns:

An instance of the IsomassLTEDischarge class initialized with the parameters from the input dictionary.

Return type:

IsomassLTEDischarge