bloc.reactors.models.pbr100#

PBR 100 — arc-heated plasma source (supplier equipment model).

The PBR 100 is a specific plasma-torch product. Physically it reuses the instantaneous-heating physics of PlasmaTorchInstantaneousHeating (instantaneous enthalpy jump followed by adiabatic constant-pressure kinetics for t_res_s); what this module adds is the nameplate operating envelope from the datasheet, enforced at build time.

Datasheet#

The power range bounds the node electric_power_kW (generator electrical input) via PBR100PlasmaTorchSchema; the throughput ranges are checked in validate_pbr100_throughput() from the resolved inlet mass flow + composition inside _post_build_design_volumes().

Specific energy (SEI / SEO, MJ/kg) is not defined here — it is inherited from the base TorchInstantaneousHeating class (see bloc.reactors.torch_mixing), which every torch kind gets for free.

Attributes#

Exceptions#

PBR100EnvelopeError

Raised when a PBR 100 is configured outside its nameplate envelope.

Classes#

PBR100PlasmaTorch

PBR 100 — arc-heated plasma source (instantaneous-heating variant).

Functions#

validate_pbr100_throughput(mdot_kg_s, gas, *, node_id)

Raise if any present feed species is outside the PBR 100 throughput range.

Module Contents#

bloc.reactors.models.pbr100.PBR100_POWER_KW: Tuple[float, float] = (50.0, 100.0)#
bloc.reactors.models.pbr100.PBR100_CH4_KG_H: Tuple[float, float] = (5.0, 20.0)#
bloc.reactors.models.pbr100.PBR100_H2_SLM: Tuple[float, float] = (20.0, 100.0)#
bloc.reactors.models.pbr100.PBR100_N2_SLM: Tuple[float, float] = (100.0, 350.0)#
exception bloc.reactors.models.pbr100.PBR100EnvelopeError#

Bases: ValueError

Raised when a PBR 100 is configured outside its nameplate envelope.

Distinct type so BlocConverter can fail-fast on it (Boulder’s post_build otherwise downgrades hook exceptions to a warning).

class bloc.reactors.models.pbr100.PBR100PlasmaTorch(gas, *args, **kwargs)#

Bases: bloc.reactors.torch_mixing.PlasmaTorchInstantaneousHeating

PBR 100 — arc-heated plasma source (instantaneous-heating variant).

STONE kind: PBR100PlasmaTorch.

Same physics as PlasmaTorchInstantaneousHeating; adds the PBR 100 nameplate operating envelope (50–100 kW; CH4 5–20 kg/h; H2 20–100 slm; N2 100–350 slm), enforced at build time. SEI/SEO specific-energy metrics are inherited from the base torch class.

See also

validate_pbr100_throughput()

throughput envelope check.

TorchInstantaneousHeating

SEI_MJ_kg / SEO_MJ_kg.

NETWORK_CLASS#
property SEI_MJ_kg: float | None#

Specific Energy Input [MJ/kg] from _meta (electrical input / feed).

Available on every torch once _post_build_design_volumes() has populated electric_power_kW and mass_flow_rate on _meta.

property SEO_MJ_kg: float | None#

Specific Energy Output [MJ/kg] from _meta (thermal power to gas / feed).

solve_adiabatic(mdot, power_kW, t_res_s, verbose=True)#

Solve adiabatic kinetics using this reactor’s current inlet state.

Adds torch power as an enthalpy jump and integrates one adiabatic pass for t_res_s using a fresh type(self)(gas, clone=False) carrier.

bloc.reactors.models.pbr100.validate_pbr100_throughput(mdot_kg_s, gas, *, node_id)#

Raise if any present feed species is outside the PBR 100 throughput range.

Parameters:
  • mdot_kg_s – Total torch feed mass flow rate [kg/s].

  • gas – A Cantera phase (ct.Solution / reservoir.thermo) describing the inlet composition. Uses species_names, X, Y and molecular_weights.

  • node_id – STONE node id, for the error message.

Notes

  • CH4 (process gas) is checked whenever more than a trace is present (mole fraction > _TRACE_X).

  • H2 / N2 are carrier gases (H2, or alternatively N2). Only the carrier actually fed — the one of {H2, N2} present above _CARRIER_MIN_X — is checked; the trace N2 (~1 %) in a natural-gas feed is ignored (it is not the alt-carrier). If both are above the threshold, both are checked.

All violations are collected and raised together as one PBR100EnvelopeError.