scpn_fusion.nuclear – Nuclear

The nuclear engineering subpackage provides tritium breeding blanket neutronics, plasma-wall interaction models, erosion physics, and thermoelectric MHD effects.

Blanket Neutronics

class scpn_fusion.nuclear.blanket_neutronics.VolumetricBlanketReport(tbr, total_production_per_s, incident_neutrons_per_s, blanket_volume_m3, tbr_ideal=0.0)[source]

Bases: object

Reduced 3D blanket surrogate summary.

Parameters:
tbr: float
total_production_per_s: float
incident_neutrons_per_s: float
blanket_volume_m3: float
tbr_ideal: float = 0.0
class scpn_fusion.nuclear.blanket_neutronics.BreedingBlanket(thickness_cm=100, li6_enrichment=1.0, r_inner_cm=200.0)[source]

Bases: object

1D Cylindrical Neutronics Transport Code for TBR calculation. Simulates neutron attenuation in a blanket annulus (r_inner to r_outer).

Parameters:
solve_transport(incident_flux=100000000000000.0, rear_albedo=0.0)[source]

Solves steady-state cylindrical diffusion-reaction equation for neutron flux Phi(r). -D * (1/r * d/dr(r * dPhi/dr)) + Sigma_rem * Phi = 0

Return type:

ndarray[Any, dtype[float64]]

Parameters:
calculate_tbr(phi)[source]

Integrates Tritium production over the blanket volume (Cylindrical). TBR = (Rate of Tritium Production) / (Rate of Incoming Neutrons)

Return type:

tuple[float, ndarray[Any, dtype[float64]]]

Parameters:

phi (ndarray[Any, dtype[float64]])

calculate_volumetric_tbr(major_radius_m=6.2, minor_radius_m=2.0, elongation=1.7, radial_cells=24, poloidal_cells=72, toroidal_cells=48, incident_flux=100000000000000.0, port_coverage_factor=0.8, streaming_factor=0.85, blanket_fill_factor=1.0)[source]

Reduced 3D blanket-volume surrogate built on top of the 1D transport profile.

Assumptions: - 1D depth attenuation from solve_transport is reused as the radial blanket profile. - Blanket shell is toroidal with shaped poloidal section via elongation. - Incident-angle weighting captures first-order poloidal asymmetry.

Return type:

VolumetricBlanketReport

Parameters:
  • major_radius_m (float)

  • minor_radius_m (float)

  • elongation (float)

  • radial_cells (int)

  • poloidal_cells (int)

  • toroidal_cells (int)

  • incident_flux (float)

  • port_coverage_factor (float)

  • streaming_factor (float)

  • blanket_fill_factor (float)

scpn_fusion.nuclear.blanket_neutronics.run_breeding_sim(*, thickness_cm=80.0, li6_enrichment=0.9, incident_flux=100000000000000.0, rear_albedo=0.0, save_plot=True, output_path='Tritium_Breeding_Result.png', verbose=True)[source]

Run deterministic blanket breeding simulation and return summary metrics.

Return type:

dict[str, object]

Parameters:
class scpn_fusion.nuclear.blanket_neutronics.MultiGroupBlanket(thickness_cm=80.0, li6_enrichment=0.9, n_cells=100, r_inner_cm=200.0)[source]

Bases: object

3-group neutron transport for tritium breeding ratio calculation.

Energy groups:

Group 1 (fast): E > 1 MeV (source: 14.1 MeV D-T neutrons) Group 2 (epithermal): 1 eV < E < 1 MeV (down-scattered) Group 3 (thermal): E < 1 eV (thermalised, main Li-6 capture)

Includes:
  • Energy-dependent cross sections per group

  • Down-scatter from fast → epithermal → thermal

  • Beryllium (n,2n) multiplication in fast group

  • Li-6(n,t) capture in all groups (dominant in thermal)

This is a significant upgrade over the single-group BreedingBlanket above.

Parameters:
solve_transport(incident_flux=100000000000000.0, port_coverage_factor=0.8, streaming_factor=0.85)[source]

Solve 3-group steady-state cylindrical neutron diffusion.

Return type:

dict[str, object]

Parameters:
  • incident_flux (float)

  • port_coverage_factor (float)

  • streaming_factor (float)

Nuclear Wall Interaction

scpn_fusion.nuclear.nuclear_wall_interaction.default_iter_config_path()[source]

Resolve repository-local default ITER configuration path.

Return type:

str

class scpn_fusion.nuclear.nuclear_wall_interaction.NuclearEngineeringLab(config_path)[source]

Bases: FusionBurnPhysics

Simulates the nuclear interaction between Plasma and the Reactor Vessel. 1. Helium Ash accumulation. 2. Neutron Flux distribution on the First Wall. 3. Material Damage (DPA).

generate_first_wall()[source]

Defines the geometry of the reactor wall (Vacuum Vessel). Approximated as a D-shaped contour surrounding the plasma.

simulate_ash_poisoning(burn_time_sec=1000, tau_He_ratio=5.0, pumping_efficiency=1.0)[source]

Simulates the drop in fusion power due to Helium buildup. tau_He_ratio: Ratio of Helium particle confinement to Energy confinement (tau_He / tau_E). If ratio > 10, the reactor chokes.

Parameters:
  • burn_time_sec (int)

  • tau_He_ratio (float)

  • pumping_efficiency (float)

calculate_neutron_wall_loading()[source]

Ray-Tracing calculation of 14.1 MeV neutrons hitting the wall.

calculate_cad_wall_loading(vertices, faces, source_points_xyz=None, source_strength_w=None)[source]

Reduced CAD loading estimate on imported STEP/STL meshes.

Return type:

CADLoadReport

calculate_sputtering_yield(material_name, E_inc_eV=100.0, angle_deg=45.0)[source]

Roth-Bohdansky Sputtering Yield (Y). Y = Q * (1 - (E_th/E)^(2/3)) * (1 - E_th/E)^2

analyze_materials(wall_flux)[source]

Calculates lifespan using Sputtering + DPA.

scpn_fusion.nuclear.nuclear_wall_interaction.run_nuclear_sim(config_path=None, *, save_plot=True, output_path='Nuclear_Engineering_Report.png', verbose=True, lab_factory=<class 'scpn_fusion.nuclear.nuclear_wall_interaction.NuclearEngineeringLab'>)[source]
Return type:

dict[str, Any]

Parameters:

PWI Erosion

class scpn_fusion.nuclear.pwi_erosion.SputteringPhysics(material='Tungsten', redeposition_factor=0.95)[source]

Bases: object

Simulates plasma-wall interaction sputtering and macroscopic erosion.

Parameters:
  • material (str)

  • redeposition_factor (float)

calculate_yield(E_ion_eV, angle_deg=45.0)[source]

Calculate sputtering yield (ejected atoms / incident ion).

Return type:

float

Parameters:
calculate_erosion_rate(flux_particles_m2_s, T_ion_eV, angle_deg=45.0)[source]

Calculate erosion metrics and net impurity source.

Return type:

dict[str, float]

Parameters:
scpn_fusion.nuclear.pwi_erosion.run_pwi_demo(*, material='Tungsten', redeposition_factor=0.95, flux_particles_m2_s=1e+24, temp_min_eV=10.0, temp_max_eV=100.0, num_points=50, angle_deg=45.0, save_plot=True, output_path='PWI_Erosion_Result.png', verbose=True)[source]

Run deterministic PWI erosion scan and return summary.

Return type:

dict[str, Any]

Parameters:

TEMHD Peltier Stabiliser

class scpn_fusion.nuclear.temhd_peltier.TEMHD_Stabilizer(layer_thickness_mm=5.0, B_field=10.0)[source]

Bases: object

Implicit 1D heat solver for TEMHD-stabilized liquid-metal divertors.

Parameters:
solve_tridiagonal(a, b, c, d)[source]

Solve tridiagonal system Ax=d via Thomas algorithm.

Return type:

ndarray[Any, dtype[float64]]

Parameters:
step(heat_flux_MW_m2, dt=0.1)[source]
Return type:

tuple[float, float]

Parameters:
scpn_fusion.nuclear.temhd_peltier.run_temhd_experiment(*, layer_thickness_mm=5.0, B_field=10.0, flux_min_MW_m2=0.0, flux_max_MW_m2=100.0, flux_points=20, settle_steps_per_flux=20, dt_s=0.5, save_plot=True, output_path='TEMHD_Corrected.png', verbose=True)[source]

Run deterministic TEMHD flux-ramp experiment and return summary metrics.

Return type:

dict[str, Any]

Parameters: