# lucas-cks/daya-bay-nuclear-dispersion-model architecture

> Architecture diagram of the GitHub repository lucas-cks/daya-bay-nuclear-dispersion-model, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lucas-cks/daya-bay-nuclear-dispersion-model
- Repository: https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model

## Overview

This repository models atmospheric radioactive-plume transport from an interactive GUI to concentration and deposition views. It contains two principal runtime implementations: an OpenMP C solver exposed through a Python GUI, and a NumPy/Numba Python model with its own GUI. The README describes wind, terrain, thermal circulation, decay, and wet/dry deposition capabilities. The source tree differs from the README’s documented directory names; the graph uses paths present in the tree. Some subsystem details are documented but their internal calls are not shown in the sampled excerpts.

Main entry points: [`c_openmp_with_python_gui/daya_bay_gui.py`](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/daya_bay_gui.py) (C Solver GUI), [`python/daya_bay.py`](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/daya_bay.py) (Python Model GUI), [`develop_path/stage_py_2_gaussian_mountain/plume_interactive.py`](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/develop_path/stage_py_2_gaussian_mountain/plume_interactive.py) (Gaussian Model GUI), [`c_openmp_with_python_gui/daya_bay_HK_simulation.c`](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/daya_bay_HK_simulation.c) (C Plume Solver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_c_runtime["C/OpenMP runtime"]
  node_c_gui["C Solver GUI<br/>[daya_bay_gui.py]"]
  node_c_solver["C Plume Solver"]
  node_c_terrain[("C Terrain Grid<br/>[terrain.bin]")]
end

subgraph group_python_runtime["Python runtime"]
  node_py_gui["Python Model GUI<br/>[daya_bay.py]"]
  node_py_model["Python Plume Model<br/>[shelter.py]"]
  node_py_terrain[("Python Terrain Grid<br/>[terrain.bin]")]
end

subgraph group_gaussian_runtime["Gaussian prototype"]
  node_gaussian_gui["Gaussian Model GUI"]
  node_gaussian_model["Gaussian Plume Model<br/>[plume_model.py]"]
end

node_user(("User"))

node_user -->|"sets controls"| node_c_gui
node_c_gui -->|"calls solver"| node_c_solver
node_c_terrain -->|"provides terrain"| node_c_solver
node_user -->|"sets controls"| node_py_gui
node_py_gui -->|"uses model"| node_py_model
node_py_terrain -.->|"provides terrain"| node_py_model
node_user -->|"sets controls"| node_gaussian_gui
node_gaussian_gui -->|"steps model"| node_gaussian_model

click node_c_gui "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/daya_bay_gui.py"
click node_c_solver "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/daya_bay_HK_simulation.c"
click node_c_terrain "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/terrain.bin"
click node_py_gui "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/daya_bay.py"
click node_py_model "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/shelter.py"
click node_py_terrain "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/terrain.bin"
click node_gaussian_gui "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/develop_path/stage_py_2_gaussian_mountain/plume_interactive.py"
click node_gaussian_model "https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/develop_path/stage_py_2_gaussian_mountain/plume_model.py"

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_c_gui,node_c_solver,node_c_terrain,node_user toneBlue
class node_py_gui,node_py_model,node_py_terrain toneAmber
class node_gaussian_gui,node_gaussian_model toneMint
```

## Components

### C/OpenMP runtime

- [C Solver GUI](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/daya_bay_gui.py): `c_openmp_with_python_gui/daya_bay_gui.py`
- [C Plume Solver](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/daya_bay_HK_simulation.c): `c_openmp_with_python_gui/daya_bay_HK_simulation.c`
- [C Terrain Grid](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/c_openmp_with_python_gui/terrain.bin): `c_openmp_with_python_gui/terrain.bin`

### Python runtime

- [Python Model GUI](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/daya_bay.py): `python/daya_bay.py`
- [Python Plume Model](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/shelter.py): `python/shelter.py`
- [Python Terrain Grid](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/python/terrain.bin): `python/terrain.bin`

### Gaussian prototype

- [Gaussian Model GUI](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/develop_path/stage_py_2_gaussian_mountain/plume_interactive.py): `develop_path/stage_py_2_gaussian_mountain/plume_interactive.py`
- [Gaussian Plume Model](https://github.com/lucas-cks/daya-bay-nuclear-dispersion-model/blob/main/develop_path/stage_py_2_gaussian_mountain/plume_model.py): `develop_path/stage_py_2_gaussian_mountain/plume_model.py`

### Other components

- **User**

## Connections

- User → C Solver GUI: sets controls (evidence: `README.md`)
- C Solver GUI → C Plume Solver: calls solver (evidence: `README.md`)
- C Terrain Grid → C Plume Solver: provides terrain (evidence: `README.md`)
- User → Python Model GUI: sets controls (evidence: `README.md`)
- Python Model GUI → Python Plume Model: uses model (evidence: `python/daya_bay.py`)
- Python Terrain Grid → Python Plume Model: provides terrain
- User → Gaussian Model GUI: sets controls (evidence: `develop_path/stage_py_2_gaussian_mountain/plume_interactive.py`)
- Gaussian Model GUI → Gaussian Plume Model: steps model (evidence: `develop_path/stage_py_2_gaussian_mountain/plume_interactive.py`)
