rizer.models.nrp.engineering_model.diffusion#

Classes#

DiffusionInputs

DiffusionModel

Compute temperature and pressure during the diffusion phase.

Module Contents#

class rizer.models.nrp.engineering_model.diffusion.DiffusionInputs#
r_0: float#

Initial discharge radius [m].

ξ_expand: float#

Expansion ratio of the kernel after the spark pulse.

R_d_expansion: float#

Effective radius of the kernel during the diffusion phase [m].

T_TE_K: float#

Temperature after thermal equilibration between vibrational and trans-rotational modes [K].

T_amb: float#

Temperature of the surrounding gas outside the kernel [K].

gamma: float#

Specific heat ratio of the gas during the diffusion phase.

P_out: float#

Pressure of the surrounding gas outside the kernel [Pa].

alpha: Callable[[float], float]#

Thermal diffusivity of the gas during the diffusion phase [m^2/s].

Returns the thermal diffusivity as a function of temperature.

alpha_model: str = 'constant'#

Model to compute the thermal diffusivity of the gas during the diffusion phase.

Can be either:

  • constant: Use a constant thermal diffusivity. The value is specified by alpha_constant.

  • file: Use a thermal diffusivity that depends on temperature, read from a file. The file should be located in the ./data/transport/ directory of the package, and specified by alpha_file_gas_name, alpha_file_pressure_atm and alpha_file_source.

  • ThermoTransportDataReader: Use a thermal diffusivity that depends on temperature, provided directly as a ThermoTransportDataReader object in alpha_thermo_transport_data.

alpha_constant: dataclasses.InitVar[float | None] = None#

Thermal diffusivity of the gas during the diffusion phase [m^2/s]. Assumed constant if provided.

alpha_file_gas_name: dataclasses.InitVar[str | None] = None#

Gas name for a file containing thermo/transport data as a function of temperature. The file should be located in the ./data/transport/ directory of the package

alpha_file_pressure_atm: dataclasses.InitVar[int | None] = None#

Pressure at which the thermal diffusivity data is valid [atm].

alpha_file_source: dataclasses.InitVar[str | None] = None#

Source or reference for the thermal diffusivity data file.

alpha_thermo_transport_data: dataclasses.InitVar[rizer.io.lte.thermo_transport_data_reader.ThermoTransportDataReader | None] = None#

ThermoTransportDataReader object containing the thermal diffusivity data as a function of temperature. If provided, it will be used directly instead of reading from a file.

alpha_nb_zeros_to_use: int = 100#

Number of zeros of the Bessel function of the first kind of order 0 to use in the computation of the temperature during the diffusion phase.

diffusion_model: str = 'simple_model'#

Model to compute the temperature during the diffusion phase.

  • simple_model: Use a constant thermal diffusivity.

  • intermediate_model: Use a thermal diffusivity that depends on temperature.

  • refined_model: Use a thermal diffusivity that depends on temperature with a time-evolving radius.

class rizer.models.nrp.engineering_model.diffusion.DiffusionModel(inputs: DiffusionInputs)#

Compute temperature and pressure during the diffusion phase.

Main assumptions of the diffusion model are:

  • (a1) Plasma remained within an enclosed surface during the expansion.

  • (a2) Isentropic expansion.

  • (a3) Constant number of particles.

  • (a4) Ideal gas.

  • (a5) 1D cylindrical configuration.

  • (a6) Uniform pressure (equal to P_out), incompressible flow.

  • (a7) Calorically perfect gas and constant thermal diffusivity.

  • (a8) Gas initially at rest.

  • (a9) Splitting of the timescales associated with VT energy transfer and expansion. (loosely coupling only).

  • (a10) Rectangular initial profiles for T.

  • (a11) Dirichlet boundary condition, T(ξ_exp R_d, t) = T_out.

The refined model does not presuppose the assumptions (a7) and (a11).

Parameters:

inputs (DiffusionInputs) – Inputs for the diffusion model.

inputs#
diffusion_model#
zeros_bessel_j0#
last_T3#
r_refined#
T3_simple_model(t: float, T2: Callable[[float], float]) → float#
T3_intermediate_model(t: float, T2: Callable[[float], float]) → float#
T3_refined_model(t: float, T2: Callable[[float], float]) → float#
T3(t: float, T2: Callable[[float], float]) → float#
P3(t: float, P2: Callable[[float], float]) → float#
solve(t_eval: numpy.ndarray, T2: Callable[[float], float], P2: Callable[[float], float]) → rizer.models.nrp.engineering_model.base.TimeSeriesState#

Compute the temperature and pressure at the given time points.

Parameters:

t_eval (numpy.ndarray) – Time points at which to evaluate the temperature and pressure.

Returns:

Temperature and pressure at the given time points.

Return type:

TimeSeriesState