# lhosk/thorium-subcritical-reactor-study architecture

> Architecture diagram of the GitHub repository lhosk/thorium-subcritical-reactor-study, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lhosk/thorium-subcritical-reactor-study
- Repository: https://github.com/lhosk/thorium-subcritical-reactor-study

## Overview

This repository is a learning study of thorium-fueled, water-moderated reactor physics using standalone OpenMC/Python scripts. The documented progression moves from cross sections and a uranium pin cell to fuel assemblies, an externally driven subcritical assembly, depletion, and sensitivity analysis. The scripts are not wired together as a runtime pipeline; the user runs each study step separately. The graph preserves the distinct detector and two depletion studies. Edges reflect README statements or shown script behavior; unsampled cross-script links are omitted.

Main entry points: [`results/figures`](https://github.com/lhosk/thorium-subcritical-reactor-study/tree/main/results/figures) (Study figures), [`01_cross_sections/plot_xs.py`](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/01_cross_sections/plot_xs.py) (Cross sections), [`02_pin_cell/pin_cell.py`](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/02_pin_cell/pin_cell.py) (Uranium pin cell), [`03_assembly/assembly.py`](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/03_assembly/assembly.py) (Fuel assemblies)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_foundation["Physics foundations"]
  node_cross_sections["Cross sections<br/>[plot_xs.py]"]
  node_pin_cell["Uranium pin cell<br/>[pin_cell.py]"]
end

subgraph group_assembly["Assembly studies"]
  node_assembly_model["Fuel assemblies<br/>[assembly.py]"]
end

subgraph group_source["Source studies"]
  node_subcritical["Driven assembly<br/>[subcritical.py]"]
  node_detectors["Detector study<br/>[driver_time.py]"]
end

subgraph group_evolution["Fuel evolution"]
  node_pin_depletion["Fixed-power depletion<br/>[depletion.py]"]
  node_depletion_plot["Pin depletion plots<br/>[plot_depletion.py]"]
  node_driven_depletion["Driven depletion"]
end

subgraph group_analysis["Design analysis"]
  node_sensitivity["Pin sensitivity<br/>[sensitivity.py]"]
end

node_user(("Researcher"))
node_openmc["OpenMC"]
node_nuclear_data[("Nuclear data")]
node_figures["Study figures"]

node_user -->|"runs"| node_cross_sections
node_user -->|"runs"| node_pin_cell
node_user -->|"runs"| node_assembly_model
node_user -->|"runs"| node_subcritical
node_user -->|"runs"| node_detectors
node_user -->|"runs"| node_pin_depletion
node_user -->|"runs"| node_depletion_plot
node_user -->|"runs"| node_driven_depletion
node_user -->|"runs"| node_sensitivity
node_cross_sections -->|"loads data"| node_nuclear_data
node_cross_sections -->|"uses data API"| node_openmc
node_pin_cell -->|"simulates"| node_openmc
node_assembly_model -->|"simulates"| node_openmc
node_subcritical -->|"simulates"| node_openmc
node_detectors -->|"simulates"| node_openmc
node_pin_depletion -->|"depletes fuel"| node_openmc
node_depletion_plot -->|"reads results"| node_openmc
node_driven_depletion -->|"depletes fuel"| node_openmc
node_sensitivity -->|"runs sweeps"| node_openmc
node_cross_sections -->|"saves plots"| node_figures
node_pin_cell -->|"saves plots"| node_figures
node_assembly_model -->|"saves plots"| node_figures
node_subcritical -->|"saves plots"| node_figures
node_detectors -->|"saves plots"| node_figures
node_depletion_plot -->|"saves plots"| node_figures
node_driven_depletion -->|"saves plots"| node_figures
node_sensitivity -->|"saves plots"| node_figures

click node_cross_sections "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/01_cross_sections/plot_xs.py"
click node_pin_cell "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/02_pin_cell/pin_cell.py"
click node_assembly_model "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/03_assembly/assembly.py"
click node_subcritical "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/04_subcritical/subcritical.py"
click node_detectors "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/04_subcritical/driver_time.py"
click node_pin_depletion "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/05_depletion/depletion.py"
click node_depletion_plot "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/05_depletion/plot_depletion.py"
click node_driven_depletion "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/05_depletion/depletion_driver.py"
click node_sensitivity "https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/06_sensitivity/sensitivity.py"
click node_figures "https://github.com/lhosk/thorium-subcritical-reactor-study/tree/main/results/figures"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cross_sections,node_pin_cell toneBlue
class node_assembly_model,node_nuclear_data toneAmber
class node_subcritical,node_detectors toneMint
class node_pin_depletion,node_depletion_plot,node_driven_depletion toneRose
class node_sensitivity,node_user,node_openmc toneIndigo
class node_figures toneTeal
```

## Components

### Physics foundations

- [Cross sections](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/01_cross_sections/plot_xs.py): `01_cross_sections/plot_xs.py`
- [Uranium pin cell](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/02_pin_cell/pin_cell.py): `02_pin_cell/pin_cell.py`

### Assembly studies

- [Fuel assemblies](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/03_assembly/assembly.py): `03_assembly/assembly.py`

### Source studies

- [Driven assembly](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/04_subcritical/subcritical.py): `04_subcritical/subcritical.py`
- [Detector study](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/04_subcritical/driver_time.py): `04_subcritical/driver_time.py`

### Fuel evolution

- [Fixed-power depletion](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/05_depletion/depletion.py): `05_depletion/depletion.py`
- [Pin depletion plots](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/05_depletion/plot_depletion.py): `05_depletion/plot_depletion.py`
- [Driven depletion](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/05_depletion/depletion_driver.py): `05_depletion/depletion_driver.py`

### Design analysis

- [Pin sensitivity](https://github.com/lhosk/thorium-subcritical-reactor-study/blob/main/06_sensitivity/sensitivity.py): `06_sensitivity/sensitivity.py`

### Other components

- **Researcher**
- **OpenMC**
- **Nuclear data**
- [Study figures](https://github.com/lhosk/thorium-subcritical-reactor-study/tree/main/results/figures): `results/figures`

## Connections

- Researcher → Cross sections: runs (evidence: `README.md`)
- Researcher → Uranium pin cell: runs (evidence: `README.md`)
- Researcher → Fuel assemblies: runs (evidence: `README.md`)
- Researcher → Driven assembly: runs (evidence: `README.md`)
- Researcher → Detector study: runs (evidence: `README.md`)
- Researcher → Fixed-power depletion: runs (evidence: `README.md`)
- Researcher → Pin depletion plots: runs (evidence: `README.md`)
- Researcher → Driven depletion: runs (evidence: `README.md`)
- Researcher → Pin sensitivity: runs (evidence: `README.md`)
- Cross sections → Nuclear data: loads data (evidence: `01_cross_sections/plot_xs.py`)
- Cross sections → OpenMC: uses data API (evidence: `01_cross_sections/plot_xs.py`)
- Uranium pin cell → OpenMC: simulates (evidence: `02_pin_cell/pin_cell.py`)
- Fuel assemblies → OpenMC: simulates (evidence: `03_assembly/assembly.py`)
- Driven assembly → OpenMC: simulates (evidence: `04_subcritical/subcritical.py`)
- Detector study → OpenMC: simulates (evidence: `04_subcritical/driver_time.py`)
- Fixed-power depletion → OpenMC: depletes fuel (evidence: `05_depletion/depletion.py`)
- Pin depletion plots → OpenMC: reads results (evidence: `05_depletion/plot_depletion.py`)
- Driven depletion → OpenMC: depletes fuel (evidence: `05_depletion/depletion_driver.py`)
- Pin sensitivity → OpenMC: runs sweeps (evidence: `06_sensitivity/sensitivity.py`)
- Cross sections → Study figures: saves plots (evidence: `01_cross_sections/plot_xs.py`)
- Uranium pin cell → Study figures: saves plots (evidence: `02_pin_cell/pin_cell.py`)
- Fuel assemblies → Study figures: saves plots (evidence: `03_assembly/assembly.py`)
- Driven assembly → Study figures: saves plots (evidence: `04_subcritical/subcritical.py`)
- Detector study → Study figures: saves plots (evidence: `04_subcritical/driver_time.py`)
- Pin depletion plots → Study figures: saves plots (evidence: `05_depletion/plot_depletion.py`)
- Driven depletion → Study figures: saves plots (evidence: `05_depletion/depletion_driver.py`)
- Pin sensitivity → Study figures: saves plots (evidence: `06_sensitivity/sensitivity.py`)
