Shallow Recurrent Decoder for Nuclear Reactors Applications (NuSHRED)

License Python Data YouTube

This repository collects the codes regarding the application of the Shallow REcurrent Decoder (SHRED) method to Nuclear Reactors systems 🏭⚛️


This repository serves as complementary code to the following papers:

Upcoming works: two preprints on arxiv have been submitted on the application of SHRED to Fusion MHD systems (code will be released soon).


📊 Simulation Data

The compressed simulation datasets are available on Zenodo:

DOI

🎥 If you want to know more about the SHRED method for nuclear reactors, check out this YouTube video!

You can use the script Code/download_datasets.py to download the datasets (if files argument is not specified, all datasets will be downloaded):

python Code/download_datasets.py --files D1 D2

🏗️ Foundations of SHRED

The SHRED method was first proposed and developed in this paper:

📌 The original code base is available here: github.com/Jan-Williams/pyshred.

This repository also builds upon a related implementation:

📌 Improvements for parametric datasets are available here (collaborative between Matteo Tomasetto and Stefano Riva): github.com/MatteoTomasetto/SHRED-ROM

Additionally, the pyforce package is used for sensor placements and EIM/GEIM comparison in P1. See: - Riva et al. (2024) - Cammi et al. (2024)


📂 Repository Structure

📁 shred/ → Modules for the implementation of the SHRED network from github.com/Jan-Williams/pyshred and github.com/MatteoTomasetto/SHRED-ROM

📁 Code/ → Subfolders corresponding to the applications of SHRED in nuclear reactor concepts, with datasets associated as follows:

MSFR-ULOFF D1 MSFR-ULOFF D2 DYNASTY D3 TRIGA D4 LRA D5
P1
P2
P3
P4
P5

▶️ How to Execute

1️⃣ Clone or download the repository.

2️⃣ Download the datasets and move them into the appropriate directory.

3️⃣ Install the required dependencies:

Base install: bash pip install -r requirements.txt

P1 additionally requires an older version of pyforce (not compatible with v1.0.0), available at github.com/ERMETE-Lab/ROSE-pyforce for some notebooks. For assistance running P1, please contact stefano.riva@polimi.it directly.

P5 additionally requires FEniCSx (dolfinx v0.10.0) and its dependencies (gmsh, mpi4py, petsc4py, ufl, basix, pyvista) if you want to generate the data yourself. Install via conda: bash conda install -c conda-forge fenics-dolfinx=0.10.0 gmsh mpi4py pyvista See the P5 README for further details.

Note: All the SHRED-related code require the base pip install -r requirements.txt only.

Two simple tutorials are available in the Tutorial/ folder for Kolmogorov 2D Flow for single and multiparametric datasets, which can be executed as Jupyter notebooks.


📬 Contact Information

For inquiries, please contact: 📧 stefano.riva@polimi.it, carolina.introini@polimi.it, antonio.cammi@polimi.it, kutz@uw.edu.

For issues or bugs, refer to the GitHub Issues section of this repository.


📊 Results

📌 Paper 1

Fast Flux ϕ1 Temperature T Velocity u

📌 Paper 2

Out-Core Sensing (Fast Flux)

Fast Flux ϕ1 Temperature T Velocity u Precursors Group 1 c1

Mobile Sensors (First Group of Precursors)

Fast Flux ϕ1 Temperature T Velocity u Precursors Group 1 c1

Mobile Probes (only position measaured)

Fast Flux ϕ1 Temperature T Velocity u Precursors Group 1 c1

📌 Paper 3

Case Visualization
Parametric Verification
Parametric Validation
Prediction Validation

📌 Paper 4

Temperature T Velocity u

📌 Paper 5